![在发票环境中使用非系统字体](https://linux22.com/image/456835/%E5%9C%A8%E5%8F%91%E7%A5%A8%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E7%94%A8%E9%9D%9E%E7%B3%BB%E7%BB%9F%E5%AD%97%E4%BD%93.png)
我想使用非系统字体,并将invoice
环境嵌套在文档类中。通常,要使用(不使用包)scrlttr2
在普通字母中指定我想要的字体,以下方法可以正常工作:scrlttr2
invoice
\usepackage{fontspec}
\setmainfont{Normal-GroteskNormal.otf}
但是,scrlttr2 中发票区块的金额列中的值是默认的 LaTeX serif 字体。我如何在那里也应用 Normal-GroteskNormal.otf?
这里是 MWE:
\documentclass[]{scrlttr2}
\usepackage{invoice}
\usepackage[utf8]{inputenc}
\usepackage{ifxetex,ifluatex}
\usepackage[T1]{fontenc}
\usepackage{fontspec}
\setmainfont{Normal-GroteskNormal.otf}
\setkomafont{fromname}{\Large}
\begin{document}
\setkomavar{fromname}{Josefina Jones}
\setkomavar{fromaddress}{My address}
\setkomavar{date}{\today}
\setkomavar{place}{Here}
\begin{letter} {%
Addressee\\
Address
}
\opening{Invoice \#123}
\begin{invoice}{Euro}{0}
\ProjectTitle{Test}
\Fee{Stuff} {5000} {1}
\EBC{Expense} {200}
\end{invoice}
\closing{Ciao,}
\end{letter}
\end{document}
这个问题看起来很有用,但我没有使用自定义样式表,而且海报使用的是备用系统字体。
答案1
该scrlttr2
课程与该问题无关。
“金额”列使用数学模式,以适应减号。
您需要更改数学模式下数字的排版方式,这并不难。
\documentclass{article}
\usepackage{invoice}
\usepackage[no-math]{fontspec}
\setmainfont{Futura}[
NFSSFamily=myfont,
]
\DeclareSymbolFont{amount}{TU}{myfont}{m}{n}
\Umathcode`0="7 \symamount `0
\Umathcode`1="7 \symamount `1
\Umathcode`2="7 \symamount `2
\Umathcode`3="7 \symamount `3
\Umathcode`4="7 \symamount `4
\Umathcode`5="7 \symamount `5
\Umathcode`6="7 \symamount `6
\Umathcode`7="7 \symamount `7
\Umathcode`8="7 \symamount `8
\Umathcode`9="7 \symamount `9
\Umathcode`-="2 \symamount "2212
\begin{document}
\begin{invoice}{Euro}{0}
\ProjectTitle{Test}
\Fee{Stuff} {5000} {1}
\EBC{Expense} {200}
\end{invoice}
\end{document}
由于我没有您的字体,所以我使用了另一种非常独特的字体。如果该字体没有减号 U+2212 字符,您可能可以用类似的减号代替
\newfontface{\minussign}{FONTWITHMINUSSIGN}[
NFSSFamily=minussign,
]
\DeclareSymbolFont{minussign}{TU}{minussign}{m}{n}
\Umathcode`-= "2 \symminussign "2212