在多列上下文中定义专用的 ToC

在多列上下文中定义专用的 ToC

我正在制作一份飞机清单,这是我发现一些 Latex 函数的一种方法。

因此,由于 mulitcols 包,检查表打印在 A4 纸上,分成两列。文档分成不同的章节(常规检查表、紧急检查表……)。因此,这似乎表现良好。

每列都有一个专用编号(代替页码),并且该编号打印在每列的标题中。(这里也有我预期的结果,可能不是最好的方式)

我想为每个章节制作一个专用的目录:常规检查表的第一页将列出常规检查表程序。紧急情况章节将列出紧急程序,...目录应按如下方式呈现数据:检查表名称.......{col number}

但不幸的是,在尝试了几次 tocloft 包后,我还是没有得到我想要的结果。列号没有按预期检索和显示(它从 0 开始,而不是 3,...),数据显示得也不好。此外,我不知道如何避免在正常清单目录中显示紧急清单...

所以,如果你知道我该怎么做。

我的代码在背面: https://www.overleaf.com/read/vjvjpfrryzvh

\addcontentsline 在我的清单环境中定义为第 236 行(我需要对其进行处理以简化内容并提高代码的可读性):

%add counter for each checklist created (not used, but in case...)
\refstepcounter{checklist}
%prepare the print of the TOC 
%TODO: correct the implantation in order to have 
%Cheklist name ...... colnumber
\phantomsection
\addcontentsline{cll}{figure}{\protect\numberline{\thecolumn}#1}\par
%Check list are printed as Table
\setlength{\tabcolsep}{0.5em} % for the horizontal padding
\begin{tabular}{p{\dimexpr \linewidth-2\tabcolsep}}
    \toprule
        \multicolumn{1}{c}{\textbf{\uppercase{#1}}}\\
    \midrule

列号的定义/计算是在 \AddEverypageHook 定义第 76 行中完成的。我用它来生成标题。

%3rd - add header above each pages.
%Even if not mandatory, we provide if for odd and even pages
\AddEverypageHook{\ifdim\columnwidth<\textwidth
  \ifodd\value{page}\rlap{\hspace{\oddsidemargin}%
      \raisebox{\dimexpr-\topmargin-\headheight}[0pt][0pt]%
      {\begin{minipage}[t]{\dimexpr2\linewidth+\columnsep }
        \begin{multicols*}{2}
        \begin{tabularx}{\linewidth}{|c|>{\setlength\hsize{1.8\hsize}}X|>{\setlength\hsize{0.2\hsize}}X|}
        \hline
        \large JA4032 & \centering \large \textbf{\leftmark} &  \large \stepcounter{column}\thecolumn \\
        \hline
        &   \multicolumn{1}{|c|}{\today} & \\ \hline
        \end{tabularx}
        \begin{tabularx}{\linewidth}{|c|>{\setlength\hsize{1.8\hsize}}X|>{\setlength\hsize{0.2\hsize}}X|}
        \hline
        \large JA4032 & \centering \large \textbf{\leftmark} & \large \stepcounter{column}\thecolumn \\
        \hline
        &   \multicolumn{1}{|c|}{\today} & \\
        \hline
        \end{tabularx}
        \end{multicols*}
        \end{minipage}}
        }
  \else\rlap{\hspace{\evensidemargin}%
      \raisebox{\dimexpr-\topmargin-\headheight}[0pt][0pt]%
      {\begin{minipage}[t]{\dimexpr2\linewidth+\columnsep }
        \begin{multicols*}{2}
        \begin{tabularx}{\linewidth}{|c|>{\setlength\hsize{1.8\hsize}}X|>{\setlength\hsize{0.2\hsize}}X|}
        \hline
        \large JA4032 & \centering \large \textbf{\leftmark} & \large \stepcounter{column}\thecolumn \\
        \hline
        &  \multicolumn{1}{|c|}{\today} & \\
        \hline
        \end{tabularx}
        \begin{tabularx}{\linewidth}{|c|>{\setlength\hsize{1.8\hsize}}X|>{\setlength\hsize{0.2\hsize}}X|}
       \hline
       \large JA4032 & \centering \large \textbf{\leftmark} & \large \stepcounter{column}\thecolumn \\
       \hline
       &   \multicolumn{1}{|c|}{\today} & \\
       \hline
       \end{tabularx}
       \end{multicols*}
       \end{minipage}}
       }
  \fi%
\fi}

并且我定义并使用了tocloft包第128行。

%------------------------------------------------------
%Definition for the Table of contents
%TOC is printed in the first pages of a chapter (Normal Checlist, Emergency...
%TOC presents the name of the checklist and the column number where is set the checklist
%TODO: Correct the column number: printed column number is not the good one. 

%TODO: customize to print only the checklist items set in the current chapter
\usepackage{tocloft}
\newcommand{\listechecklistname}{Normal Checklist}
\newlistof{checklist}{cll}{\listechecklistname}

PS:可能到 overleaf 项目的链接不是很有效..但它具有在上下文中呈现数据的优势..

非常感谢你的支持

相关内容