在以下\lex
命令中,我需要以某种方式\textup
保护参数在某些情况下不被斜体化。
有人能解释一下为什么尽管如此,变体仍强制使用斜体校正\textup
吗?\lexb
\nocorr
平均能量损失
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Times New Roman}
\NewDocumentCommand{\lexa}{mm}{\textit{#1\nocorr}\textsubscript{\textup{\textsc{#2}}}}
\NewDocumentCommand{\lexb}{mm}{\textit{#1\nocorr}\textup{\textsubscript{\textsc{#2}}}}
\begin{document}
\lexa{of}{prep}
\lexb{of}{prep}
\end{document}
答案1
正如Stephen
指出的那样,\textup
还添加了斜体校正。
因此我们还必须\nocorr
在参数中添加。\textup
\NewDocumentCommand{\lexb}{mm}{\textit{#1\nocorr}\textup{\nocorr\textsubscript{\textsc{#2}}}}
所以这是一个平均能量损失:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Times New Roman}
\NewDocumentCommand{\lexb}{mm}{\textit{#1\nocorr}\textup{\nocorr\textsubscript{\textsc{#2}}}}
\begin{document}
\lexb{of}{prep}
\end{document}
需要注意的是,\nocorr
必须在 的参数中的任何其他内容之前添加\textup
;很可能是因为斜体校正命令位于 的定义的开头\textup
(而它位于 的末尾\textit
)。
\textit{f\textup{\nocorr H}} % This removes italic correction.
\textit{f\textup{H\nocorr}} % This does NOT remove italic correction.