【问题标题】:How do I stop bookdown reordering punctuation?如何停止 bookdown 重新排序标点符号?
【发布时间】:2021-03-09 14:40:22
【问题描述】:

我已经分叉了 bookdown-minimal here 以生成我的问题的最小可重现示例。

我希望以下句子按原样呈现。也就是说,我希望句号(句点)保持在 引号之外。

这是“一本书”的在线版本。

我在这里做了一个最小的预订示例

bibliography: [book.bib] 行导致句子使用“Build book”作为呈现

这是“一本书”的在线版本。

我知道这是美式英语的惯例,但其他语言(和其他英语变体)不这样做,我不想在我拥有的真实句子中这样做(似乎问题发生了与其他标点符号,例如!?,连美式英语都放在正确的位置)。

是什么驱动了这种行为? (请注意,我实际上并没有在我的最小示例中包含引用。)有什么简单的方法可以阻止它吗?

【问题讨论】:

    标签: r r-markdown pandoc bookdown


    【解决方案1】:

    系统尊重lang 元数据变量。因此,如果您正在编写英式英语,请将其添加到您的 YAML 元数据中:

    lang: en-GB
    

    结果应该是

    这是“一本书”的在线版本。

    lang: en-US
    

    给予

    这是“一本书”的在线版本。


    如果一切都失败了,您可以求助于添加Lua filter,它会添加一个不可见的字符,例如zero-width joiner。这也将防止发生重新排序。

    function Quoted (quote)
      return {quote, pandoc.Str '\u{200d}'}
    end
    

    请注意,您可以通过在 Markdown 输入中使用 ‍ 实体来逐个利用此技巧:

    This is the on-line version of "A Book"‍.
    

    【讨论】:

    • lang: en-GB 可以解决问题。你知道 knitr-pandoc 机器中使用这个参数的原因是什么吗?即使对于美式英语,lang: en-US 所做的事情也不完全正确。 ‍ 会有点麻烦(Markdown 会开始像 LaTeX)。
    • 重新排序由 citeproc 处理器完成,即 pandoc 或旧版本 pandoc-citeproc。引文样式语言需要该功能并允许在样式文件中使用configure it,但它目前影响所有标点符号的事实是considered a bug
    • 谢谢。有趣的是,它需要bibliography: [book.bib] 条目来触发此行为。
    • 请注意,en-GB 似乎保持原样。所以This is the on-line version of "A Book." 就是这样出来的。所以en-GB为用户提供了完全的控制权(在这方面)。
    【解决方案2】:

    这应该可以解决问题:

    This is the on-line version of "\text{A Book}"\text{.}
    

    【讨论】:

    • 这是针对 LaTeX/PDF 的一个很好的解决方法,但在由此生成的 HTML 和 Docx 中将缺少 \text 命令。
    • 谢谢,但这对我的用例来说太麻烦了。上面的解决方案成功了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多