libertinus
在文件的 yaml 头中用作字体系列.md
并尝试使用 pandoc(2.9.2)和 pdf 引擎lualatex
(TL 2020、LuaLaTeX 1.12.0)进行转换,我收到以下错误消息:
! LaTeX Error: Command `\eth' already defined.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.240 ...mbol{\eth} {\mathord}{AMSb}{"67}
重现步骤
将此 mwe 用于.md
-file
---
title: Test
author: Author
date: \today
fontfamily: libertinus
---
This is a test-file.
ÄÜÖß
1234567890
转换命令是
pandoc -s libertinus-test.md --pdf-engine=lualatex -o libertinus-test.pdf
我发现问题出在数学包中:
笔记:
我只要将字体系列改为libertine
它,问题就解决了。但是libertinus-otf
使用(HV)时也会出现同样的问题。
此主题还存在一个问题: https://github.com/alif-type/libertinus/issues/327
答案1
默认pandoc
模板有
100 \usepackage{amssymb,amsmath}
101 \usepackage{ifxetex,ifluatex}
102 \ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
103 \usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc}
104 \usepackage[utf8]{inputenc}
105 \usepackage{textcomp} % provide euro and other symbols
106 \else % if luatex or xetex
107 $if(mathspec)$
108 \ifxetex
109 \usepackage{mathspec}
110 \else
111 \usepackage{unicode-math}
112 \fi
113 $else$
114 \usepackage{unicode-math}
115 $endif$
无条件加载amssymb
。这就是导致问题的原因。
amssymb
请注意,同时加载unicode-math
几乎没有意义(如果有的话)。
更合理的模板应该是
\usepackage{amsmath}
\usepackage{ifxetex,ifluatex}
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
\usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{textcomp} % provide euro and other symbols
\usepackage{amssymb}
\else % if luatex or xetex
$if(mathspec)$
\ifxetex
\usepackage{amssymb}
\usepackage{mathspec}
\else
\usepackage{unicode-math}
\fi
$else$
\usepackage{unicode-math}
$endif$