如何使用Bookdown更改单个文档中的标题标签名称?

时间:2018-01-14 08:18:29

标签: r r-markdown bookdown

我用R-Markdown的Bookdown-package创建了一个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'作为toc。如何将这些改为'Abbildung'和'Inhalt'?

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

我找到了this answer \renewcommand。这适用于使用output:pdf_document2时的数字和表格,但不适用于output:html_document2。作为一个副作用,\renewcommand{\contentsname}{Inhalt}不会在pdf输出中将“内容”更改为“Inhalt”。因此\renewcommand不是理想的解决方法。

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

1 个答案:

答案 0 :(得分:10)

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

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

language:
  label:
    fig: "Abbildung "

并重新渲染,单词"图"取而代之的是" Abbildung"在HTML输出中。

如果那时我创建了一个名为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}