从不同的子文件引用 ExPex 示例?

从不同的子文件引用 ExPex 示例?

有什么方法可以让子文件正确引用 ExPex 示例编号?假设我有一个包含两个子文件的主文件。一个子文件包含一个 ExPex 示例,另一个子文件包含对该示例的引用(使用命令\getref)。这在主文件中产生的结果是:

主文件:

这是正确的,我对这个输出没有任何问题。但是,当我将 fileB.tex 编译为子文件(引用 fileA.tex 中的 ExPex 示例的文件)时,我得到了以下信息:

文件B:

我想要的是 fileB 读取:

这是对(1)的引用。

subfiles有什么方法可以解决这个问题吗?还是/有问题expex?我尝试使用包xr让子文件相互指向,但没用。我需要这个来写一篇论文,我将编写单独的章节,这些章节在某些情况下会指向其他章节的示例。\ref在引用章节、表格等时,我在跨子文件使用该命令时没有遇到任何问题,但仍然希望找到一种交叉引用 ExPex 示例的方法。任何帮助都将不胜感激,谢谢!

MWE 包含 main.tex 的代码:

\documentclass{article}

\usepackage{expex}
\usepackage{subfiles}

\begin{document}

\subfile{fileA}
\subfile{fileB}

\end{document}

文件A.tex:

\documentclass[./main]{subfiles}

\begin{document}

\section{Original}

\ex<ex1> This is a test.
\xe

\end{document}

和文件B.tex:

\documentclass[./main]{subfiles}

\begin{document}

\section{Reference}

This is a reference to (\getref{ex1}).

\end{document}

答案1

将以下几行添加到主文件的前言中:

\gathertags
\input{XXX-tags}% XXX is the name of the main file (without .tex)

在对子文件进行 LaTeX 处理之前,至少在主文件上运行一次 LaTeX 来收集标签。同样,每当另一个子文件中的某些标签发生变化时,您都必须在主文件上再次运行 LaTeX 才能将新信息写入XXX-tags.tex

在您的示例中,该文件main.tex看起来像

\documentclass{article}

\usepackage{expex}
\usepackage{subfiles}
\gathertags      % <<<<<<<<<<<<<<<<<<<<<<<<
\input{main-tags}% <<<<<<<<<<<<<<<<<<<<<<<<
\begin{document}

\subfile{fileA}
\subfile{fileB}

\end{document}

运行后pdflatex main你就可以执行了pdflatex fileB,并将获得对的引用(1)

答案2

我认为,\inlcude对于这种情况来说,应该非常完美。如果您使用宏按章节拆分文档\chapter,则可以避免\includeonly在序言中附加参考文献的所有麻烦。但要注意,\include它会产生额外的分页符,类似于\chapter,因此您不应该将它用于拆分为章节、小节等的文档。这将是唯一的不便之处。

考虑以下自包含文件的代码,该文件生成另外三个文件以包含:chapeter1.texchapter2.texchapter3.tex。该文档分为几章,通过包含在主文件中\include。例如,如果我只想制作第 2 章,我只需附加\includeonly{chapter2}在序言中即可。所有参考资料仍然有效

\begin{filecontents*}[overwrite]{chapter1.tex}
\chapter{First}
\kant[1][1]

\begin{table}[tbh]
  \caption{Data in chapter 1}\label{tab:ch1}
\end{table}

References: \cref{fig:ch2,fig:ch3,tab:ch3}.
\end{filecontents*}
%
\begin{filecontents*}[overwrite]{chapter2.tex}
\chapter{Second}
\kant[1][2]

\begin{figure}[tbh]
  \caption{Graph in chapter 2}\label{fig:ch2}
\end{figure}

References: \cref{tab:ch1,fig:ch3,tab:ch3}.
\end{filecontents*}
%
\begin{filecontents*}[overwrite]{chapter3.tex}
\chapter{Third}
\kant[1][3]

\begin{figure}[tbh]
  \caption{Graph in chapter 3}\label{fig:ch3}
\end{figure}

\kant[1][4]

\begin{table}[tbh]
  \caption{Data in chapter 1}\label{tab:ch3}
\end{table}

Refereces: \cref{tab:ch1}, \cref{fig:ch2}.
\end{filecontents*}
%%%
\documentclass{report}
\usepackage{kantlipsum}
\usepackage[colorlinks]{hyperref}
\usepackage[noabbrev]{cleveref}

\includeonly{chapter2}


\begin{document}
\include{chapter1}
\include{chapter2}
\include{chapter3}
\end{document}

在此处输入图片描述

相关内容