【问题标题】:Bookdown: Fix extra space before Chinese string inside R code chunkBookdown:修复 R 代码块中中文字符串前的多余空格
【发布时间】:2018-06-07 23:29:43
【问题描述】:

当R代码块内有中文字符串时,编译后的PDF会在字符串前面有一个冗余空间,如何避免这个多余的空间?请参考github - bookdown-chinese 中的最小大小写。

【问题讨论】:

  • 加油!那些投票结束问题而不看标签的人让我很沮丧。 OP给出了一个完美的最小可重现示例,你们中有人看过吗?你们中有多少人实际使用bookdown?你们有多少人写中文?如果您不是这些领域的专家,请在暂停提问之前给初学者一个自我辩护的机会!
  • @YihuiXie 投票重新开放,但似乎几乎没有关闭的帖子可以翻转。
  • @YihuiXie 感谢您的支持。还有你的预订。
  • @georgexsh 谢谢你改进了我的问题描述。
  • 这是您问题的解决方案:github.com/yihui/bookdown-chinese/commit/c70ef766b117f3 我无法将其作为答案发布,因为他们已搁置此问题,但解决方案很简单。

标签: r latex rstudio knitr bookdown


【解决方案1】:

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

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

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

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

output:
  pdf_document:
    includes:
      in_header: preamble.tex

请参阅this Github issue 了解完整的技术背景。

【讨论】:

    猜你喜欢
    • 2018-12-04
    • 1970-01-01
    • 2011-08-05
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    相关资源
    最近更新 更多