LoginSignup
5
5

More than 5 years have passed since last update.

bookdownで何か書くときのメモ

Last updated at Posted at 2018-07-16

よく忘れるので。適宜更新(したい)。

用語

  • YAMLフロントマター
    • Rmdファイルの先頭にYAMLで書く設定。---で囲まれている。一部の設定は別ファイルに分けることができる。
  • _bookdown.yml
    • YAMLフロントマターに書くような設定をこの名前のファイルに書いておいても良い。---は不要。
  • _output.yml
    • YAMLフロントマターのoutput:フィールドに書く内容をここに書いておいてもよい。---は不要で、output:も不要(その下の階層のフィールドから書く。

基本

bookdownにしたい

YAMLフロントマターに以下の記述をしたindex.Rmdを用意する。

---
site: bookdown::bookdown_site
output:
  bookdown::gitbook: default
---

RStudio使用時は右上にBuildペインが出るので(出ない場合はRStudioを再起動してみる)Build Bookをクリックするか、Cmd+Shift+Bでビルドされる。

設定関係

対象とするRmdファイルの種類と順序を指定したい

デフォルトではワーキングディレクトリ内のファイルがファイル名順に使用される。サブディレクトリまで含める場合は_bookdwon.ymlsubdir: yesを記述。また、ファイル名がアンダースコア_から開始するファイルは含まれない。

任意の順序、ファイルとしたい場合は_bookdown.ymlに記述。

_bookdown.yml
rmd_files: ["index.Rmd", "01_intro.Rmd"]

次の形式でも良い。

_bookdown.yml
rmd_files:
  - index.Rmd
  - 01_intro.Rmd

ページ(htmlファイル)の区切り方を変更したい

例えばセクションで区切りたければYAMLフロントマターに以下のように記述する。

output:
  bookdown::gitbook:
    split_by: section

split_byには以下の指定ができる。

  • rmd: Rmdファイル単位で区切る。
  • none: 区切らない(1つのhtmlファイルが生成される)
  • chapter: 1番目のレベルのヘッダ(#)単位で区切られる。
  • section: 2番目のレベルのヘッダ(##)単位で区切られる。
  • chapter+number及びsection+number: chaptersectionとほぼ同じだが、生成されるファイル名に自動的に番号が付与される。

日本語PDFで出力したい

エラーへの対処

Automatically generated filenames contain duplicated ones...

生成されたhtmlファイルのファイル名が重複している。

デフォルトでは、ファイルは第一レベルの見出し(#が1つのもの)から自動的に生成されるが、ここに日本語などのマルチバイト文字が含まれると無視される。そのため、見出しに日本語を使っているともれなくファイル名が重複してしまう。

これを防ぐにはいくつか方法がある。

まず、前述のsplit_byの変更。ファイル名の重複を防ぐ指定として例えば以下のような物がある。

  • split_by: rmd htmlファイルは.Rmdファイル単位で生成される。ファイル名は.Rmdの名前を引き継ぐ。
  • split_by: chapter+number 自動生成されたファイル名に連番が付与されるので、見出し名が重複してもファイル名の重複を避けられる。section+numberも同様。

指定は例えばYAMLフロントマターで以下のように行う。

output:
  bookdown::gitbook:
    split_by: rmd

他の方法として、見出しの識別子を手動で設定するというものもある。見出しに識別子が指定されていると、ファイル名の生成時には識別子が優先して使用される。例えば

# いんとろ {#introduction}

と指定されていれば、introduction.htmlが生成される。

The file _main.Rmd exists. ...

_main.Rmdを消す。

このファイルは、デフォルトのビルド方法(Rmdをマージしてからknitする)のときに何らかのエラーでビルドが完了しなかった場合に残ってしまう。このとき、エラーメッセージは_main.Rmdに対して出力されるので、エラーが何なのかを確認するためには_main.Rmdの中身を確認する必要がある。

_bookdown.yml で不完全な最終行が見つかりました。

最終行は改行のみを含む行でなければならない。

Rmd関係一般

文字に色を付けたい

<font>タグで。

<font color="red">赤色</font>

bibtexを使いたい

例えばhoge.bibなどの名前でbibファイルを用意する。その後、YAMLフロントマターで

bibliography: [hoge.bib]
biblio-style: "apalike"
link-citations: yes

とする。

文献のキーをkeyとすると、@keyでhoge(2018)形式、[@hoge]で(hoge, 2018)形式で表示される。

TeX関係一般

(もはやRmd関係ない…)

=の位置を揃えたい

alignを使う。

\begin{align}
y &= (x + 1)^2 \\
  &= x^2 + 2x + 1
\end{align}
5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5