XeLaTeX 字体警告:字体形状“TS1/Arial(0)/m/n”未定义,如何修复?

XeLaTeX 字体警告:字体形状“TS1/Arial(0)/m/n”未定义,如何修复?

我希望能有一个快速简便的解决方案

  • 错误代码

LaTeX 字体警告:TS1/Arial(0)/m/n' undefined (Font) using输入行 75 上的字体形状为 TS1/cmr/m/n'。

  • 主要问题

    该错误表明我无法在使用时将数学字体更改为我的选择数学规范包裹

  • 解释

    我搜索了论坛上的旧主题,其中包括“fontspec”用法、“renewcommands”用法等示例。但它们似乎都无法修复我的错误,也无法让我使用 Arial 作为主要字体(大胆的斜体等)以及例如Cambria Math 数学字体。如果与 Arial 结合使用,名为“cmr”的替代字体看起来有点奇怪。

如果 Cambria Math 与 Arial 一起使用是个愚蠢的想法,请随时提供更好的解决方案!

这是最小示例,因此您也可以观察到该错误消息(并了解 Arial + cmr 有多么不合适):

带完整序言的最小工作示例

    \documentclass[hidelinks,11pt,egregdoesnotlikesansseriftitles]{scrartcl}
            \usepackage[T1]{fontenc}
            \usepackage{apacite}
            \usepackage[showframe=true]{geometry} 
            \usepackage{graphicx}
            \usepackage{caption}     
            \usepackage{mathspec}
        \setmainfont{Arial}
        \setmathfont{Cambria Math}%an example, feel free to suggest something that works
            \usepackage{natbib} 
            \usepackage[table,xcdraw]{xcolor}
            \usepackage{array}
            \usepackage[english]{babel}
            \usepackage{geometry} 
            \usepackage{setspace}
            \usepackage{eurosym}
            \usepackage{multirow}
            \usepackage{siunitx}

        \makeatletter
        \newcommand{\MSonehalfspacing}{%
          \setstretch{1.44}%  default
          \ifcase \@ptsize \relax % 10pt
            \setstretch {1.448}%
          \or % 11pt
            \setstretch {1.399}%
          \or % 12pt
            \setstretch {1.433}%
          \fi
        }
        \makeatother
        \MSonehalfspacing   

            \usepackage[headsepline,automark,singlespacing=true]{scrlayer-scrpage} 
                \clearpairofpagestyles 
                \ihead{\rightmark} 
                \ohead{\pagemark} 
                \addtokomafont{pageheadfoot}{\upshape\bfseries} 
                \KOMAoptions{onpsinit=\setstretch{1}} 

            \usepackage{textcomp}
            \usepackage{gensymb}        

        \makeatletter
        \let\Hy@linktoc\Hy@linktoc@none
        \makeatother


        \let\oldtabular\tabular
        \renewcommand{\tabular}{\small\oldtabular}
        \setkomafont{caption}{\small}

        \geometry{a4paper, top=25mm, left=25mm, right=25mm, bottom=25mm,includehead} 
        \setlength{\parindent}{0pt}

            \usepackage{apacdoc}


        \addto\captionsenglish{% Replace "english" with the language you use
          \renewcommand{\contentsname}%
            {Table of Contents}%
        }
        \usepackage{hyperref}
        \def\UrlBreaks{\do\/\do-}


        \makeatletter
        \newcommand{\tocfill}{\cleaders\hbox{$\m@th \mkern\@dotsep mu . \mkern\@dotsep mu$}\hfill}
        \makeatother
        \newcommand{\abbrlabel}[1]{\makebox[4cm][l]{\textbf{#1}\ \tocfill}}
        \newenvironment{abbreviations}{\begin{list}{}{\renewcommand{\makelabel}{\abbrlabel}%
                                                      \setlength{\itemsep}{0pt}}}{\end{list}}

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%            
        \begin{document}


        Test

        \textbf{Many Test much hurt}

        \textit{Tester Rester}

        $ \frac{22}{33}$ How can I change the font of the numbers to be similar to Arial? It doesn't have to be Arial, just a similar font type. Heck there might be a more elegant solution?

        \end{document}

答案1

编辑:

您实际上也不需要mathcomp。我所做的只是从您的文档中删除字体替换。如果您使用unicode-math包,如 @Herbert 在另一个答案中所建议的那样,您可以将我的原始答案修改为:

\documentclass[11pt]{scrartcl}

\usepackage{fontspec}
\usepackage{unicode-math}
\setmainfont{Arial}
\setmathfont{Cambria Math}


\begin{document}

°C
$°C$
$Ω$
$‰$
μ
$μ$
$‱$

\end{document}

Symbols used directly and including unicode-math

如您所见,使用unicode-math允许您在数学模式下直接使用符号。您可以删除mathspec并使用更标准的fontspec选项。这种方法仍然允许您使用 Cambria Math。同样,唯一的问题是最后一个符号:‱(这次,也在数学模式下 - 因为 Arial 和 Cambria Math 似乎都没有‱)

把这一切重新组合起来你的序言,我已经更新了@Herbert的序言以删除gensymbtextcompmathcomp包并改用fontspec

\documentclass[11pt]{scrartcl}

\usepackage{fontspec}
\usepackage{unicode-math}
\setmainfont{Arial}
\setmathfont{Cambria Math}

\usepackage{apacite}
\usepackage[showframe=true]{geometry} 
\usepackage{graphicx}
\usepackage{caption}     
\usepackage{eurosym}
\usepackage{multirow}
\usepackage{siunitx}
\usepackage{natbib} 
\usepackage[table,xcdraw]{xcolor}
\usepackage{array}
\usepackage[english]{babel}
\usepackage{geometry} 
\usepackage{setspace}

\makeatletter
\newcommand{\MSonehalfspacing}{%
    \setstretch{1.44}%  default
    \ifcase \@ptsize \relax % 10pt
    \setstretch {1.448}%
    \or % 11pt
    \setstretch {1.399}%
    \or % 12pt
    \setstretch {1.433}%
    \fi
}
\makeatother
\MSonehalfspacing   

\usepackage[headsepline,automark,singlespacing=true]{scrlayer-scrpage} 
\clearpairofpagestyles 
\ihead{\rightmark} 
\ohead{\pagemark} 
\addtokomafont{pageheadfoot}{\upshape\bfseries} 
\KOMAoptions{onpsinit=\setstretch{1}} 


\makeatletter
\let\Hy@linktoc\Hy@linktoc@none
\makeatother


\let\oldtabular\tabular
\renewcommand{\tabular}{\small\oldtabular}
\setkomafont{caption}{\small}

\geometry{a4paper, top=25mm, left=25mm, right=25mm, bottom=25mm,includehead} 
\setlength{\parindent}{0pt}

\usepackage{apacdoc}


\addto\captionsenglish{% Replace "english" with the language you use
    \renewcommand{\contentsname}%
    {Table of Contents}%
}
\usepackage{hyperref}
\def\UrlBreaks{\do\/\do-}


\makeatletter
\newcommand{\tocfill}{\cleaders\hbox{$\m@th \mkern\@dotsep mu . \mkern\@dotsep mu$}\hfill}
\makeatother
\newcommand{\abbrlabel}[1]{\makebox[4cm][l]{\textbf{#1}\ \tocfill}}
\newenvironment{abbreviations}{\begin{list}{}{\renewcommand{\makelabel}{\abbrlabel}%
            \setlength{\itemsep}{0pt}}}{\end{list}}
\begin{document}

°C
$°C$
$Ω$
$‰$
μ
$μ$
$‱$

\end{document}

这会产生与上面相同的图像。

原来的:

注意:这不是错误消息。这是警告消息。

真正的问题来自于\usepackage{gensymb}。如果你注释掉它(不对原始示例进行任何更改),错误就会被消除。

正如其他人提到的,您还应该删除\usepackage[T1]{fontenc}并使用\usepackage{fontspec}(无论如何都会加载mathspec)。

根据gensymb文献,似乎期望textcomp正在加载\usepackage[T1]{fontenc}。真正的问题是……您是否需要这些符号gensymb?或者您是否可以在其他地方找到相应的符号(例如综合符号指南- 如果需要的话,列出包裹)?

gensymb写于 2003 年,此后似乎未更新。该软件包仅提供\de­gree\cel­sius\pert­hou­sand\mi­cro\ohm

但是,使用这个 MWE,我发现您不需要gensymbtextcomp包:

\documentclass[11pt]{scrartcl}

\usepackage{mathspec}
\setmainfont{Arial}
\setmathfont{Cambria Math}

\usepackage{mathcomp}  

\begin{document}

°C
$\tccentigrade$
$\tcohm$
$\tcperthousand$
μ
$\tcmu$
$\tcpertenthousand$

\end{document}

Symbols used directly and via mathcomp

所以你看,你可以直接复制和粘贴符号(在文本模式下)并mathcomp在数学模式下使用命令。

唯一真正的问题是 ‱ 似乎不适用于 Arial。您需要找到另一个带有该符号的包,或者另一种字体。

编辑:顺便说一句,这在 pdfLaTeX 中不起作用。

答案2

使用此序言并运行文档xelatex

\documentclass[hidelinks,11pt,egregdoesnotlikesansseriftitles]{scrartcl}
\usepackage{apacite}
\usepackage[showframe=true]{geometry} 
\usepackage{graphicx}
\usepackage{caption}     
\usepackage{eurosym}
\usepackage{multirow}
\usepackage{siunitx}
\usepackage{gensymb}        
\usepackage{unicode-math}
\setmainfont{Arial}
\setmathfont{Cambria Math}%an example, feel free to suggest something that works
\usepackage{natbib} 
\usepackage[table,xcdraw]{xcolor}
\usepackage{array}
\usepackage[english]{babel}
\usepackage{geometry} 
\usepackage{setspace}

\makeatletter
\newcommand{\MSonehalfspacing}{%
    \setstretch{1.44}%  default
    \ifcase \@ptsize \relax % 10pt
    \setstretch {1.448}%
    \or % 11pt
    \setstretch {1.399}%
    \or % 12pt
    \setstretch {1.433}%
    \fi
}
\makeatother
\MSonehalfspacing   

\usepackage[headsepline,automark,singlespacing=true]{scrlayer-scrpage} 
\clearpairofpagestyles 
\ihead{\rightmark} 
\ohead{\pagemark} 
\addtokomafont{pageheadfoot}{\upshape\bfseries} 
\KOMAoptions{onpsinit=\setstretch{1}} 

%\usepackage{textcomp}

\makeatletter
\let\Hy@linktoc\Hy@linktoc@none
\makeatother


\let\oldtabular\tabular
\renewcommand{\tabular}{\small\oldtabular}
\setkomafont{caption}{\small}

\geometry{a4paper, top=25mm, left=25mm, right=25mm, bottom=25mm,includehead} 
\setlength{\parindent}{0pt}

\usepackage{apacdoc}


\addto\captionsenglish{% Replace "english" with the language you use
    \renewcommand{\contentsname}%
    {Table of Contents}%
}
\usepackage{hyperref}
\def\UrlBreaks{\do\/\do-}


\makeatletter
\newcommand{\tocfill}{\cleaders\hbox{$\m@th \mkern\@dotsep mu . \mkern\@dotsep mu$}\hfill}
\makeatother
\newcommand{\abbrlabel}[1]{\makebox[4cm][l]{\textbf{#1}\ \tocfill}}
\newenvironment{abbreviations}{\begin{list}{}{\renewcommand{\makelabel}{\abbrlabel}%
            \setlength{\itemsep}{0pt}}}{\end{list}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 

相关内容