# LaTeXのレポート作成で消耗しない為に
:::info
この記事は[群馬大学電子計算機研究会 IGGG Advent Calendar 2017](https://adventar.org/calendars/2300) 8日目の記事です
:::
## Pandocのススメ
[Pandoc](https://pandoc.org/)を知っていますか?様々な形式のドキュメントをある程度相互に変換できるツールです.
Haskell製で書かれており,実は哲学の先生が作ったというところもツボポイントです.
Pandocを使うと, `Markdown -> LaTeX -> PDF`みたいにレポートを生成できてめっちゃ便利です.
### Pandocのインストール
macOSを利用していればHomebrewから,WindowsであればChocolateyなどのパッケージマネージャを使ってください.あと地味に最近バージョンが新しくなりましたね.
```
$ brew install pandoc pandoc-citeproc pandoc-crosslef
$ sudo apt update && sudo apt install pandoc pandoc-citeproc pandoc-crossref
> choco install pandoc pandoc-citeproc pandoc-crosslef
```
```
pandoc 1.19.2.4
Compiled with pandoc-types 1.17.0.5, texmath 0.9.4.2, skylighting 0.1.1.5
Default user data directory: /Users/atpons/.pandoc
Copyright (C) 2006-2016 John MacFarlane
Web: http://pandoc.org
This is free software; see the source for copying conditions.
There is no warranty, not even for merchantability or fitness
for a particular purpose.
```
2ではないです.あらかじめご了承ください.
### 使い方
```shell
$ pandoc -o text.pdf text.md
```
で変換できます.強い.
### pandoc-crossref
これを使うとLaTeXでいうところの相互参照が良い感じになります.
#### pandoc-citeproc
pandoc-citeprocを使うと,参考文献を利用することができます.
## 結論
```shell
$ pandoc --toc --bibliography=bibliography.bib -F pandoc-crossref test.md -o test.pdf --template=template.tex --latex-engine=lualatex --listings
```
これが最強.あとはmdファイルはこんな感じ.`ieee.csl`をどっかから持ってきて使うとIEEEの引用形式に従えます.
```yaml
---
documentclass: ltjsarticle
title: へぼいレポート
header-includes:
- \usepackage{url}
reference-section-title:
- 参考文献
csl:
- ieee.csl
---
```
## レポートどうやって書いてるの
[GitHub](https://github.com/atpons/pandoc-template-for-report)にレポート用のPandocテンプレートを公開しています.
実は生成スクリプトなんかも一緒に入ってますが,動くか知りません.あと自分の取ってる講義準拠なので,微妙だったらすみません.
[sample](https://github.com/atpons/pandoc-template-for-report/blob/master/samples/output.pdf)
```yaml
---
documentclass: ltjsarticle
title: つまらないレポート
author:
- id: 学籍番号
name: 山田太郎
lecture:
- teacher: 山田花子
- date: 2017年11月10日
- deadline: 2017年12月4日
header-includes:
- \usepackage{url}
reference-section-title:
- 参考文献
csl:
- ieee.csl
bibliography:
- bibliography.bib
---
```
これで参考文献からなにからやってくれます.タイトルとかいろいろセットすると神のごとく表紙も生成されます.
コマンドは以下.常にディレクトリに設定ファイルとかを環境変数にセットするか,生成スクリプトにリンク貼っておくとgood.BibTeXファイルはyamlメタデータにセットすることもできます.
お手軽なレポートでは参考文献は消耗の対象になりがち.
```shell
$ pandoc --toc -F pandoc-crossref ${input} -o ${output} --template=${SCRIPT_DIR}/template.tex --latex-engine=lualatex --listings -M "${SCRIPT_DIR}/config/crossref_config.yaml"
```
Pandoc 便利すぎる.以上です.