\cleveref 中 \externaldocument 引用的前缀

\cleveref 中 \externaldocument 引用的前缀

问题最后一个元素的特殊情况为 \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如上所述的前缀?

相关内容