PandocでLaTeX経由でPDFを出力する際にコードブロックのフォントサイズをいじる
TL;DR
- 適当な名前、例えば
mytemplate.tex
というファイルに以下の内容を書く
mytemplate.tex
というファイルに以下の内容を書くコードブロックに背景色をつけない場合
\newenvironment{Shaded}{\Huge}{}
コードブロックに背景色をつける場合
\renewenvironment{Shaded}{\begin{snugshade}\Huge}{\end{snugshade}}
- 先程指定したファイルを
-H
オプションで指定する。例えば
pandoc test.md -o test.pdf --latex-engine=lualatex -V documentclass=ltjarticle -H mytemplate.tex
などとする。\Huge
を\small
とかにすればフォントサイズを好きにできる。
解説
もうTL;DRだけで話は尽きているんだけれども、一応何が起きているか解説します。
こんなマークダウンファイルを作ります。
# コードブロックのテスト
以下はコードブロックです。
```rb
puts "Hello World!"
```
これをこんな感じでPDFにします。
pandoc test.md -o test.pdf --latex-engine=lualatex -V documentclass=ltjarticle
出来上がったPDFがこちらです。
で、このコードブロックのフォントサイズを変えるために、pandocが吐くソースコードを見てみます。
$ pandoc test.md -s -o test.tex --latex-engine=lualatex -V documentclass=ltjarticle
すると、コードブロックはこんな感じになっています。
以下はコードブロックです。
\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{puts }\StringTok{"Hello World!"}
\end{Highlighting}
\end{Shaded}
このShaded
環境は、上の方に定義されています。
\newenvironment{Shaded}{}{}
これは背景色をつける環境なので、デフォルトでは何もしません。ここにフォントサイズを変更する命令を突っ込みます。
\newenvironment{Shaded}{\Huge}{}
で、コンパイルします。
$ lualatex test.tex
できたPDFがこちらです。
無事にコードブロック内のフォントサイズが大きくなりました。
で、いちいちLaTeXソースを吐いてそれを修正するのは面倒なので、修正命令をファイルに書いておいて、後から命令を読み込ませることにします。一度\newenvironment
されたものを再定義する必要があるので、\renewenvironment
を使う必要があります。
\newenvironment{Shaded}{\Huge}{}
これを-H
オプションで読み込ませれば、マークダウンからPDFに一気に変換しつつ、フォントサイズも変更できます。
$ pandoc test.md -o test.pdf --latex-engine=lualatex -V documentclass=ltjarticle -H mytemplate.tex
背景色について
先程の方法を使うと、コードブロックに背景色がある場合に、背景色が消えてしまいます。
例えば、ハイライトスキームとしてbreezeDarkを使うと、背景色は黒くなります。
$ pandoc test.md -o test.pdf --latex-engine=lualatex -V documentclass=ltjarticle --highlight-style=breezeDark
しかし、先程作ったテンプレートを読み込むと文字色はbreezeDarkのままですが、背景色が消えてしまいます。
これは、背景色がある場合のShaded
環境がこのように定義されているからです。
\newenvironment{Shaded}{\begin{snugshade}}{\end{snugshade}}
このsnugshade
環境が背景色をつけるので、その直後にフォントサイズ変更命令を突っ込みます。
\renewenvironment{Shaded}{\begin{snugshade}\Huge}{\end{snugshade}}
背景色付きでフォントサイズが変化しました。
背景色の修正
ちなみに背景色は\definecolor
で上書きできます。
\renewenvironment{Shaded}{\begin{snugshade}\Huge}{\end{snugshade}}
\definecolor{shadecolor}{RGB}{255,200,200}
まとめ
PandocでLaTeX経由でPDFを作る時に、コードブロックのフォントサイズをいじる方法をまとめました。若干アドホックですが、元のマークダウンファイルに手を入れないで修正できるのでまぁ良いんじゃないでしょうか。
参考
StackOverflowのHow to set the font size for code blocks in pandoc markdown?についた回答
Author And Source
この問題について(PandocでLaTeX経由でPDFを出力する際にコードブロックのフォントサイズをいじる), 我々は、より多くの情報をここで見つけました https://qiita.com/kaityo256/items/5a911ab08de75917ba29著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .