在发票环境中使用非系统字体

在发票环境中使用非系统字体

我想使用非系统字体,并将invoice环境嵌套在文档类中。通常,要使用(不使用包)scrlttr2在普通字母中指定我想要的字体,以下方法可以正常工作:scrlttr2invoice

\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

相关内容