\ newcommand与Kritr中的参数不起作用

时间:2018-07-22 18:48:03

标签: latex r-markdown knitr pandoc

我对Knitr相当陌生,我试图编写我的第一个文档,从我的乳胶文件中“导入”一些“ \ newcommand”。

除带有“自变量”的参数外,我所有的“ \ newcommand”都得到了完美处理。

例如,我添加了我通常在乳胶中使用的软件包:

header-includes:
    -\usepackage{a4wide,amsmath,amsthm,epsfig,graphicx}
- \usepackage{amsmath,amsthm,amssymb}
- \usepackage{amsfonts}
- \usepackage{graphics}
- \usepackage{subfigure}
- \usepackage{dsfont}
- \usepackage{bbm}
- \usepackage{bm}
- \usepackage{xcolor}
- \usepackage{dcolumn}
- \usepackage{pstricks,fancyhdr,fancybox}
- \usepackage{dcolumn}
- \usepackage{bm}

但是以下操作无效

\newcommand{\PR}[1]{\bm{P}\left\{{#1}\right\}}

错误是

output file: newfile.knit.md

"../Documents/RStudio/bin/pandoc/pandoc" +RTS -K512m -RTS newfile.utf8.md --to latex --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash --output newfile.pdf --template "C:\Users\P14814\Documents\R\win-library\3.4\rmarkdown\rmd\latex\default-1.17.0.2.tex" --highlight-style tango --latex-engine pdflatex --variable graphics=yes --variable "geometry:margin=1in" 
! Missing $ inserted.
<inserted text> 
                $
l.180 \newcommand{\PR}{[}1{]}\{\bm{P}

pandoc.exe: Error producing PDF
Error: pandoc document conversion failed with error 43
In addition: Warning message:
running command '"../Documents/RStudio/bin/pandoc/pandoc" +RTS -K512m -RTS newfile.utf8.md --to latex --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash --output newfile.pdf --template "C:\Users\P14814\Documents\R\win-library\3.4\rmarkdown\rmd\latex\default-1.17.0.2.tex" --highlight-style tango --latex-engine pdflatex --variable graphics=yes --variable "geometry:margin=1in"' had status 43 
Execution halted

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

我强烈建议您将这些命令放在一个外部文件中,例如preamble.tex,并通过includes选项将其包括在内。

output:
  pdf_document:
    includes:
      in_header: preamble.tex

请参阅R Markdown书籍的第3.3.7.3节:https://bookdown.org/yihui/rmarkdown/pdf-document.html

使用header-includes并不完全安全。 Pandoc在生成LaTeX输出时可能会破坏某些字符。如果您的Pandoc版本高于2.0(请选中rmarkdown::pandoc_version()),则可以使用原始的LaTeX块来保护LaTeX内容,例如

header-includes: |
  ```{=latex}
  \usepackage{a4wide,amsmath,amsthm,epsfig,graphicx}
  \usepackage{amsmath,amsthm,amssymb}
  ......
  ```