通常,当您想在 LaTeX 中使用左引号时,请输入以下内容:
``
但是在 RMarkdown 中,当您在同一行输入两对反引号时,将触发运行一段 R 代码,从而导致 LaTeX 无法正确呈现。
例如,
``Sticks and stones may break my bones,'' he said. ``But words will never hurt me.''
在输出文档中将无法正确显示;具体来说,反引号括起来的内容将由 R 打印出来,而其后的所有内容将由 LaTeX 正确显示。这是一张图片:
然后我尝试使用反斜杠来转义 R 代码,这让我更接近了,但是现在正确的引号被识别为一对紧挨着的单引号:
\`\`Sticks and stones may break my bones,'' he said. \`\`But words will never hurt me.''
如何使用 RMarkdown 在同一行上正确获取两个左引号,而不会出现这些渲染问题?
答案1
首先,你需要意识到这个事实:
Markdown 不是 LaTeX。
因此,一般来说,您不应期望 LaTeX 语法在 Markdown 文档中有效。在 Markdown 中写引号的正确方法是直接按字面意思写引号,即使用" "
。当 Markdown 转换为 LaTeX(通过 Pandoc)时,它们将被转换为正确的 LaTeX 代码(即`` ''
)。单引号也是如此。
反引号在 Markdown 中具有特殊含义:它们用于逐字书写文本。您可以使用任意数量的反引号(一个、两个、三个……),只要反引号成对出现即可。在您的例子中,您有一对双反引号,它们将文本标记Sticks and stones may break my bones,'' he said.
为逐字。
我强烈推荐你读Pandoc 的 Markdown 语法 至少一次在使用 R Markdown 之前,请先了解一下。这将为您节省大量时间,并且您可能不会对 Markdown 基础知识产生疑问。
答案2
R 端修复:
这有点棘手,因为您可以执行转义正则表达式来R
重新定义解释为 R 代码的内容。但是,有一个“简单”的解决方法:
重新定义如何knitr
解析文件:
有点取决于文件的编织方式。这里的想法是在编织之前定义图案。
如果你在 RStudio 中,那么你可以将当前代码块重新定义为默认的 Rnw 语法。从knitr 文档.因此在 R 中:
library(knitr)
old_patterns = knit_patterns$get() # old pattern list (to restore later)
all_patterns = all_patterns # a list of all built-in patterns
str(all_oatterns) # See all the patterns
knit_patterns$set(all_patterns[["rnw"]]) # set pattern list from
all_patterns$rnw
knit("path/to/myR.Rmd")
然而,还有一些TeX
替代方案:
quickTeX 修复
创建一个新字符,例如"
,来表示反引号,并像这样使用它:
\documentclass{article}
\usepackage[utf8]{inputenc}
\begin{document}
% Define " to be an active character
\catcode`"\active
% Define " to be the backtick ` like so
\let"`
% Now use " as if it was a back
""Sticks and stones may break my bones,'' he said. ""But words will never hurt me.''
\end{document}
另一个(可能)快速(可能)的解决方法:
使用包dirtytalk
:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{dirtytalk}
\begin{document}
\say{Sticks and stones may break my bones,} he said. \say{But words will never hurt me.}
\end{document}
还有另一个(可能的)解决方法:
你可以创建自己的不被 knitr 解析的外部 tex 文件:
%% quoteCommands.tex
\newcommand{\startQuote}{``}
\newcommand{\endQuote}{''}
进而
\documentclass{article}
\usepackage[utf8]{inputenc}
\input{quoteCommands}
\begin{document}
\startQuote Sticks and stones may break my bones,\endQuote he said. \startQuote But words will never hurt me.\endQuote
\end{document}