自定义我的目录

自定义我的目录

我正在尝试编辑我大学的 cls 文件,特别是更改 toc 宏。我拥有的(宏):

\renewcommand*\l@chapter[2]{%
\ifnum \c@tocdepth >\m@ne
\setcounter{secnumdepth}{3}%
\setcounter{tocdepth}{2} %   
\addpenalty{-\@highpenalty}%
\vskip .1cm \@plus \p@ %{the v-distance between the headings in the contents}
\setlength\@tempdima{0.5cm}% %{the distance between the number of the chapter and its title}
\begingroup
\parindent\z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode
\advance \leftskip \@tempdima 
\hskip  -\leftskip 
\etchapterheadstyle{#1}\nobreak
% CCW: The following 3 lines add dots to the chapter TOC listings
\leaders\hbox{$\m@th
    \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
    mu$}\hfill
\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
\penalty\@highpenalty
\endgroup
\fi}

这会在我的论文中产生类似这样的目录:

在此处输入图片描述

例如,摘要在主 tex 文件中添加如下:

\pagenumbering{roman}{
  \newgeometry{left=33mm,right=25mm,top=25mm,bottom=25mm} 
  \addcontentsline{toc}{chapter}{\textbf{ABSTRACT}}
  \include{AbstractV2_B5}
}

我的论文中需要这样的目录:

在此处输入图片描述

使用其他软件包(比如 tocleft)会对现有的目录造成很大干扰,我宁愿只处理现有的可用命令,而不用其他软件包。

目前我已经成功实现了这一点,但仍有一些修补工作要做:

在此处输入图片描述

及附录:

在此处输入图片描述

我的问题是:

  1. 有人能帮我实现所需的目录吗?要么在 cls 文件中进行宏编辑,要么\renewcommand在我的主文本中实现目录。

a) 页码需要居中对齐。

b) “CHAPTER”一词需要稍微向右推,并升高一个空格。

c)每当我通过以下命令缩进“INTRODUCTION”和本章的其余部分时:

\makeatletter
%\renewcommand{\@tocrmarg}{4em}                     
\renewcommand{\@pnumwidth}{3em}
\renewcommand{\l@chapter}{\@dottedtocline{1}{2.35em}{5.5em}}
\renewcommand{\l@section}{\@dottedtocline{2}{7.8em}{2.6em}}
\renewcommand{\l@subsection}{\@dottedtocline{3}{10.4em}{3.6em}}
\renewcommand{\l@subsubsection}{\@dottedtocline{4}{7.4em}{4.5em}}
\makeatother

我还缩进了“摘要”,但这并不是我想要的,就像上图这样

d)我在主文本中使用以下内容添加附录:

\renewcommand\appendixname{APPENDICES}
\addtocontents{toc}{\protect\vskip-2\baselineskip}
\addtocontents{toc}{\addvspace{-2\baselineskip}}  
\appendix
\include{AppendixA_A4} % Appendix A: Title of the appendix %
\include{AppendixB_A4} % Appendix B: Title of the appendix %

但如上图所示,它最终出现了一些对齐问题。如何将 \appendix 合并到所需的目录中以使其匹配?

  1. 有人可以为我分解一下宏吗?我知道这很多,但我还是很感激,粗略的分解就可以了。

我尽力推出 MWE。我不确定如何处理包含文件,因此我创建了一个虚拟的所有内容并将其放在 zip 文件中:

虚拟 \include 文件和 cls 文件以及 MWE.tex

答案1

与往常一样,查找和理解其他人在cls文件中所做的更改有点困难。

就我个人而言,我认为要求学生使用给定的课程文件,同时又要求他们更改某些内容是不可接受的。当我提供文件时cls,我有义务提供一个课程文件,学生无需编辑该文件即可实现我要求他们做的请求。

为了简单起见,我将分别介绍您的内容。

论文.tex

这是您的主文件,您应该在此处添加内容,最好使用\includeand/or \input。我将包替换到另一个文件中,因为我不需要编辑它们。该文件input_titletoc将在最后一节中讨论,它包含根据需要格式化目录的命令。

\documentclass[b5paper,twoside,openany,tocchapterhead,10pt]{TheClass}

\input{input_packages}
\input{input_titletoc}

\begin{document}
    
\addcontentsline{toc}{chapter}{\textbf{ABSTRACT}}
\addcontentsline{toc}{chapter}{\textbf{ACKNOWLEDGEMENTS}}

\tableofcontents

\listoftables

\listoffigures

\addcontentsline{toc}{chapter}{\textbf{LIST OF ALGORITHMS}}

\mainmatter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\chapter{my first chapter}
\section{my first section}
\section{my second section}
\subsection{my first subsection}
\subsection{my second subsection}
\subsubsection{my first subsubsection}
\subsubsection{my second subsubsection}
\section{my third section}

