单个 eqref 调用中的多个项目/方程式

单个 eqref 调用中的多个项目/方程式

如何在一次\eqref调用中引用多个项目/方程式?我想要的是“在(1,2)中……”而不是“在(1)和(2)中……”。我想我可以这样做

\begin{enumerate} 
  \item blah \label{it:1} 
  \item blah \label{it:2} 
\end{enumerate}

In \eqref{it:1, it:2}...

但那不起作用。

答案1

该命令\eqref用于以与编号方程式相同的格式(并且始终为直立类型)打印对方程式的引用。

对于其他交叉引用,这并不总是合适的。例如,项目通常不带括号进行编号,读者可能难以理解交叉引用“在(1,2)中”。但这是一个意见问题,你的观点和我的观点一样好。

当文档中只使用少数交叉引用时,这(\ref{it:1},~\ref{it:2})就是解决方案。如果您需要多次使用它们,那么宏可能很有用。

最简单的方法是使用 LaTeX3 工具;如果需要,可以将宏定制为其他格式。

\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\mref}{m}{\quinn_mref:n {#1}}
\seq_new:N \l_quinn_mref_seq
\cs_new:Npn \quinn_mref:n #1
 {
  \seq_set_split:Nnn \l_quinn_mref_seq { , } { #1 }
  \seq_pop_right:NN \l_quinn_mref_seq \l_tmpa_tl
  ( % print the left parenthesis
  \seq_map_inline:Nn \l_quinn_mref_seq
    { \ref{##1},\nobreakspace } % print the first references
  \exp_args:NV \ref \l_tmpa_tl % print the last or only one
  ) % print the right parenthesis
 }
\ExplSyntaxOff

如果要确保参考文献始终以直立形式打印,则可以将第一个定义更改为

\NewDocumentCommand{\mref}{m}{\textup{\quinn_mref:n {#1}}}

完整示例

\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\mref}{m}{\quinn_mref:n {#1}}
\seq_new:N \l_quinn_mref_seq
\cs_new:Npn \quinn_mref:n #1
 {
  \seq_set_split:Nnn \l_quinn_mref_seq { , } { #1 }
  \seq_pop_right:NN \l_quinn_mref_seq \l_tmpa_tl
  ( % print the left parenthesis
  \seq_map_inline:Nn \l_quinn_mref_seq
    { \ref{##1},\nobreakspace } % print the first references
  \exp_args:NV \ref \l_tmpa_tl % print the last or only one
  ) % print the right parenthesis
 }
\ExplSyntaxOff

\begin{document}
\begin{enumerate}
  \item\label{it:1}  blah
  \item\label{it:2}  blah
\end{enumerate}

In \mref{it:1,it:2} and this \emph{does} work!

In \mref{it:1} there's only one!
\end{document}

在此处输入图片描述

答案2

如需引用多个方程式(但不是项目),请考虑以下建议https://stackoverflow.com/q/3328806例如,您可以使用子方程对多个(相关)方程进行分组,然后对齐,然后引用方程组或单个方程。

相关内容