我正在尝试编辑我大学的 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)会对现有的目录造成很大干扰,我宁愿只处理现有的可用命令,而不用其他软件包。
目前我已经成功实现了这一点,但仍有一些修补工作要做:
及附录:
我的问题是:
- 有人能帮我实现所需的目录吗?要么在 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 合并到所需的目录中以使其匹配?
- 有人可以为我分解一下宏吗?我知道这很多,但我还是很感激,粗略的分解就可以了。
我尽力推出 MWE。我不确定如何处理包含文件,因此我创建了一个虚拟的所有内容并将其放在 zip 文件中:
答案1
与往常一样,查找和理解其他人在cls
文件中所做的更改有点困难。
就我个人而言,我认为要求学生使用给定的课程文件,同时又要求他们更改某些内容是不可接受的。当我提供文件时cls
,我有义务提供一个课程文件,学生无需编辑该文件即可实现我要求他们做的请求。
为了简单起见,我将分别介绍您的内容。
论文.tex
这是您的主文件,您应该在此处添加内容,最好使用\include
and/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}
结果
最后,您的目录看起来像您想要的那样,包括附录。