我尝试通过\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