使用 libertinus(-otf) 和 lualatex [pandoc] 时符号 \eth 已定义

使用 libertinus(-otf) 和 lualatex [pandoc] 时符号 \eth 已定义

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

我发现问题出在数学包中:

https://github.com/jgm/pandoc/blob/9d0506e4047f797a0672d7767830b59f1710d191/data/templates/default.latex#L100

笔记: 我只要将字体系列改为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$

相关内容