问题最后一个元素的特殊情况为 \foreach手动更改了引用,并添加了在引用上添加前缀的功能。我可以使用 做同样的事情\cleveref
吗?
(注:这是\cleveref
问题的一个版本自动为来自另一个文档的引用添加前缀?)
方法 1:
有一个\crefex
,或重命名\cref
,允许添加前缀。例如
documentclass{article}
\usepackage{cleveref, xr}
\crefname{equation}{}{}
\crefname{figure}{figure}{Figure}
\newcommand{\crefex}[2][] { %
\cref{#2} %But modify to add #1 as a prefix...
}
\begin{document}
\section{sec1}\label{sec:sec1}
\begin{equation} 1 = 1 \label{eq:eq1} \end{equation}
\begin{figure}\caption{fig1}\label{fig:fig1}\end{figure}
\crefex[TA.]{sec:sec1}, \crefex[TA.]{eq:eq1}, \crefex[TA.]{fig:fig1}
\end{document}
\crefex
如果完成了的话应该输出作为参考。
section TA.1, (TA.1), figure TA.1
方法 2: 或者,它可以自动检测是否存在外部引用,并添加某种定义为变量的前缀?
创建一个名为的文件,external_document.tex
其中包含以下文本,并对其进行几次编译。
\documentclass{article}
\usepackage{cleveref}
\crefname{equation}{}{}
\crefname{figure}{figure}{Figure}
\begin{document}
\section{sec1}\label{sec:sec1}
\begin{equation} 1 = 1 \label{eq:eq1} \end{equation}
\begin{figure}\caption{fig1}\label{fig:fig1}\end{figure}
\cref{sec:sec1}, \cref{eq:eq1}, \cref{fig:fig1}
\end{document}
然后创建另一个文件:
\documentclass{article}
\usepackage{cleveref, xr}
\crefname{equation}{}{}
\crefname{figure}{figure}{Figure}
\externaldocument[EX.]{external_document}
\begin{document}
\section{sec1}\label{sec:sec1}
\begin{equation} 1 = 1 \label{eq:eq1} \end{equation}
\begin{figure}\caption{fig1}\label{fig:fig1}\end{figure}
\cref{sec:sec1}, \cref{eq:eq1}, \cref{fig:fig1}
\subsection{External References}
\cref{EX.sec:sec1}, \cref{EX.eq:eq1}, \cref{EX.fig:fig1}
\end{document}
这将正确地输出内部和外部引用。我们如何添加外部引用的自动检测功能,从而添加\externaldocument
如上所述的前缀?