這是以下答案的後續內容: 輸入「See Eq. (n)」的正確方法是什麼
\documentclass[12pt]{report}
\usepackage[UKenglish]{babel}
\usepackage{graphicx}
\usepackage{epstopdf}
\usepackage{gensymb}
\usepackage{amssymb}
\usepackage{stmaryrd}
\usepackage{amsmath}
\usepackage{siunitx}
\usepackage{placeins}
\usepackage{letltxmacro}
\LetLtxMacro{\oldeqref}{\eqref}
\RenewDocumentCommand\eqref{D<>{Equation}om}{%
\IfNoValueTF{#2}
{#1~\oldeqref{#3}}
{(#2 #1~\textup{\ref{#3}})}%
}
\begin{document}
\begin{equation}
\label{eq:test}
x=2y;
\end{equation}%
what this looks like:
this is Equation~\eqref{eq:test}
this is \eqref[Equation]{eq:test}
%this is \eqref[Equation][: terms 1 and 2]{eq:test}
\end{document}
這個答案做了我想做的大部分事情,但我想改變它,以便
\eqref[]{eqlable}
也可以採用以下形式
\eqref[][]{eqlabel}
以便在括號內的方程式編號之前和之後都可以添加文字。另外,我不想在那裡有“方程式”,因為我已經在整個文件中寫了這個(當我不需要括號時),並且添加它會使它加倍。如果我從上面刪除這個 - 我最終會得到一個奇怪的空間。
定義一個新命令也可以 - 我已經看到基於此的其他答案 - 但我不知道如何編輯它們中的任何一個以使之前和之後的文本正常工作。
編輯:我希望第二個選項看起來像
\eqref[Equation][: terms 1 and 2]{eqlabel}
並產生(方程式 1.1:第 1 項和第 2 項)。當我輸入 [] 作為選項時,括號已經自動新增。
並為
Equation~\eqref{eqlabel}
產生方程式(1.1)。這已經有效了
任何方法都可以得到括號中的數字後面的術語:1和2。我可以改變我寫方程式的方式來匹配任何有效的東西
答案1
我認為它正在按您的意願工作:)
\documentclass[12pt]{report}
\usepackage[UKenglish]{babel}
\usepackage{graphicx}
\usepackage{epstopdf}
\usepackage{gensymb}
\usepackage{amssymb}
\usepackage{stmaryrd}
\usepackage{amsmath}
\usepackage{siunitx}
\usepackage{placeins}
\usepackage{letltxmacro}
%\LetLtxMacro{\oldeqref}{\eqref}
% As Christian Hupfer noted, there is no need to use \LetLtxMacro here. Although there is no harm is using it (https://tex.stackexchange.com/questions/88001/when-to-use-letltxmacro)
\let\oldeqref\eqref
\RenewDocumentCommand\eqref{oom}{%
\IfNoValueTF{#2}{\def\eqafter{}}{\def\eqafter{#2}}%
\IfNoValueTF{#1}
{\oldeqref{#3}}
{(#1 \textup{\ref{#3}}\eqafter)}%
}
\begin{document}
\begin{equation}
\label{eq:test}
x=2y;
\end{equation}%
what this looks like:
this is Equation~\eqref{eq:test}
this is \eqref[Equation]{eq:test}
this is \eqref[Equation][: terms 1 and 2]{eq:test}
\end{document}