使用 lualatex 中的 fontspec 更改 chemacros \iupac 环境中的字体?

使用 lualatex 中的 fontspec 更改 chemacros \iupac 环境中的字体?

我问这个问题不久前,现在想从和cfr-lm移动pdflatexnewcomputermodernfontencLuaLaTeX

chemmacros \iupac{}也就是说,除了内部环境之外,我想在任何地方使用旧式数字。

我不知道如何改编代码上一个答案但我不知道如何从\plstyle当前位置移动到\liningnums{}仅覆盖括号内文本的位置。或者,我确信fontspec有某种方法可以手动调整这些字体功能直到环境结束,但我不确定如何在不更改整个文档的字体的情况下做到这一点。(chemformula有一个内置命令,但chemmacros没有。)

\documentclass{article}
\usepackage{fontspec}
\defaultfontfeatures+{Numbers=OldStyle}
\usepackage{newcomputermodern}
\usepackage{chemmacros}

\begin{document}
\iupac{(1\textit{R},2\textit{R})-\trans-1,2-Cyclohexanedicarboxylate} Old style

\iupac{\liningnums{(1\textit{R},2\textit{R})-\trans-1,2-Cyclohexanedicarboxylate}} Lining

\iupac{2,2':6',2''-terpyridine} Old style

\iupac{\liningnums{2,2':6',2''-terpyridine}} Lining

1234567890

\liningnums{1234567890}

\end{document}

答案1

您可以重复使用其他答案。要本地切换到不同的数字样式,请使用\addfontfeature,或定义具有正确数字设置的新字体系列。我还建议限制 \defaultfontfeatures 命令,以避免您收到来自数学字体的大量警告。

\documentclass{article}
\usepackage{fontspec}
\defaultfontfeatures+[\rmfamily,\sffamily,\ttfamily]{Numbers=OldStyle}
\usepackage{newcomputermodern}

\newfontfamily\ncmliningnums{NewCM10-Book.otf}[
  Numbers=Lining,
  ItalicFont=NewCM10-BookItalic.otf,%
  BoldFont=NewCM10-Bold.otf,%
  BoldItalicFont=NewCM10-BoldItalic.otf,%
  SlantedFont=NewCM10-Book.otf,%
  SlantedFeatures={FakeSlant=0.25},
  BoldSlantedFont=NewCM10-Bold.otf,%
  BoldSlantedFeatures={FakeSlant=0.25}]


\begin{document}

1234567890

{\addfontfeatures{Numbers=Lining}1234567890}

{\ncmliningnums 1234567890}

\end{document}

在此处输入图片描述

相关内容