3.7 Cross References

3.7.1 Using bookdown

You can number and refer to an equation by adding \begin{equation} along with a label, provided with (\#eq:label).

  • The position of the label matters.

    • For single-lined equations: First write your equation, then append your label (\#eq:label). Otherwise, your equation won’t be rendered.
    • For multi-lined equations: append (\#eq:label) after \end{split}, \end{aligned}
  • Note that \begin{equation} must NOT be quoted in $$...$$ for the equation to be rendered.

    Otherwise, will cause “Bad math delimiter” error at the time of tex compilation for pdf output. Might be alright for html output though.

    Unexpected consequence: Without the $$...$$, RStudio won’t provide previews for equations.

    • For temporary preview in RStudio at the composing stage, you can enclose the whole math environment in $$...$$. But remember to delete them when you are done editing the equation.
    • See this post by Kenji Sato for a more efficient workaround.
  • You can then refer to the equation in text using \@ref(eq:CJ). Remember to put the label in parentheses ().

    General syntax for other environments: \@ref(type:label) where type is the environment being referenced, and label is the chunk label.

This is an equation redered using bookdown

\begin{equation} (\#eq:CJ)
y=\beta_0 + \beta_1x + e_t
\end{equation}

will render as

\[\begin{equation} y=\beta_0 + \beta_1x + e_t \tag{3.1} \end{equation}\]

You may refer to it using eqn \@ref(eq:CJ), e.g., see eqn (3.1).


Multilined equations.
  
\begin{equation} 
\begin{aligned}
y_i &= f(x_{1i}, x_{2i}, \ldots, x_{Ki}) + \varepsilon_i \\
&= x_{1i} \beta_1 + x_{2i} \beta_2 + \cdots + x_{Ki} \beta_K + \varepsilon_i
\end{aligned}(\#eq:scalar-form)
\end{equation}

will render as

\[\begin{equation} \begin{aligned} y_i &= f(x_{1i}, x_{2i}, \ldots, x_{Ki}) + \varepsilon_i \\ &= x_{1i} \beta_1 + x_{2i} \beta_2 + \cdots + x_{Ki} \beta_K + \varepsilon_i \end{aligned}\tag{3.2} \end{equation}\]

You may refer to it using eqn \@ref(eq:scalar-form), e.g., see eqn (3.2) .

Note that

  • For HTML output, bookdown can only number the equations with labels.

    Please make sure equations without labels are not numbered by either using the equation* environment or adding \nonumber or \notag to your equations.


Troubleshooting

Issue: Bad math environment delimiter on conversion to pdf when using equation or align.

Cause: The error happens because I enclosed \begin{equation} environment in $$. I did this as the dollar sings enable equation rendering and preview in file.

Fix: remove the double signs.

The following equation causes error. Need to remove the dollar signs.
$$
\begin{equation}
y=x+2
\end{equation}
$$

Headers

# Introduction {#intro}

This is Chapter \@ref(intro)

The above is the bookdown syntax for cross-referencing headers. \@ref(intro) creates a link to the header numbering with the ID intro.

Sometimes you want to create a text-based link.
You can use the markdown syntax [link text][#ID]. It will create a link to link text that points to the header with ID ID. Refer to Markdown: cross references for more examples.

Note that cross references between documents are supported by bookdown. Don’t need to specify the file name, just use the ID of the header in the other document. Bookdown will automatically link to the correct document.

More about Section IDs:

By default, Pandoc will generate an ID for all section headers, e.g., a section # Hello World will have an ID hello-world. However, we recommend you to manually assign an ID to a section header to make sure you do not forget to update the reference label after you change the section header. To assign an ID to a section header, simply add {#id} to the end of the section header. Further attributes of section headers can be set using standard Pandoc syntax.

Figures

See Figure \@ref(fig:cars-plot)

```{r cars-plot, fig.cap="A plot caption"}
plot(cars)  # a scatterplot
```

Tables

See Table \@ref(tab:mtcars)

```{r mtcars}
knitr::kable(mtcars[1:5, 1:5], caption = "A caption")
```

Theorems

See Theorem \@ref(thm:boring)

```{theorem, boring}
Here is my theorem.
```

Equations

See equation \@ref(eq:linear)

\begin{equation}
a + bx = c  (\#eq:linear)
\end{equation}

3.7.2 Using the LaTeX Way

The LaTeX way allows you to assign your own labels by \tag. One drawback is that this does not allow preview of equations.

  1. Add the following script at the beginning of your document body:

    <script type="text/x-mathjax-config">
    MathJax.Hub.Config({
      TeX: { equationNumbers: { autoNumber: "AMS" } }
    });
    </script>

    It configures MathJax to automatically number equations. Source.

  2. In the text, use label{eq:label}. If you want to provide a specific number to the equation, you can use \tag{XX.XX}.

    • Note that \begin{equation} is NOT inside $$ ...$$!
  3. Cite using $\ref{eq:label}$ (no parenthesis) or $\eqref{eq:label}$ (with parenthesis). The dollar sign $ here around \ref and \eqref is not essential. Commands work with or without $.

    Without using the bookdown package.
    
    \begin{equation} \label{eq:test} \tag{my custom label}
      Y_i = \beta_0 + \beta_1 x_i + \epsilon_i
    \end{equation}
    
    Cite Equation $\eqref{eq:test}$ like this.

    \[\begin{equation} \label{eq:test} \tag{my label} Y_i = \beta_0 + \beta_1 x_i + \epsilon_i \end{equation}\]

    Refer to the eq \(\eqref{eq:test}\)


Reference:

https://bookdown.org/yihui/bookdown/markdown-extensions-by-bookdown.html#equations