![主目录显示全局编号,本地目录显示本地编号方案](https://linux22.com/image/453114/%E4%B8%BB%E7%9B%AE%E5%BD%95%E6%98%BE%E7%A4%BA%E5%85%A8%E5%B1%80%E7%BC%96%E5%8F%B7%EF%BC%8C%E6%9C%AC%E5%9C%B0%E7%9B%AE%E5%BD%95%E6%98%BE%E7%A4%BA%E6%9C%AC%E5%9C%B0%E7%BC%96%E5%8F%B7%E6%96%B9%E6%A1%88.png)
根据问题SOP(标准操作程序)文件的两页编号方案,我得到了这个 MWE。
\documentclass{article}
\usepackage{atenddvi} % added <<<<<<<<<<<<<
\usepackage{lastpage} % added <<<<<<<<<<<<<
\usepackage[user]{zref}% added <<<<<<<<<<<<<
\usepackage{titletoc}
\usepackage{kantlipsum}% ONLY dummy text
\usepackage{fancyhdr}
\fancypagestyle{firststyle}{% changed <<<<<<<<<<<<<<<<
\fancyhf{} %clear header and footer
\fancyfoot[R]{\stepcounter{pageaux}
\fbox{%
\begin{tabular}{r}
Global Page: \thepage/\pageref{LastPage} \\
SOP Page: \thepageaux/\ref{\currentauxref} \\
\end{tabular}}
}}
\pagestyle{firststyle}
%%********************************* from https://tex.stackexchange.com/a/82560/161015
\newcounter{pageaux}
\def\currentauxref{PAGEAUX1}
\makeatletter
\newcommand{\resetpageaux}{%
\clearpage
\edef\@currentlabel{\thepageaux}\label{\currentauxref}%
\xdef\currentauxref{PAGEAUX\thepage}%
\setcounter{pageaux}{0}}
\AtEndDvi{\edef\@currentlabel{\thepageaux}\label{\currentauxref}}
\makeatother
%%*********************************
\begin{document}
\thispagestyle{empty}
\tableofcontents
\newpage
\addcontentsline{toc}{section}{SOP 1 - Administration}
\resetpageaux% reset aux page numbers
\startlist{toc}
\printlist{toc}{}{\section*{Contents - SOP 1}}
\section{OBJECTIVE}
\kant[9]
\section{RESPONSIBILITY}
\kant[2]
\section{PROCEDURES}
\kant[9]
\stopcontents
\newpage
\setcounter{section}{0}
\addcontentsline{toc}{section}{SOP 2 - Production}
\resetpageaux% reset aux page numbers
\startlist{toc}
\printlist{toc}{}{\section*{Contents - SOP 2}}
\section{OBJECTIVE}
\kant[1-8]
\section{RESPONSIBILITY}
\kant[1-8]
\section{PROCEDURES}
\kant[1-8]
\stopcontents
\end{document}
有没有办法让主目录显示全局编号,让每个 SOP 的目录显示本地编号?
答案1
该解决方案需要两个步骤。(不使用titletoc
)
在第一步中,编译各个 SOP 文件,生成要在第二步中使用的各个 ToC 文件。为方便起见,每个 SOP 的内容都放在单独的文件中,如下所示SOP<number>content.tex
请注意,每个 SOP 的第一个本地页面为 1,因为它应该是本地页码。
第二步创建包含所有 SOP 内容的最终文档,生成全局 TOC 并使用第一步创建的本地 ToC。
所有文件必须位于同一目录中。
文件SOP1.tex
(一页)
%%% file SOP1.tex
\documentclass{article}
\usepackage{kantlipsum}% ONLY dummy text
\begin{document}
\tableofcontents
\input{\jobname contents}
\end{document
文件SOP2.tex
(9页)
%%% file SOP2.tex
\documentclass{article}
\usepackage{kantlipsum}% ONLY dummy text
\begin{document}
\tableofcontents
\input{\jobname contents}
\end{document}
文件SOP1contents.tex
%%% file SOP1contents.tex
\addcontentsline{toc}{section}{SOP 1 - Administration}
\section{OBJECTIVE}
\kant[9]
\section{RESPONSIBILITY}
\kant[2]
\section{PROCEDURES}
\kant[9]
文件SOP2contents.tex
%%% file SOP2contents.tex
\addcontentsline{toc}{section}{SOP 2 - Production}
\section{OBJECTIVE}
\kant[1-8]
\section{RESPONSIBILITY}
\kant[1-8]
\section{PROCEDURES}
\kant[1-8]
和!main.tex
位于同一目录中的文件(11页)SOP1.tex
SOP2.tex
%% File main.tex
\documentclass{article}
\usepackage{atenddvi} % added <<<<<<<<<<<<<
\usepackage{lastpage} % added <<<<<<<<<<<<<
\usepackage[user]{zref}% added <<<<<<<<<<<<<
\usepackage{kantlipsum}% ONLY dummy text
\usepackage{fancyhdr}
\fancypagestyle{firststyle}{% changed <<<<<<<<<<<<<<<<
\fancyhf{} %clear header and footer
\fancyfoot[R]{\stepcounter{pageaux}
\fbox{%
\begin{tabular}{rr}
Global Page:&\thepage/\pageref{LastPage} \\
SOP Page: & \thepageaux/\ref{\currentauxref} \\
\end{tabular}}
}}
\pagestyle{firststyle}
%%********************************* from https://tex.stackexchange.com/a/82560/161015
\newcounter{pageaux}
\def\currentauxref{PAGEAUX1}
\makeatletter
\newcommand{\resetpageaux}{%
\clearpage
\edef\@currentlabel{\thepageaux}\label{\currentauxref}%
\xdef\currentauxref{PAGEAUX\thepage}%
\setcounter{pageaux}{0}}
\AtEndDvi{\edef\@currentlabel{\thepageaux}\label{\currentauxref}}
\makeatother
%%*********************************
\begin{document}
\thispagestyle{empty}
\tableofcontents
\newpage
\resetpageaux% reset aux page numbers
\input{SOP1.toc} % input toc of SOP 1 <<<<<<<<<<<<<<<<<<<<<,,
\input{SOP1contents}
\newpage
\setcounter{section}{0}
\resetpageaux% reset aux page numbers
\input{SOP2.toc} % input toc of SOP 2 <<<<<<<<<<<<<<<<<<<<<<<<<
\input{SOP2contents}
\end{document}