有时我必须在文本数学公式前设置标签。定义命令似乎更好\TAG
,例如$\TAG{Pythagoras' Equation}a^2+b^2=c^2$
获取<Pythagoras' Equation> a^2+b^2=c^2
。该\TAG
命令需要满足几个条件:
- 提供全局改变 l(r) 角度的便利;
- 内容可以拆分,但不要左倾;
- 最好将其置于数学模式。
当然,amsmath\tag
命令可能会被修改以满足我的需求,但我不知道该怎么做。
@ TH.: 好的
- 想象一下一位辛勤的编辑,他喜欢绿色胜过黑色,或者喜欢一对括号胜过一对角度。
- 当 \TAG 的内容很长时,它不能与右边距重叠,而且其合适的换行点也不一定像大多数人希望的那样位于左边的分隔符上。
- 该命令处于数学模式,因此它会受到 \mathsurround、\everymath 等的影响。
答案1
下面是一个\TAG
宏,将其内容(假定为文本)设置在可指定宽度的 parbox 中,作为可自定义分隔符之间的标签:
\documentclass{article}
\usepackage{amsmath}
\newlength{\tagwidth}
\setlength{\tagwidth}{1in}
\newcommand{\tagldelim}{\langle}
\newcommand{\tagrdelim}{\rangle}
\newcommand{\TAG}[1]{\tag*{$\left\tagldelim\parbox{\tagwidth}{#1}\right\tagrdelim$}}
\begin{document}
\[
\TAG{Pythagoras' Equation}a^2+b^2=c^2
\]
\setlength{\tagwidth}{2in}
\renewcommand{\tagrdelim}{\rbrack}
\[
\TAG{Theory of life, the universe, and everything}
6 \times 9 = 42
\]
\end{document}
答案2
\makeatletter
\providecommand{\textlangle}{$\langle\m@th$}
\providecommand{\textrangle}{$\rangle\m@th$}
\makeatother
\newcommand{\TAG}[1]{%
$% get out of math mode
\kern-\mathsurround % get rid of \mathsurround
\textlangle % start the tag
\nobreak\hspace{0pt}\textup{#1}% typeset the tag
\textrangle % end the tag
~% insert a non breakable interword space
\kern-\mathsurround % get rid of \mathsurround
$% restart the formula
}
\textlangle
和的定义\textrangle
只是为了方便。即使您插入带有\(...\)
或 的公式,这也有效\begin{math}...\end{math}
。