diff --git a/rmarkdown.Rmd b/rmarkdown.Rmd
index 345b8297..e82e8e5e 100644
--- a/rmarkdown.Rmd
+++ b/rmarkdown.Rmd
@@ -245,7 +245,7 @@ Check that you can run it, then add text after the frequency polygon that descri
-The following R markdown document answers this question as well as exercises [Exercise 27.4.1](exercise-27.4.1), [Exercise 27.4.2](exercise-27.4.2), and [Exercise 27.4.3](exercise-27.4.3).
+The following R markdown document answers this question as well as exercises [Exercise 27.4.1](#exercise-27.4.1), [Exercise 27.4.2](#exercise-27.4.2), and [Exercise 27.4.3](#exercise-27.4.3).
```{r diamond-sizes,echo=FALSE,comment='',purl=FALSE}
cat(readr::read_file(here::here("rmarkdown", "diamond-sizes.Rmd")))
@@ -264,7 +264,7 @@ Assume you’re writing a report for someone who doesn’t know R, and instead o
-See the answer to [Exercise 27.3.3](exercise-27.3.3).
+See the answer to [Exercise 27.3.3](#exercise-27.3.3).
@@ -277,7 +277,7 @@ Add a section that describes the largest 20 diamonds, including a table that dis
-See the answer to [Exercise 27.3.3](exercise-27.3.3).
+See the answer to [Exercise 27.3.3](#exercise-27.3.3).
I use `arrange()` and `slice()` to select the largest twenty diamonds, and
`knitr::kable()` to produce a formatted table.
@@ -292,7 +292,7 @@ Also include the percentage of diamonds that are larger than 2.5 carats.
-See the answer to [Exercise 27.3.3](exercise-27.3.3).
+See the answer to [Exercise 27.3.3](#exercise-27.3.3).
I moved the computation of the number larger and percent of diamonds larger than 2.5 carats into a code chunk.
I find that it is best to keep inline R expressions simple, usually consisting of an object and a formatting function.
diff --git a/visualize.Rmd b/visualize.Rmd
index 37848a22..c0f8c3f1 100644
--- a/visualize.Rmd
+++ b/visualize.Rmd
@@ -347,7 +347,7 @@ Aesthetics can also be mapped to expressions like `displ < 5`.
The `ggplot()` function behaves as if a temporary variable was added to the data with with values equal to the result of the expression.
In this case, the result of `displ < 5` is a logical variable which takes values of `TRUE` or `FALSE`.
-This also explains why, in [Exercise 3.3.1](exercise-3.3.1), the expression `colour = "blue"` created a categorical variable with only one category: "blue".
+This also explains why, in [Exercise 3.3.1](#exercise-3.3.1), the expression `colour = "blue"` created a categorical variable with only one category: "blue".
diff --git a/workflow-projects.Rmd b/workflow-projects.Rmd
index a8bde381..38517bd5 100644
--- a/workflow-projects.Rmd
+++ b/workflow-projects.Rmd
@@ -1,5 +1,3 @@
# Workflow: projects {#workflow-projects .r4ds-section}
`r no_exercises()`
-
-