包含文件的 \jobname 在引用中不起作用

包含文件的 \jobname 在引用中不起作用

这是一个 SmallWorkingExample。

主文件:1.tex

\documentclass[11pt]{book}
\usepackage[hyperfootnotes=false]{hyperref}%
\usepackage{cleveref}%
\usepackage{tcolorbox}%
\newcounter{exp}%[ 
\newtcolorbox%
[%
use counter= exp,%
number within=chapter,%
Crefname={Example}{Examples},%
]%
{example}%
[2][]%
{%
title={EXAMPLE  \thetcbcounter .\notblank{#2}{\hspace{2mm} #2}{}}, #1%
}%

\begin{document}
\chapter{ONE}\label{\jobname-0}
\section{First of ONE}\label{\jobname-1}
\begin{example}[label={exp:\jobname-1}]{~}
xxxxxxxxxxxxxxxxx
\end{example}
See \Cref{exp:1-1} on \cpageref{exp:1-1} in \Cref{1-1} \nameref{1-1}  in \Cref{1-0} \nameref{1-0}

See \Cref{exp:2-1} on \cpageref{exp:2-1} in \Cref{2-1}  \nameref{2-1} in \Cref{2-0} \nameref{2-0}
\include{2}
\end{document}

包含的文件:2.tex

\chapter{TWO}\label{\jobname-0}
\section{First of TWO}\label{\jobname-1}
\begin{example}[label={exp:\jobname-1}]{~}
yyyyyyyyyyyyy
\end{example}
See \Cref{exp:1-1} on \cpageref{exp:1-1} in \Cref{1-1} \nameref{1-1}  in \Cref{1-0} \nameref{1-0}

See \Cref{exp:2-1} on \cpageref{exp:2-1} in \Cref{2-1}  \nameref{2-1} in \Cref{2-0} \nameref{2-0}

对第一章作品的引用,对包括ChapterTWO 不起作用,尽管 LaTeX 编写了2.辅助文件。

如果确实如此,我的生活就会轻松一些。

答案1

如果\jobname仍然应用,则1稍后不会更改。\include{2}\jobname

\include可以稍微改变一下命令,使用第一个参数将当前文件存储在其中\currentjobname

在文档的开始处,\currentjobname默认为,完成后\jobname应该再次显示,因此使用组安全的。\jobname\include{...}\def

在我看来,改变它本身并不是一个好主意\jobname

\documentclass[11pt]{book}
\usepackage{tcolorbox}%
\usepackage[hyperfootnotes=false]{hyperref}%

\usepackage{xpatch}


\makeatletter
\def\currentjobname{\jobname}% 
\xpretocmd{\include}{\def\currentjobname{#1}}{}{}
\makeatother

\newcounter{exp}%[ 

\usepackage{cleveref}%

\newtcolorbox%
[%
use counter= exp,%
number within=chapter,%
Crefname={Example}{Examples},%
]%
{example}%
[2][]%
{%
title={EXAMPLE  \thetcbcounter .\notblank{#2}{\hspace{2mm} #2}{}}, #1%
}%

\begin{document}
\chapter{ONE}\label{\currentjobname-0}
\section{First of ONE}\label{\currentjobname-1}
\begin{example}[label={exp:\currentjobname-1}]{~}
xxxxxxxxxxxxxxxxx
\end{example}
See \Cref{exp:1-1} on \cpageref{exp:1-1} in \Cref{1-1} \nameref{1-1}  in \Cref{1-0} \nameref{1-0}

See \Cref{exp:2-1} on \cpageref{exp:2-1} in \Cref{2-1}  \nameref{2-1} in \Cref{2-0} \nameref{2-0}
\include{2}

\end{document}

2.tex和文件3.tex实际上是相同的,我用它们来表明标签写得正确:

2.tex

\chapter{TWO}\label{\currentjobname-0}
\section{First of TWO}\label{\currentjobname-1}
\begin{example}[label={exp:\currentjobname-1}]{~}
yyyyyyyyyyyyy
\end{example}
See \Cref{exp:1-1} on \cpageref{exp:1-1} in \Cref{1-1} \nameref{1-1}  in \Cref{1-0} \nameref{1-0}

See \Cref{exp:2-1} on \cpageref{exp:2-1} in \Cref{2-1}  \nameref{2-1} in \Cref{2-0} \nameref{2-0}

相关内容