![LateX テンプレートのセクション ヘッダーのフォントを変更する際の問題](https://rvso.com/image/405337/LateX%20%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%81%AE%E3%82%BB%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%20%E3%83%98%E3%83%83%E3%83%80%E3%83%BC%E3%81%AE%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E9%9A%9B%E3%81%AE%E5%95%8F%E9%A1%8C.png)
私は、Eisvogel という LaTeX テンプレートを使用して、Pandoc 経由で Markdown ドキュメントを PDF に変換しています。Pandoc は pdfTeX を使用していると思います。(私はこの分野にあまり詳しくないので、あらかじめご容赦ください。)
テンプレート:https://github.com/Wandmalfarbe/pandoc-latex-template/blob/master/eisvogel.tex
簡単に言うと、テキストのフォントを「Lato」にし、見出しを「Lato Light」にする必要があります。
私は、文書の本文のテキストのフォントとして「Lato」を設定することに成功しました (かなり回りくどい方法で)。しかし、セクションの見出しは Beamer によって制御されているようです (そう思います)。奇妙なことに、目次の 3 番目のレベルの見出しリンクには Lato が使用されていますが、見出し自体は、目次の他の見出しと同様に LM Sans 10 です。
以前、マークダウン ドキュメントの YAML ヘッダーで「fontfamily: Lato」を使用しようとしましたが、次のエラーが発生しました。PDF 生成中にエラーが発生しました。! pdfTeX エラー (フォント拡張): 自動拡張はスケーラブル フォントでのみ可能です。
代わりに、デフォルトのフォント ファミリを Lato に変更することで、テキスト フォントが機能するようになりました。
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
$if(fontfamily)$
$else$
\usepackage[default]{Lato}
\usepackage[T1]{fontenc}
$endif$
\else % if not pdftex
$if(mainfont)$
$else$
\usepackage[default]{Lato}
\usepackage[T1]{fontenc}
私は、「if(fontfamily)」が YAML の「Lato」を使用するだけだと思っていましたが、明らかにそうではありませんでした。これを「else」として配置することによってのみ機能します。これは、このコード セクションではなく、Beamer 部分がエラーをスローしているためだと、今は理解していると思います。
つまり、問題は Beamer にあるようです。LaTeX/Pandoc の残りの部分では、通常のテキストの場合は Lato で問題はありませんが、Beamer は、好ましくない見出しに対して何かしようとしているに違いないと思います。以下で、\usepackage{lmodern} の代わりに \usepackage{lato} を単純に入力してみましたが、効果はありませんでした。
$if(beamerarticle)$
\usepackage{beamerarticle} % needs to be loaded first
$endif$
$if(fontfamily)$
\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$}
$else$
\usepackage{lmodern}
$endif$
ここで、私の旅は壁にぶつかりました。Lato はドキュメント内の通常のテキストには使用できるので使用できることはわかっていますし、旅の途中でスライドやドキュメントのヘッダーとして Lato を使用している例も見てきました。そのため、Beamer が lmodern を使用する必要がある理由が理解できず、Lato の使用をあまり好んでいません。
どこが間違っているのか、ご指導やご説明をいただければ幸いです。
答え1
テンプレートを変更する必要はありません。 経由で Lato フォントを使用できますlato.sty
。このスタイルでは、Lato をデフォルトのファミリとデフォルトのサンセリフ フォントとして使用するオプションdefault
とdefaultsans
を指定する必要があります。これは、YAML フィールドfontfamily
とを使用して実行できますfontfamilyoptions
。
fontfamily: lato
fontfamilyoptions:
- default
- defaultsans
使用して修正なし eisvogel.tex
このサンプルドキュメントとテンプレートを一緒に
---
title: "Example PDF"
author: [Author]
date: "2019-06-16"
subject: "Markdown"
keywords: [Markdown, Example]
lang: "en"
fontfamily: lato
fontfamilyoptions:
- default
- defaultsans
...
# Vinaque sanguine metuenti cuiquam Alcyone fixus
Lorem markdownum Letoia, et alios: figurae flectentem annis aliquid Peneosque ab
esse, obstat gravitate.
そして加工して
pandoc beamer.md -o beamer.pdf --from markdown --to beamer --template ./eisvogel.tex
Lato フォントのみを使用する PDF を生成します。
$ pdffonts beamer.pdf
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
BBNBGL+Lato-Regular Type 1 Custom yes yes no 18 0