【问题标题】:How to change caption label names in a single document with Bookdown?如何使用 Bookdown 更改单个文档中的标题标签名称?
【发布时间】:2018-06-23 04:28:42
【问题描述】:

我使用 R-Markdown 的 Bookdown 包创建了一个 single document,它允许 html 和 pdf 输出。我想将标题标签 FigureTableTable of Contents 更改为另一种语言。这是一个最小的例子:

---
title: Dokument auf Deutsch
output:
  bookdown::html_document2:
    toc: yes
  bookdown::pdf_document2:
    toc: yes
---

# Erstes Kapitel

Abbildung \@ref(fig:pressure) ist Deutsch.

```{r pressure, echo=FALSE, out.width = "80%", fig.pos='h', fig.cap="Deutsche Bildunterschrift"}
plot(pressure)
```

Bookdown 使用英文单词“Figure”作为图形标题前缀。编织到 pdf_document2 时,Bookdown 使用英文单词“Contents”作为目录。如何将这些更改为“Abbildung”和“Inhalt”?

我已阅读 Bookdown 手册中的 section 4.5 Internationalization。作者建议编辑一个配置文件_bookdown.yml,可以在其中更改标签名称。但是,我找不到这样的配置文件,我的单个 Bookdown-document 似乎是自包含的。此外,第 4.5 节中的示例没有说明如何更改 toc 的术语。

我发现this answer\renewcommand。这适用于使用output:pdf_document2 时的图形和表格,但不适用于output:html_document2。作为一个附带问题,\renewcommand{\contentsname}{Inhalt} 不会在 pdf 输出中将 'Contents' 更改为 'Inhalt'。所以\renewcommand 不是一个理想的解决方法。

我实际上想使用 Bookdown 手册上述第 4.5 节中描述的原始解决方案。当我编写单个 Bookdown-document 时,我在哪里可以找到这个配置文件_bookdown.yml?我可以在该文件的哪个位置更改 toc 的术语?如果我必须首先创建这个配置文件,我应该怎么做以及如何将它链接到我的单个 Rmd 文档?

【问题讨论】:

  • 嗨,弗兰克,如果您尝试创建单个文件的 bookdown 文档,提供一个最小工作示例可能会有所帮助,如下所述:stackoverflow.com/questions/5963269/…。如果您将_bookdown.yml 文件保存在与.Rmd 文件相同的目录中,则 bookdown 应该在编译时自动链接到它。
  • 它可以通过一些澄清来确切地说明您使用单个 bookdown 文件想要实现的目标,因为这对我来说是新的,我还没有在网上看到任何其他示例:大多数bookdown 项目有多个来自包作者的示例文件:github.com/rstudio/bookdown-demo
  • @Mikey,我现在添加了一个最小的工作示例。我在包作者的演示示例中看到了多个文件和配置文件。但是,使用 Bookdown 创建单个文档时没有多个文件,因此没有配置文件。

标签: r r-markdown bookdown


【解决方案1】:

如果我将您的示例代码保存为deutsch.rmd 然后渲染它,我可以重现您所描述的内容。


如果然后我创建一个名为 _bookdown.yml 的文件 在与 deutsch.rmd 相同的目录中包含

language:
  label:
    fig: "Abbildung "

然后重新渲染,HTML 输出中的“Figure”一词被替换为“Abbildung”。


如果然后我创建一个名为 preamble.tex 的文件,其中包含

\usepackage[german]{babel}

并调整deutsch.rmd的YAML标头为读取

title: Dokument auf Deutsch
output:
  bookdown::html_document2:
    toc: yes
  bookdown::pdf_document2:
    toc: yes
    includes:
      in_header: preamble.tex

PDF 输出也切换为德语。


编辑:我只是found out myself,这个解决方案似乎等同于使用以下YAML头:

title: Dokument auf Deutsch
output:
  bookdown::html_document2:
    toc: yes
  bookdown::pdf_document2:
    toc: yes
lang: de

请注意,上述 PDF 输出解决方案使用“Inhaltsverzeichnis”而不是“Inhalt”。

如果您真的想根据自己的喜好简单地更改图形标签和目录标题而不依赖babel 做正确的事情,您可以改用以下preamble.tex

\renewcommand{\figurename}{Abbildung}
\renewcommand{\contentsname}{Inhalt}

【讨论】:

  • 谢谢,成功了。我不知道必须首先使用 RStudio 中的 New File-> Text File 将配置文件 _bookdown.yml 创建为纯文本文件。 lang: de做了 PDF 输出的诀窍。
  • 有没有类似的方法来改变文字输出的其余图形格式?所以不是给“图1”就给“图1.”,还要加粗。在 _bookdown.yml 文档中为 Figure 添加星号会使 Figure 变为粗体,但数字仍然不是粗体并且缺少句号。
  • @AMM:我建议您打开一个新问题,因为解决方案与此处不同,因为这是指 PDF + HTML,但您要求使用 Word。就个人而言,除非合作者强迫,否则我不会使用 Word,如果他们强迫我使用软件,我会尝试让他们处理诸如图形格式之类的细节。 ;)
  • @mschilli 这正是问题所在:我所有的合作者都使用 word(以及我所在领域的大多数人)。我在这里发布了一个问题:stackoverflow.com/questions/51945079/… 但还没有收到任何人的回复,您的解决方案是我通过 bookdown 得到的最接近的解决方案(因此 +1)!因此,您的解决方案在一定程度上确实适用于文字(请参阅链接)。无论如何,我在 10 分钟前找到了一种使用字幕包的方法,所以最终会在某个时候回答我的问题。感谢您的回复!
  • @AMM:好消息,我很想知道你想出了什么。也许我可以开始对我的 MS 合作者更好,谢谢。 ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
  • 2011-03-27
  • 1970-01-01
  • 2020-05-05
  • 1970-01-01
  • 1970-01-01
  • 2017-01-12
相关资源
最近更新 更多