根据此主题 包含传递参数的文件
它应该很简单
\def\thetitle{longtitle}
\include{text}
它确实运行得很好,但不适用于目录。
在“文本”文件中,我有一行手动将标题添加到我的目录中,并且所有页面都引用最后添加的长标题
\phantomsection
\addcontentsline{toc}{chapter}{\bf \thetitle}
在主文件中
\documentclass[10pt,a4paper]{report}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{hyperref}
\begin{document}
\tableofcontents
\def\thetitle{title1}
\include{test}
\def\thetitle{title2}
\include{test}
\end{document}
目录包含两次 title2,并且都指向同一页面,即第二个页面。
答案1
该文件test
被包含两次:
\begin{document}
\tableofcontents
\def\thetitle{title1}
\include{test} % first
\def\thetitle{title2}
\include{test} % second
\end{document}
该\addcontentsline
命令将其操作写入.aux
文件。在本例中,它进入.aux
包含文件的文件中test.aux
。
通过调用\include{test}
两次,第二条\include
语句将覆盖test.aux
。因此,最后,将仅包含第二次调用(带有)test.aux
的数据。写入文件时,读取 两次,您将获得带有两次的内容条目。\include{test}
title2
.toc
test.aux
title2
因此 的文件\include
必须是唯一的,同一个文件不能在一条语句中使用多次\include
。如果要两次包含某个文件,则必须求助于\input
。或者可以使用操作系统层的技巧,例如将文件链接到不同的名称以获取 的唯一名称\include
。