代码之家  ›  专栏  ›  技术社区  ›  Andrew.T

Bookdown:在R代码块中的中文字符串之前修复额外的空格

  •  15
  • Andrew.T  · 技术社区  · 7 年前

    当R代码块中的中文字符串出现时,编译后的PDF会在字符串之前得到一个冗余空间,如何避免这个多余的空间?请参考中的最小案例 github - bookdown-chinese .

    example

    1 回复  |  直到 7 年前
        1
  •  14
  •   Yihui Xie    7 年前

    此问题是由LaTeX包引起的 xeCJK公司 . 默认情况下,它会在中文字符和非中文字符之间添加空格,中除外 verbatim 环境。在您的情况下,代码实际上不在 逐字的 环境,所以你必须让 xeCJK公司 知道它不应该自动添加空格。

    解决方案是将这一行添加到您的LaTeX序言中(The Highlighting 环境是由Pandoc在将Markdown转换为LaTeX到语法高亮代码时定义的,它基于 fancyvrb 包装):

    \RecustomVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\},formatcom=\xeCJKVerbAddon}
    

    对于R降价文档,此行可以保存在中。tex文件,例如。, preamble.tex ,并通过 includes 选项,例如。,

    output:
      pdf_document:
        includes:
          in_header: preamble.tex
    

    看见 this Github issue 完整的技术背景。