\begin{table}
  \caption{mytable}
\end{table}
\begin{table}
  \caption{mytable}
\end{table}
\begin{table}
  \caption{mytable}
\end{table}

\chapter{my second chapter}
\section{my first section}
\section{my second section}
\subsection{my first subsection}
\subsection{my second subsection}
\subsubsection{my first subsubsection}
\subsubsection{my second subsubsection}
\section{my third section}

\begin{figure}
  \caption{myfigure}
\end{figure}
\begin{figure}
  \caption{myfigure}
\end{figure}
\begin{figure}
  \caption{myfigure}
\end{figure}

\renewcommand\appendixname{APPENDICES}
\appendix

\chapter{my appendice}
\section{my first section}
\section{my second section}
\subsection{my first subsection}
\subsection{my second subsection}
\subsubsection{my first subsubsection}
\subsubsection{my second subsubsection}
\section{my third section}


\chapter{my appendice}
\section{my first section}
\section{my second section}
\subsection{my first subsection}
\subsection{my second subsection}
\subsubsection{my first subsubsection}
\subsubsection{my second subsubsection}
\section{my third section}

\end{document}

类.cls

由于此文件只有200+几行,并且您通过链接提供了它,因此我只会通知您需要更新的地方。

iftocflag在第 160 行,使用以下行更改更新命令:

\iftocflag
  \let\old@chapter = \@chapter
  \def\@chapter[#1]#2{
    \ifnum\c@chapter=0%
      \addtocontents{toc}{\protect\contentsline{part}%
        {\hspace{15pt}\normalsize\etchapterheadstyle{\@chapapp}}{}\\
      }
    \fi%
    \old@chapter[#1]{#2}
  }
\fi

指导老师ifnum\c@chapter=0负责CHAPTER在章节编号上方和章节之前书写,\hspace{15pt}并水平纠正其位移。

个人笔记:在行中227--235,有几个\newtheorem。我不会在类文件中定义它们,而是在样式文件中定义它们。但这种实现更多的是一种偏好,而不是规则。

输入包.tex

我只是将您的软件包分离到一个文件中。它们不会干扰您的主要问题。

思考geometry是无用的。您的类是通过report类和加载构建的b5paper。我在没有编译您的文件的情况下编译了您的文件geometry,它没有改变任何东西,但我可以肯定地说,因为可能有一些我没有识别的隐藏的东西。

\usepackage{titlesec}
\usepackage[english]{babel}
\usepackage{geometry}
\usepackage{tikz}
\usepackage[font=bf]{caption}
\usepackage{array}
\usepackage{booktabs} 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0.25pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0.0cm}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}

\titleformat{\section}
{\normalfont\fontsize{10}{15}\rmfamily\bfseries}
{\thesection}
{1em}
{}

\titleformat{\subsection}
{\normalfont\fontsize{10}{15} \rmfamily\bfseries}
{\thesubsection}
{1em}
{}

\titleformat{\subsubsection}
{\normalfont\fontsize{10}{15}\rmfamily\bfseries}
{\thesubsubsection}
{1em}
{}

\addto\captionsenglish{
  \renewcommand{\contentsname}{\bfseries Table of Contents}%
}

\setlength{\parskip}{1\baselineskip}

输入标题.tex

用于编辑目录外观的主文件。我的答案使用的代码来自我如何编辑目录?基于CTAN 标题以及来自图表/表格列表 - 消除点?——实际上您已经用它来删除表格和图形列表中的点。

每个都\titlecontents{...}格式化一个对象。我编辑了数字以便对齐内容,如我们的示例中所示。Line{\contentslabel[\thecontentslabel]{3.0em}\textsc}负责更改章节名称的外观。

建议:此文件及其说明titletoc可能位于类文件 ( .cls) 或样式文件 ( .sty) 中。如需了解更多信息,请查看风格/课程教程编写自己的包

\usepackage{titletoc}

% Remove dots in list of tables and figures
\makeatletter \renewcommand{\@dotsep}{10000} \makeatother

\titlecontents{chapter}
[7.0em] %5.3
{\bigskip}
{\contentslabel[\thecontentslabel]{3.0em}\textsc}
{\hspace*{-5.5em}\textbf}% unnumbered chapters
{\titlerule*[1pc]{ }\contentspage}[\smallskip]%

\titlecontents{section}
[7.0em] % i
{\smallskip}
{\thecontentslabel\enspace}%\thecontentslabel
{\hspace*{-5.5em}}
{\titlerule*[1pc]{ }\contentspage}%]

\titlecontents{subsection}
[9.0em] %
{\smallskip}
{\thecontentslabel\enspace}%\thecontentslabel
{\hspace*{7.12em}}
{\titlerule*[1pc]{ }\contentspage}

结果

最后,您的目录看起来像您想要的那样,包括附录。

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

相关内容