我有一个R markdown文件,里面有一些自定义的latex命令,通过\newcommand
定义。我真的很喜欢RStudio中的预览,但是它似乎不能呈现这些命令或者那些从包中导入的命令。在下面的例子中,自定义命令\expect
和包命令\bm
都没有在预览中显示,而是在预览中以红色字母显示。
有没有办法在预览中渲染它们?
---
header-includes:
- \usepackage{bm}
output:
pdf_document
---
\newcommand{\expect}[1]{\mathbb{E}\left[ #1 \right]}
$$
\expect{\bm{X}} = \lambda
$$
1条答案
按热度按时间rkue9o1l1#
RStudio IDE中的预览将使用Mathjax呈现方程。
在数学模式下定义命令
Mathjax支持
\newcommand
,但您需要在数学环境中定义它,以便在预览中对其进行处理,如下所示:有条件地使用数学模式
但是对于pdf,LaTeX无法识别数学模式下的
\newcommand
,这将导致“Undefined control sequence”错误。为了解决这个问题,我们需要在处理html输出(并希望查看预览)时,欺骗rmarkdown使用数学模式,但如果文档转换为.tex文档,则退出数学模式。现在,html输出包含由Mathjax解释的节点元素,而.tex输出如下所示:
使用
bm
在本例中,您尝试使用Mathjax不支持的
bm
。作为一种解决方案,他们建议使用
boldsymbol
。为了确保boldsymbol
* 仅 * 用于html,我们可以做以下操作:现在,在使用Mathjax时将重新定义
\bm
命令,但是在生成pdf时将使用%
-符号注解掉\newcommand{\bm}
。