我有几个又高又细的表达式(图形图表),我需要给它们贴上标签,就好像它们是方程式一样。考虑到它们的形状,将它们一个接一个地显示出来是疯狂的。我真的想让它们彼此相邻,并给它们下面立即显示的方程编号。我如何才能生成新的方程编号,然后将它们排版到我喜欢的任何位置?
这是我想要的效果的伪代码,其中\newlabel{blah}
是一个虚构的命令,它将方程计数增加 1,排版(n)
为n
新的方程编号,并设置标签“blah”来引用这个新数字。
\[
\begin{array}{cc}
\firstlongthinexpression & \secondlongthinexpression
\\
\newlabel{firstexpr} & \newlabel{secondexpr}
\end{array}
\]
.
.
.
In expressions~\eqref{firstexpr} and~\eqref{secondexpr}, we did blah blah blah.
答案1
您可以定义自己的命令\mylabel
(与现有计数器配合使用equation
)以及\myref
用于排版标签和引用的命令。在下面的代码中,我曾经\rule{<width>}{<height>}
生成了一个面“细长方程”,仅供参考。
\documentclass{article}
\usepackage{array}% http://ctan.org/pkg/array
\newcommand*{\mylabel}[1]{% Label
\refstepcounter{equation}% Correct increment for referencing and label
\label{#1}% Label
\textrm{(\theequation)}% Typeset label
}%
\newcommand*{\myref}[1]{\textrm{(\ref{#1})}}% Reference
\begin{document}
\begin{equation}
E=mc^2 \label{einstein}
\end{equation}
\[
\begin{array}{*{5}{c}}
\rule{5pt}{4em} & \rule{5pt}{3em} & \rule{5pt}{4em} & \rule{5pt}{3em} & \rule{5pt}{4em} \\
\mylabel{firstexpr} & \mylabel{secondexpr} & \mylabel{thirdexpr} & \mylabel{fourthexpr} & \mylabel{fifthexpr}
\end{array}
\]
In expressions~\myref{firstexpr} and~\myref{secondexpr}, we did blah blah blah. However, in expressions~\myref{fifthexpr},
\myref{fourthexpr} and \myref{thirdexpr} we have blah blah blah blah. I really like~\myref{einstein}.
\end{document}
如果没有任何其他规定,这可以正常工作。但是,如果使用amsmath
,则需要对\mylabel
和的定义进行轻微修改\myref
:
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
...
\makeatletter
\newcommand*{\mylabel}[1]{% Label
\refstepcounter{equation}% Correct increment for referencing and label
\ltx@label{#1}% Label
\textrm{(\@currentlabel{})}% Typeset label
}%
\makeatother
\newcommand*{\myref}[1]{\textrm{\eqref{#1}}}% Reference