当使用长标签来表示方程式时,是否有一种方法可以等效于\eqref
允许 LaTeX 打破单词之间甚至单词内的引用。
在下面的例子中,我得到了 overfull \hbox
。而当添加 时\sloppy
,我会在单词之间得到很大的空格。
(作为奖励约束,它实际上应该与之一起工作\documentclass{llncs}
。)
\documentclass[draft,11pt]{article}
\usepackage{amsmath}
\begin{document}
\begin{equation}
\label{eq:inframetric}
d(x,y)\leq \rho \max(d(x,z),d(z,y))
\tag{$\rho$-inframetric inequality}
\end{equation}
\begin{equation}
\label{eq:triangle_inequality}
d(x,y)\leq d(x,z)+d(z,y)
\tag{triangle inequality}
\end{equation}
\medskip
a, b, c, d, e, f, g, \eqref{eq:triangle_inequality}, \eqref{eq:inframetric},
\eqref{eq:triangle_inequality}, \eqref{eq:triangle_inequality}, \eqref{eq:inframetric},
\eqref{eq:inframetric}
\medskip
$a_1,a_2,a_3,a_1,a_2,a_3,a_1,a_2,a_3,a_1,a_2,a_3,a_1,a_2,a_3,a_1,a_2,a_3$
\eqref{eq:triangle_inequality},
\end{document}
答案1
您可以定义一个命令\seqref
来模仿它的\eqref
作用,而无需使用方框;我们必须使用refcount
来允许在最后一个单词中使用连字符。我不会重新定义\eqref
,因为标签的连字符通常不应使用。
\documentclass[draft,11pt]{article}
\usepackage{amsmath,refcount}
\newtheorem{thm}{Theorem}
\makeatletter
\newcommand{\seqref}[1]{\textup{\tagform@split{\getrefnumber{#1}}}}
\newcommand\tagform@split[1]{%
\begingroup
\m@th\normalfont(\ignorespaces #1\unskip\@@italiccorr)%
\endgroup
}
\makeatother
\begin{document}
\begin{equation}
\label{eq:inframetric}
d(x,y)\leq \rho \max(d(x,z),d(z,y))
\tag{$\rho$-inframetric inequality}
\end{equation}
\begin{equation}
\label{eq:triangle_inequality}
d(x,y)\leq d(x,z)+d(z,y)
\tag{triangle inequality}
\end{equation}
\medskip
a, b, c, d, e, f, g, \seqref{eq:triangle_inequality}, \seqref{eq:inframetric},
\seqref{eq:triangle_inequality}, \seqref{eq:triangle_inequality}, \seqref{eq:inframetric},
\seqref{eq:inframetric}
\medskip
\begingroup\itshape
a, b, c, d, e, f, g, \seqref{eq:triangle_inequality}, \seqref{eq:inframetric},
\seqref{eq:triangle_inequality}, \seqref{eq:triangle_inequality}, \seqref{eq:inframetric},
\seqref{eq:inframetric}
\endgroup
\begin{thm}
a, b, c, d, e, f, g, \seqref{eq:triangle_inequality}, \seqref{eq:inframetric},
\seqref{eq:triangle_inequality}, \seqref{eq:triangle_inequality}, \seqref{eq:inframetric},
\seqref{eq:inframetric}
\end{thm}
$a_1,a_2,a_3,a_1,a_2,a_3,a_1,a_2,a_3,a_1,a_2,a_3,a_1,a_2,a_3,a_1,a_2,a_3$
\seqref{eq:triangle_inequality},
\end{document}
当然,错误的换行符不会自动解决;如果你直接输入标签,结果也是一样。