我使用xr
来引用论文补充材料中的方程式。我希望论文中引用的补充材料中的方程式自动以“S”为前缀,以便Eq.~\ref{eqn:first}
在文本中显示为Eq. S1
。理想情况下,补充文件中也应如此。我该怎么做?
答案1
这是一个结合xr
和prettyref
包的解决方案。缺点是它迫使您使用\prettyref
而不是\ref
,但无论如何,您可能会受益于包提供的那种自动化prettyref
:)
\documentclass{article}
\usepackage{xr}
\externaldocument[S]{myotherfile}
\usepackage{prettyref}
\newrefformat{Seq}{Eq.~S\ref{#1}}
\begin{document}
You can find more about \prettyref{Seq:myequation} in my other paper.
\end{document}
内容myotherfile.tex
:
\documentclass{article}
\begin{document}
\begin{equation}
a=b \label{eq:myequation}
\end{equation}
\end{document}
主文件的输出:
答案2
这是旧帖子,但我今天试图完成此任务,但这些解决方案都无法解决我的问题。
这个帖子里有一些不错的答案,但没有一个是完美的。尤其是当你明确规定要在方程式前面加上“S”时在补充文件中(不仅仅在参考文献中)。
最可靠的方法是先将“S”添加到前面,然后再想办法交叉引用它。为此,请将其添加到补充文档(“supplemental.tex”)的序言中:
% Define chapter number
\newcommand{\snum}{S1}
% Prepend supplemental chapter to equation list
\renewcommand{\theequation}{\snum.\arabic{equation}}
现在像往常一样将方程式添加到文档中 - S1 将添加到所有方程式编号中。(我使用宏指定 S1 来演示这将适用于枚举列表等生成的前缀。)
添加一个方程式并从同一文档中引用它将包含 S1 及其所有引用。
\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{xr}
% Define chapter number
\newcommand{\snum}{S1}
% Prepend supplemental chapter to equation list
\renewcommand{\theequation}{\snum.\arabic{equation}}
\begin{document}
% Equation to be referenced
\begin{eqnarray}
\label{eq:myequation}
a=b
\end{eqnarray}
% Reference the equation as you normally would
Hello, the equation is \ref{eq:myequation}
\end{document}
编译将输出以下内容:
现在,要在另一个文档中引用此等式,只需在序言中使用标准 xr 方法:
\usepackage{xr}
\externaldocument{supplemental}
照常引用方程式:
\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{xr}
\externaldocument{supplemental}
\begin{document}
I'm cross-referencing to Equation \ref{eq:myequation}!
\end{document}
这将输出:
我认为这个解决方案是理想的,因为文档包含引用的方程式是呈现(交叉)引用的权威。您可以将方程式从正文移动到补充文件,而不必担心重新格式化任何引用(只要标签名称得以保留)。
我想类似的方法可以适用于任何引用对象,如果你找出等同于
\renewcommand{\theequation}{\schap.\arabic{equation}}
用于图形、表格等
呼喊这家伙在 08 年弄清楚了方程式前面添加技巧。
答案3
\newcount\suppl
\suppl0
\def\Ref#1{\ifnum\suppl<1 \ref{#1} \else S\ref{#1}\fi}
并且在补充材料的开头你应该写上\suppl1
。当然,你应该写Eq.~\Ref{eqn:first}
而不是Eq.~\ref{eqn:first}
。
答案4
您的需求似乎与该包的用途类似cleveref
。我个人认为这些参考资料这里和那里非常简单并且适合测试和感受。
例如:
\documentclass[11pt]{article}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{cleveref}
\crefname{equation}{Eq. S}{equations}
\begin{document}
\begin{align}
y&=a_1x+b_1\label{eqn:1}
\end{align}
\noindent
Standard equation reference (\textbackslash ref): \ref{eqn:1}\\
Cleveref equation reference (\textbackslash cref): \cref{eqn:1}
\begin{figure}[ht]\centering\rule{0.5\linewidth}{0.1\linewidth}\caption{First figure}\label{fig:1}\end{figure}
\begin{equation}
\begin{array}{l}
\displaystyle \int 1 = x + C\\
\displaystyle \int x = \frac{x^2}{2} + C \\
\displaystyle \int x^2 = \frac{x^3}{3} + C
\end{array}
\label{eq:xdef}
\end{equation}
\noindent
Standard figure reference (\textbackslash ref): \ref{fig:1}\\
Cleveref figure reference (\textbackslash cref): \cref{fig:1}\\
And here is the reference using cleveref: \cref{eq:xdef}
\end{document}
- 引用指令有两种形式
\cref
,\Cref
分别用于添加小写和大写。 - 我在序言部分自
Equation
定义了前缀。Eq. S