答案1
初步解决方案
CPU_time
等似乎是计算机程序中的变量。在计算机科学中,用打字机字体排版变量是很常见的。在 LaTeX 中,这可以使用来实现\texttt
。不过,定义一个额外的宏来排版变量更方便,我将其称为\var
并定义为
\newcommand\var{\texttt}
如果您现在想将文档中所有变量的外观更改为无衬线字体,则只需使用即可\newcommand\var{\textsf}
。
\_
当人们想要在文本中使用下划线字符时,总是打字是一件很乏味的事情。此外\_
,总是从罗马字体系列中选择下划线字符,当与打字机字体一起使用时,它可能看起来很尴尬。underscore
包允许您_
在文本中输入 bare 来排版下划线,同时仍充当数学模式下的下标运算符。它还会从正确的字体中选择下划线。
在amsmath
包中,您也可以在数学模式下使用所有\text...
命令,因此您不必为\var
命令定义任何分支。请记住,在命令的参数中,\text...
空格是不是忽略,即
\texttt{CPU_time} ≠ \texttt{CPU_time }
您使用的\sum\limits
在显示模式下是多余的,并且会破坏文本模式下的行距,因此最好只使用\sum
。
经过上述所有修改后,代码和输出具有良好且连贯的风格。
\documentclass{article}
\usepackage{amsmath}
\usepackage{underscore}
\newcommand\var{\texttt}
\begin{document}
\begin{equation*}
\var{CPU_time}
= \sum_i^{n_1} \var{T_int}_i
+ \sum_i^{n_2} \var{T_exe}_i
+ \sum_i^{n_3} \var{T_gc}_i
\end{equation*}
\end{document}
修订的解决方案
正如@egreg在评论中提到的,这种方法可能会有问题,因为\text...
会受到周围字体变化的影响。为了克服这个问题,最好\normalfont
在过程中重置为\var
。LaTeX 提供了智能宏来定义新的字体命令,我们在这个改进的示例中利用了这些命令。
\documentclass{article}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{underscore}
\DeclareTextFontCommand{\var}{\normalfont\ttfamily}
\newtheorem{thm}{Theorem}
\begin{document}
\begin{thm}
Theorems put everything in italic \texttt{including typewriter}
\begin{equation*}
\var{CPU_time}
= \sum_i^{n_1} \var{T_int}_i
+ \sum_i^{n_2} \var{T_exe}_i
+ \sum_i^{n_3} \var{T_gc}_i
\end{equation*}
\end{thm}
\end{document}
替代解决方案
@egreg 还在评论中建议使用\mathtt
而不是 ,\texttt
原因与前面所述相同。现在我们无法再利用该underscore
包,但必须使 的_
参数处于 active 状态。这需要更多代码,并且我们会丢失打字机字体中的下划线,现在已由(through )\var
替换。\textunderscore
\_
\documentclass{article}
\usepackage{amsmath}
\usepackage{amsthm}
\newtheorem{thm}{Theorem}
\begingroup
\catcode`_=13
\gdef\var{%
\begingroup
\catcode`_=13
\def_{\_}%
\dovar
}
\gdef\dovar#1{%
\mathtt{#1}%
\endgroup
}
\endgroup
\begin{document}
\begin{thm}
Theorems put everything in italic \texttt{including typewriter}
\begin{equation*}
\var{CPU_time}
= \sum_i^{n_1} \var{T_int}_i
+ \sum_i^{n_2} \var{T_exe}_i
+ \sum_i^{n_3} \var{T_gc}_i
\end{equation*}
\end{thm}
\end{document}
实际解决方案
为了回答实际问题,我们可以在这里逐个替换\mathtt
以\mathit
减少\_
下划线\!\_
前的空间。
\documentclass{article}
\usepackage{amsmath}
\begingroup
\catcode`_=13
\gdef\var{%
\begingroup
\catcode`_=13
\def_{\!\_}%
\dovar
}
\gdef\dovar#1{%
\mathit{#1}%
\endgroup
}
\endgroup
\begin{document}
\begin{equation*}
\var{CPU_time}
= \sum_i^{n_1} \var{T_int}_i
+ \sum_i^{n_2} \var{T_exe}_i
+ \sum_i^{n_3} \var{T_gc}_i
\end{equation*}
\end{document}