使用 \eqref 引用方程式,同时在整个文档中使用不同的标记形式

使用 \eqref 引用方程式,同时在整个文档中使用不同的标记形式

我尝试通过\eqref在整个文档中使用不同的标记形式来引用方程式,但输出无法显示我想要的标记形式。正如mathtools包使用中提到的,在这种情况下“要小心”。
我想要的显示方程式是“c+d=e[1-3]”但它只在equation环境中工作。我想要的参考是“(1-2)、[1-3]、[1-4] 和 [1-5] 中有一项测试。”所以

1.我怎样才能得到上面所说的结果?
2.如果我不在数学模式下更改这些代码,我如何自定义命令或使用哪个包来显示正确的标签形式和引用?
3.为什么该equation环境显示与其他数学环境不同?

我在 texlive2015 下使用 XeLaTeX。

这是我的代码:

\documentclass{article}
\usepackage[pdfborder=0 0 0]{hyperref} % must needed
\usepackage{amsmath}
\usepackage{mathtools}

\begin{document}

\newtagform{real}{[}{]} 
\renewcommand{\theequation}{\arabic{subsection}--\arabic{equation}}
\newcommand{\zzreal}{\usetagform{real}\stepcounter{equation}\tag{\theequation}} %

\section{Sample}
\subsection{subsample}
\begin{align}
a+b &=c\\
b+c &=d  \label{eq:2}\\
c+d &=e \zzreal \label{eq:3}
\end{align}
\begin{gather}
c+d =g  \zzreal\label{eq:4}
\end{gather}
\begin{equation}
d+e =f \zzreal\label{eq:5}
\end{equation}

There is a test  in \eqref{eq:2}, \eqref{eq:3} , \eqref{eq:4} and  \eqref{eq:5} .

\end{document}

此外,我有另一个代码可以满足第一个问题,但不能满足第二个问题的要求,即我在每个方程后面插入一个命令,无论我是否引用它们。但是,在编写方程时似乎不方便。有什么解决方法可以优化此代码?
需要结果代码:

\documentclass{article}
\usepackage[pdfborder=0 0 0]{hyperref} % must needed
\usepackage{amsmath}
\usepackage{mathtools}

\renewcommand{\theequation}{\arabic{subsection}--\arabic{equation}}
\new} command{\zzreal}{\refstepcounter{equation}\tag*{[\theequation]}}%
\newcommand{\zzsim}{\stepcounter{equation}\tag*{(\theequation)}}

\begin{document}
\section{Sample}
\subsection{subsample}
\begin{align}
a+b &=c  \zzsim \\
b+c &=d & \zzsim \label{eq:2} \\
c+d &=e &\zzreal \label{eq:3}
\end{align}
\begin{gather}
c+d =g  \zzreal\label{eq:4}
\end{gather}
\begin{equation}
d+e =f \zzreal\label{eq:5}
\end{equation}

There is a test  in \ref{eq:2}, \ref{eq:3}, \ref{eq:4} and  \ref{eq:5} .

\end{document}

答案1

当您使用时,\tag内容将由 保存\label。因此,如果您将 () 或 [] 放在标记内并删除外面的 (),则引用将匹配(使用\ref而不是\eqref)。缺点是您必须手动标记每个方程式(或获取裸方程式编号)。

\documentclass{article}
\usepackage[pdfborder=0 0 0]{hyperref} % must needed
\usepackage{amsmath}
\usepackage{mathtools}

\begin{document}

\renewcommand{\theequation}{\arabic{subsection}--\arabic{equation}}
\newtagform{naked}{}{} 
\usetagform{naked}
\newcommand{\ptag}{\refstepcounter{equation}%
  \tag{$($\theequation$)$}}
\newcommand{\btag}{\refstepcounter{equation}%
  \tag{$[$\theequation$]$}}

\section{Sample}
\subsection{subsample}
\begin{align}
a+b &=c \ptag\\
b+c &=d \ptag \label{eq:2}\\
c+d &=e \btag \label{eq:3}
\end{align}
\begin{gather}
c+d =g  \btag \label{eq:4}
\end{gather}
\begin{equation}
d+e =f \btag\label{eq:5}
\end{equation}

There is a test  in \ref{eq:2}, \ref{eq:3} , \ref{eq:4} and  \ref{eq:5} .

\end{document}

带括号的引用

注意:我首先尝试将 [] 放入,但 amsmath为了实现\theequation而忽略了 的更改。\theequation\tag

尽管这里不再使用它,但我仍将其超链接版本\mylabel附在后人参考中。

\makeatletter
\newcommand{\mylabel}[2]% #1 = label name, #2 = text for \ref
{\protected@write\@auxout{}{\string\newlabel{#1}{{#2}{\thepage}{\@currentlabelname}{\@currentHref}{}}}}
\makeatother

相关内容