我目前正在使用该complexity
包,其中我为复杂性类定义了许多新命令,并且我正在使用该libertine
字体编写文档。除了复杂性包呈现的命令外,我希望对所有内容使用常规数学字体...也就是说,我希望包定义的命令complexity
使用数学字体libertinust1math
,而其余数学应以常规数学字体呈现。
我想象一定有一个简单的命令可以改变特定命令的字体,但我不知道它是什么。
答案1
该acmart
课程使用 Linux Libertine 字体作为文本,并且
\RequirePackage[libertine]{newtxmath}
如果您执行相同的操作(\usepackage
当然使用),您将得到想要的结果,并避免混合视觉上不兼容的字体。
\documentclass{article}
\usepackage{libertine}
\usepackage[libertine]{newtxmath}
\usepackage{amsmath}
\usepackage{complexity}
\begin{document}
\[
\begin{array}{l}
\P \subseteq \NP\\
\CVP \leq_m \SAT\\
\polylog \in O(\poly)\\
\PSPACE \subseteq \EXP\\
\SAT \leq_T \MaxSAT\\
\polylog \in \Omega(\llog)
\end{array}
\]
\newcommand{\diff}{\mathop{}\!d}% https://tex.stackexchange.com/a/84308/73317
\[
\forall z\in \mathbb{C},
\Bigl(
\Re(z) > 0 \implies \Gamma(z) =
\int_{0}^{+\infty} x^{z-1} e^{-x} \diff x
\Bigr)
\]
\end{document}
这将使用 Linux Biolinum 作为无衬线字体。如果你想要 使用的无衬线字体libertinust1math
,那么你可以这样做
\documentclass{article}
\usepackage{libertine}
\usepackage[libertine]{newtxmath}
\usepackage{amsmath}
\usepackage{complexity}
\DeclareFontEncoding{LS1}{}{}
\DeclareFontSubstitution{LS1}{libertinust1mathsf}{m}{n}
\DeclareMathAlphabet{\mathsf}{LS1}{libertinust1mathsf}{m}{n}
\SetMathAlphabet{\mathsf}{bold}{LS1}{libertinust1mathsf}{b}{n}
\begin{document}
\[
\begin{array}{l}
\P \subseteq \NP\\
\CVP \leq_m \SAT\\
\polylog \in O(\poly)\\
\PSPACE \subseteq \EXP\\
\SAT \leq_T \MaxSAT\\
\polylog \in \Omega(\llog)
\end{array}
\]
\newcommand{\diff}{\mathop{}\!d}% https://tex.stackexchange.com/a/84308/73317
\[
\forall z\in \mathbb{C},
\Bigl(
\Re(z) > 0 \implies \Gamma(z) =
\int_{0}^{+\infty} x^{z-1} e^{-x} \diff x
\Bigr)
\]
\end{document}
答案2
下面的操作按照问题的要求进行(已测试pdflatex
)。我让作者自行选择匹配的字体。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern} % for instance
\usepackage{amsmath} % only for stuff in the last formula
\usepackage{amsfonts} % ditto
\usepackage{complexity}
\makeatletter
% Define math alphabet \mathsfliti using LibertinusT1Math (adapted from
% libertinust1math.sty)
\unless\ifdefined\iflibus@sansmath
\newif\iflibus@sansmath
\fi
\DeclareFontEncoding{LS1}{}{}
\DeclareFontSubstitution{LS1}{libertinust1math}{m}{n}
\DeclareMathAlphabet{\mathsfliti}{LS1}{libertinust1mathsf}{m}{n}
% Adapted from complexity.sty: use \mathsfliti for everything in complexity.sty
\renewcommand{\complexity@fontcommand}{\mathsfliti}
\renewcommand{\lang}[1]{{\ensuremath{\mathsfliti{#1}}}}
\renewcommand{\func}[1]{{\ensuremath{\mathsfliti{#1}}}}
\makeatother
\begin{document}
% \showoutput % Uncomment to verify which font is used for which glyph
\[
\begin{array}{l}
\P \subseteq \NP\\
\CVP \leq_m \SAT\\
\polylog \in O(\poly)\\
\PSPACE \subseteq \EXP\\
\SAT \leq_T \MaxSAT\\
\polylog \in \Omega(\llog)
\end{array}
\]
\newcommand{\diff}{\mathop{}\!d}% https://tex.stackexchange.com/a/84308/73317
\[
\forall z\in \mathbb{C},
\Bigl(
\Re(z) > 0 \implies \Gamma(z) =
\int_{0}^{+\infty} x^{z-1} e^{-x} \diff x
\Bigr)
\]
\end{document}