这是一个 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}