【问题标题】:Making pretty equations in RMarkdown with LaTeX使用 LaTeX 在 RMarkdown 中制作漂亮的方程式
【发布时间】:2020-01-20 00:45:31
【问题描述】:

我正在尝试在 RMarkdown 中创建格式良好的方程式,但我似乎无法将其用于 Knit 而不会出现错误。我拥有的 LaTeX 块如下所示:

---
title: "Untitled"
author: "KirkD-CO"
date: "September 18, 2019"
output: pdf_document
---

$$
f(x) = \beta_0 + \beta_1 x + \beta_2 x^2 + \beta_3 x^3 + \beta_4 (x-\xi)^3_+
\\
\begin{equation}
  (x-\xi)^3_+ =
    \begin{cases}
      (x-\xi)^3 \ , \  x>\xi
      \\
      0 \ \ \ \ \ \ \ \ \ \ \ \ \ , \ x\leq\xi
    \end{cases}       
\end{equation}
\\ 
\
\\
\begin{aligned}
  (x \leq \xi) \Rightarrow f(x) &= \beta_0 + \beta_1 x + \beta_2 x^2 + \beta_3 x^3
  \\
  (x > \xi) \Rightarrow f(x) &= \beta_0 + \beta_1 x + \beta_2 x^2 + \beta_3 x^3 + \beta_4(x^3 -3x^2\xi + 3x\xi^2 - \xi^3)
  \\
  &=(\beta_0 + \beta_4\xi^3) + (\beta_1 + 3\beta_4\xi^2)x + (\beta_2 - 3\beta_4)
\end{aligned}
$$

在 RStudio 中我看到了这个:

但是当我尝试编织它时,我得到了这个错误:

! LaTeX Error: Bad math environment delimiter.

我搜索了 Google 和 StackOverflow,发现许多类似的问题,答案建议使用 [ ] 而不是 \begin{equation},其他建议只使用一个 $ 而不是 $$,还有一些是指各种 LaTeX 包,其中一些我已经在安装炼狱中尝试并结束了。

关于让 Kniter 使用 RStudio 显示的输出编织 PDF 的直接方法有什么建议吗?

编辑:我在 Fedora 30 上使用 R 3.5.3 和 Kniter 1.22。

EDIT2:在工具 -> 全局选项 -> Sweave -> 将 LaTeX 排版为 PDF 使用:设置为 pdfLaTeX

【问题讨论】:

  • 我无法重现该问题。 LaTeX 代码在 R 3.6.1 上使用rmarkdown_1.15 编译良好。
  • 呃。你在哪个平台上工作?我将我的软件版本和操作系统添加到原始帖子中。我在 Fedora 30 上使用 R 3.5.3 和 Kniter 1.22。
  • 嗯,我可以产生错误,Windows 上的 R 3.5.2,knitr 版本 1.21。
  • 我已将问题隔离到cases 部分。如果我在\\ cases 中的\\ 换行符之后放置anything,我会收到错误消息。如果我删除第二行,它会编译。不知道为什么。我同意 Maurits - 也许尝试更新 knitr。 (甚至可能更新 pdfLatex。)
  • 好的,我可以使用更新的 sn-p 在 MacOS、R 3.6.1、knitr_1.25 上重现错误。 TBH LaTeX 代码看起来很奇怪。如果它与pdfatex 一起编译,我会感到惊讶。例如,begin{equation} 启动数学模式,但由于$$,您已经处于(显示)数学模式。接下来,您不应该在 LaTeX 数学模式中使用所有这些硬换行符,除非您使用一些多行数学环境(如 casesgatheraligned)。

标签: r latex rstudio r-markdown


【解决方案1】:

从 cmets 跟进,这是一个干净的版本:

---
title: "Untitled"
author: "KirkD-CO"
date: "September 18, 2019"
output: pdf_document
---

$$
f(x) = \beta_0 + \beta_1 x + \beta_2 x^2 + \beta_3 x^3 + \beta_4 (x-\xi)^3_+
$$

$$
(x-\xi)^3_+ =
\begin{cases}
 (x-\xi)^3\, ,& x>\xi \\
 0  ,& x\leq\xi
 \end{cases}       
$$

$$
\begin{aligned}
  (x \leq \xi) \Rightarrow f(x) &= \beta_0 + \beta_1 x + \beta_2 x^2 + \beta_3 x^3 \\
  (x > \xi) \Rightarrow f(x) &= \beta_0 + \beta_1 x + \beta_2 x^2 + \beta_3 x^3 + \beta_4(x^3 -3x^2\xi + 3x\xi^2 - \xi^3) \\
  &=(\beta_0 + \beta_4\xi^3) + (\beta_1 + 3\beta_4\xi^2)x + (\beta_2 - 3\beta_4)
\end{aligned}
$$

制作

一些具体的cmets:

  1. 将单独的 LaTeX 数学模式块放入单独的 $$ ... $$(或 \[ ... \] 环境中(除非您使用多行数学环境,请参见下文)。
  2. cases 环境中,使用& 在每种情况下水平对齐不同部分
  3. 不要使用\\,除非你正在使用一些多行数学环境(比如casesaligned);相反,如果您确实使用多行数学环境,则必须使用 \\ 分隔行。

【讨论】:

  • 完美!感谢您花时间重写我的 LaTeX 并提供超级有用的 cmets。我真的很感激!
  • 不客气@KirkD-CO;学习 LaTeX 可能是一个陡峭的学习曲线;然后MathJax(在rmarkdown 中呈现你的LaTeX 代码)可以完全不同。
  • 我还有很多东西要学!如果您有建议的资源,请全神贯注。 ?
  • @KirkD-CO 取决于您的重点是什么。 rmarkdown, LaTeX, ...?
  • 主要是“rmarkdown”,但我需要在这种情况下大量使用 LaTeX。 (我刚刚查看了您的个人资料,我们的背景和研究兴趣非常相似。小世界。)
猜你喜欢
  • 2022-11-25
  • 2016-07-21
  • 1970-01-01
  • 2021-03-06
  • 2013-12-13
  • 1970-01-01
  • 2021-01-29
  • 2021-11-30
  • 2019-07-19
相关资源
最近更新 更多