使用 \eqref 和长标签换行

使用 \eqref 和长标签换行

当使用长标签来表示方程式时,是否有一种方法可以等效于\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}

当然,错误的换行符不会自动解决;如果你直接输入标签,结果也是一样。

在此处输入图片描述

相关内容