Префикс для ссылок \externaldocument в \cleveref

Префикс для ссылок \externaldocument в \cleveref

ВопросОсобый случай для последнего элемента с \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как описано выше?

Связанный контент