前にも同じような記事を書いたが、気づいたら最近の自分のセッティングと記事の内容が記事の更新では済まないくらい変わっていたので新しく記事を書くことにした。
前回の記事から変わった点を挙げる。
- LaTeXエンジンをluatexからxetexに変えた。早くなった。
- 相互参照のためにbookdownを使った。
- 前回のように何回もコンパイルしなくてもよくなった。
- pandocのテンプレートをちょっといじった。
- URLの表示でタイプライター体をデフォルトにした。
- 付録の前に参考文献を表示できるようにした。
変わっていない点
- setupチャンク。(なので省略。)
ということで、ノンプログラマーなので詳細な解説は(できないので)せずに粛々とコードだけを上げる。ここに書かれたコードの断片にもし有用なものがあれば使ってみてください。感謝。
yaml
```
title: |
| たいとる
author: |
| 所属
| 氏名
date: "`r gsub('0([0-9](月|日))', '\\1', format(Sys.Date(), '%Y年%m月%d日'))`"
output:
bookdown::pdf_document2:
dev: cairo_pdf
fig_caption: yes
keep_tex: true
latex_engine: xelatex
number_sections: true
toc: true
toc_depth: 3
citation_package: natbib
includes:
in_header: preamble.tex
documentclass: bxjsarticle
classoption: xelatex,ja=standard,a4paper,jafont=yu-win10,10.5ptj,textwidth=40zw,number-of-lines=40,titlepage
indent: true
link-citations: true
lof: true
lot: true
bibliography: myrefs.bib
biblio-style: jeconunicode
header-includes: |
\usepackage{dcolumn}
title-meta: "ここにタイトルを書くとPDFのメタ情報に記述される"
author-meta: "ここに名前を書くとメタ情報に記述される"
abstract: "概要をここに書く"
```
メタ情報のタイトルと著者を2回書くのが面倒なら
hyperrefoptions: pdfusetitle
と書いておけばtitle:
とauthor:
に記述した文がそのまま反映される。
preamble.tex
% 目次の体裁を変える
\usepackage{tocloft}
\renewcommand{\cftsecfont}{\bfseries}
\renewcommand{\cftsecpagefont}{}
\renewcommand{\cftsecleader}{\cftdotfill{\cftdotsep}}
\renewcommand{\cftdotsep}{10}
\renewcommand{\cftsecaftersnum}{}
\setlength{\cftbeforesecskip}{0em}
% 付録をつける場合、章番号の幅を調整しないと文字が重なってしまう
\setlength{\cftsecindent}{0em}
\setlength{\cftsecnumwidth}{4em}
\setlength{\cftsubsecindent}{0em}
\setlength{\cftsubsecnumwidth}{4em}
\setlength{\cftsubsubsecindent}{0em}
\setlength{\cftsubsubsecnumwidth}{4em}
\renewcommand{\cftsetpnumwidth}{1em}
\renewcommand{\cftsetrmarg}{1em}
\renewcommand{\cfttoctitlefont}{\Large\gtfamily}
\renewcommand{\cftloftitlefont}{\Large\gtfamily}
\renewcommand{\cftlottitlefont}{\Large\gtfamily}
% RMarkdownで横向きを使えるようにする
\usepackage{lscape}
\newcommand*{\blandscape}{\begin{landscape}}
\newcommand*{\elandscape}{\end{landscape}}
% 数式の設定
\usepackage{amssymb}
\usepackage{mathtools}
\mathtoolsset{showonlyrefs,showmanualtags}
% タイトルの設定。pagetitleを設定する場合は別に要らない。
\usepackage{titling}
\setlength{\droptitle}{-3cm}
\pretitle{\noindent\centering\LARGE\gtfamily\sffamily}
\posttitle{\par\vskip 1\zw}
\preauthor{\noindent\centering\large\rmfamily}
\postauthor{\par\vskip 1\zw}
\predate{\noindent\centering\large\rmfamily}
\postdate{\par}
pandoc
URL
URLをタイプライター体にしたい。pandocではなぜかデフォルトの設定がローマン体になっており、まぁ無難だし、いいんだけど、自分で選んでそうするのとそれしか選べないからそうするのでは意味が違う。自由自在に行き来したい。そういう場合はpandocのテンプレートをいじる。
次のコマンドを実行する。
mkdir %homepath%\AppData\Roaming\pandoc\templates\
pandoc -D latex > %homepath%\AppData\Roaming\pandoc\templates\default.latex
mkdir ~/.pandoc/templates
pandoc -D latex > ~/.pandoc/templates/default.latex
上のファイルを開くと、380行目くらいに次のような記述があるのでsame
をtt
に書き換える。pandocのマニュアルに書いてあるように、このディレクトリにテンプレートファイルがある場合は自動的にこれが反映されるらしい。したがって、もし初期化したければ単にこのファイルを消すか別のファイル名にすればいい。
...
\urlstyle{same} % disable monospaced font for URLs
...
...わざわざコメントまでしてあった。そんなに嫌か。
参考文献を好きな場所に
初期状態のdefault.latex
では参考文献は必ず文書の最後に表示されてしまう。これだと付録などを付けたいときにちょっと不便である。好きな場所で参考文献を配置したい場合は、一部をコメントアウトすればいい。512行目に
...
\bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$}
...
という記述があるので、これをコメントアウトする。そのうえで、自分が作成している.Rmd
ファイルの参考文献を出力したい場所で
\addcontentsline{toc}{section}{\bibname}
\bibliography{myrefs}
とする。これはもしかしたらもっと簡潔な書き方があるかもしれない。通常、R Markdownで参考文献を出力する場合は# 参考文献 {-}
のように書くが、これだと章の見出しが2つ出てきたりしてよくない。
おまけ
ちなみに、409行目くらいにhypersetup
の設定に関連して
...
pdfcreator={LaTeX via pandoc}
...
みたいなのがあるが、LaTeX via pandoc
の部分を別の文言に変えるとPDFを作成したときにプロパティで見られる「作成者」の部分が変わる。
References
- https://pandoc.org/MANUAL.html#templates
-
https://pandoc.org/MANUAL.html#general-options
- General options節を少しスクロールすると
--data-dir=DIRECTORY
という引数の説明のところにdefault user data directoryについての記述がある。
- General options節を少しスクロールすると