我正在尝试使用 xr 在两个文档之间进行交叉引用。我之前在另一个项目中使用过它,没有任何问题。
这是我收到的错误消息:
(/usr/local/texlive/2018/texmf-dist/tex/latex/tools/xr.sty))
! Incomplete \ifx; all text was ignored after line 12.
<inserted text>
\fi
<*> main
调用\externaldocument
位于主文档的第 12 行。我找不到任何类似的问题。知道发生了什么吗?
谢谢
編輯:
如果 main.tex 中只有这几行,它仍然会失败并出现相同的错误:
\documentclass{article}
\usepackage{xr}
\externaldocument{supporting}
\begin{document}
Test
\end{document}
supporting.aux 文件包含:
\relax
\providecommand\zref@newlabel[2]{}
\providecommand\hyper@newdestlabel[2]{}
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
\global\let\oldcontentsline\contentsline
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global\let\oldnewlabel\newlabel
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\ifx\hyper@anchor\@undefined
\let\contentsline\oldcontentsline
\let\newlabel\oldnewlabel
\fi}
\fi}
\global\let\hyper@last\relax
\gdef\HyperFirstAtBeginDocument#1{#1}
\providecommand\HyField@AuxAddToFields[1]{}
\providecommand\HyField@AuxAddToCoFields[2]{}
\bibstyle{pnas-new}
\babel@aux{english}{}
\newlabel{LastPage}{{}{1}{}{page.1}{}}
\xdef\lastpage@lastpage{1}
\xdef\lastpage@lastpageHy{1}
\expandafter\ifx\csname c@section@totc\endcsname\relax\newcounter{section@totc}\fi\setcounter{section@totc}{0}
\expandafter\ifx\csname c@figure@totc\endcsname\relax\newcounter{figure@totc}\fi\setcounter{figure@totc}{0}
\expandafter\ifx\csname c@table@totc\endcsname\relax\newcounter{table@totc}\fi\setcounter{table@totc}{0}
\expandafter\ifx\csname c@NAT@ctr@totc\endcsname\relax\newcounter{NAT@ctr@totc}\fi\setcounter{NAT@ctr@totc}{0}
\expandafter\ifx\csname c@movie@totc\endcsname\relax\newcounter{movie@totc}\fi\setcounter{movie@totc}{0}
\expandafter\ifx\csname c@dataset@totc\endcsname\relax\newcounter{dataset@totc}\fi\setcounter{dataset@totc}{0}
\expandafter\ifx\csname c@SItext@totc\endcsname\relax\newcounter{SItext@totc}\fi\setcounter{SItext@totc}{0}
外部文档是PNAS 模板来自 overleaf。
答案1
更新 xr
已更新此修复版本
[2019/01/05 v5.04 eXternal References (DPC)]
似乎我最后一次编辑代码是xr
在 1994 年。感觉就像昨天一样......
xr
不接受文件\if
中的测试aux
。修复方法相对简单,如下所示,我将尝试在下一个版本中进行更新。
\documentclass{article}
\usepackage{xr}
\makeatletter
\long\def\XR@test#1#2#3#4\XR@{%
\let\XR@next\@gobbletwo
\ifx#1\newlabel
\let\XR@next\@firstoftwo%
\else\ifx#1\@input
\let\XR@next\@secondoftwo
\fi\fi
\XR@next{\newlabel{\XR@prefix#2}{#3}}{\edef\XR@list{\XR@list#2\relax}}%
\ifeof\@inputcheck\expandafter\XR@aux
\else\expandafter\XR@read\fi}
\makeatother
\externaldocument{supporting}
\begin{document}
Test
\end{document}
原始答案
嗯,其实这就足够了
\expandafter\ifx\csname wibble\endcsname\relax\relax\fi
在引用的辅助文件中。
可能xr
可以更好地防御辅助文件中的奇怪代码,我稍后会查看,但与此同时,如果您引用辅助文件的副本并在副本中删除该块,您就可以处理您的文档
\expandafter\ifx\csname c@section@totc\endcsname\relax\newcounter{section@totc}\fi\setcounter{section@totc}{0}
\expandafter\ifx\csname c@figure@totc\endcsname\relax\newcounter{figure@totc}\fi\setcounter{figure@totc}{0}
\expandafter\ifx\csname c@table@totc\endcsname\relax\newcounter{table@totc}\fi\setcounter{table@totc}{0}
\expandafter\ifx\csname c@NAT@ctr@totc\endcsname\relax\newcounter{NAT@ctr@totc}\fi\setcounter{NAT@ctr@totc}{0}
\expandafter\ifx\csname c@movie@totc\endcsname\relax\newcounter{movie@totc}\fi\setcounter{movie@totc}{0}
\expandafter\ifx\csname c@dataset@totc\endcsname\relax\newcounter{dataset@totc}\fi\setcounter{dataset@totc}{0}
\expandafter\ifx\csname c@SItext@totc\endcsname\relax\newcounter{SItext@totc}\fi\setcounter{SItext@totc}{0}