我正在准备一组宏,其行为必须根据当前字体是粗体和/或斜体和/或无衬线而有所不同。
通过阅读之前回答的问题,我想到了一个可能的解决方案。但是,我的解决方案似乎无法正确检测字体系列是否为无衬线字体。
下面我列出了一个 MWE,其中我使用了应该检测字体系列的宏的核心部分。它可以正确检测字体是粗体还是斜体,但显然它不能正确检测字体是否是无衬线字体。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[english]{babel}
\begin{document}
\edef\namebold{\bfdefault}
\edef\namesansserif{\sfdefault}
\edef\nameit{\itdefault}
\makeatletter
\textsf{\textbf{\textit{%
\newline
\f@series-\namebold:
\ifx\f@series\namebold%
TRUE!!!%
\else%
FALSE!!!%
\fi%
\newline
\f@family-\namesansserif:
\ifx\f@family\namesanserif%
TRUE!!!%
\else%
FALSE!!!%
\fi%
\newline
\f@shape-\nameit:
\ifx\f@shape\nameit%
TRUE!!!%
\else%
FALSE!!!%
\fi%
}}}
\makeatother
\end{document}
这是我得到的结果。我预计第二个查询的答案也是 true,因为“lmss”和“lmss”相同。代码有什么问题?