Latex 写文章可能常用到一些缩写,如:
- .e.g.
- i.e.
- cf.
- etc.
- w.r.t.
- i.i.d.
- et al.
- viz.
其中有些要斜体,如果每次都要用 \textit{...}
、{\it ...}
弄斜,有点麻烦。CVPR 模板中有定义一些命令,可以更方便地输入这些缩写。这里记录定义缩写的方法,以后可以按需加到自己 latex 工程中。[1] 是用 CVPR 模板改的 rebuttal 模板,参考其 cvpr.sty,632 行左右开始。
数学的
arg min
,
arg max
\argmin, \argmax
argmin,argmax 定义见 [2]。虽然可以直接用 \arg\min_{s}
,但这样 s
会在 min
下面,而不是 argmin
中间的下面:
不好看。[2] 有个回答给出几种方案对比,采用 amsmath 包 + \DeclareMathOperator*
的方案,见后文代码。
Code
- 加在导言区
- 要导 xspace 包
- 之后就用形如
\eg
的形式调用这些缩写 - 那个
\onedot
是辅助命令,智能加尾点,示例中故意在缩写后加个了个点(如\eg.
),效果是只有一个而不是两个
\documentclass{article}
\usepackage{xspace} % 要导这包
\usepackage{amsmath} % argmax, argmin
% 在导言区定义缩写命令
\makeatletter
\DeclareRobustCommand\onedot{\futurelet\@let@token\@onedot}
\def\@onedot{\ifx\@let@token.\else.\null\fi\xspace}
\def\eg{\emph{e.g}\onedot} \def\Eg{\emph{E.g}\onedot}
\def\ie{\emph{i.e}\onedot} \def\Ie{\emph{I.e}\onedot}
\def\viz{\emph{viz}\onedot}
\def\cf{\emph{cf}\onedot} \def\Cf{\emph{Cf}\onedot}
\def\etc{\emph{etc}\onedot} \def\vs{\emph{vs}\onedot}
\def\wrt{w.r.t\onedot} \def\dof{d.o.f\onedot}
\def\iid{i.i.d\onedot} \def\wolog{w.l.o.g\onedot}
\def\etal{\emph{et al}\onedot}
\makeatother
% argmax, argmin
\DeclareMathOperator*{\argmin}{\arg\min}
\DeclareMathOperator*{\argmax}{\arg\max}
\begin{document}
% 示例用法
% 故意加多个尾点,测智能加点
% 前后两个大写字母是装饰
\begin{itemize}
\item A\eg.A, \Eg
\item B\ie.B, \Ie
\item C\cf.C, \Cf
\item D\etc.D, \vs
\item E\wrt.E, \dof
\item F\iid.F, \wolog
\item G\etal.G
\item $\arg\min_a \quad \arg\max_b$
\item $\argmin_c \quad \argmax_d$
\end{itemize}
\begin{equation}
\arg\min_a \quad \arg\max_b \quad \argmin_c \quad \argmax_d
\end{equation}
\end{document}
效果: