解释

解释

我是 Latex 详细格式化功能的新用户... 我很难找到 titlesec 文档来进行我所需的格式化。不幸的是,在线示例对我没有太大帮助...

  • 我正在上作文课。
  • 我需要大写的章节标签,其中包含子章节的章节编号(例如 1.0 INTRODUCTION . . . . . . pg#)
  • 还应包括小节和小小节,分别缩进,不包含任何超出默认行为的内容
  • 附录不必大写,而应标记为“附录 A - 附录标题...页码#)
  • 最后,目录标题应为粗体、居中、大写。

这是我现在的代码:

\documentclass[12pt]{article}
\usepackage{blindtext}

\usepackage{titlesec}
\usepackage{titletoc}
\titleformat{\section} % command
[hang]                 % shape
{\normalsize\bfseries} % format
{\thesubsection}       % label
{1em}                  % Spacing between label and title
{\MakeUppercase}       % before code
\titlespacing{\section}% Set the spacing around the title
{0pt}                  % Left
{0pt}                  % Above
{0pt}                  % Below
\titlecontents{section}[2em]{\vspace{12pt}}{\normalfont\normalsize \contentslabel{2em}}{\hspace*{-2em} \MakeUppercase}{}{}

\titleformat{\subsection} % command
[hang]                 % shape
{\bfseries\normalsize} % format
{\thesubsection}       % label
{1em}                  % Spacing between label and title
{}                     % before code
\titlespacing{\subsection}% Set the spacing around the title
{0pt}                  % Left
{0pt}                  % Above
{0pt}                  % Below

\titleformat{\subsubsection} % command
[runin]                % shape
{\bfseries\normalsize} % format
{\thesubsubsection}    % label
{1em}                % Spacing between label and title
{}                     % before code
[.]                    % after code



\begin{document}
\tableofcontents

% Put this after TOC to keep single spacing in TOC:
\setlength{\parskip}{2ex} %--skip lines between paragraphs
\setlength{\parindent}{0pt} %--don't indent paragraphs  

\vspace{4em} % Would normally be \newpage

\blinddocument

\end{document} 

编译文档

抱歉……我花了五个小时却没有取得什么进展。我想我还在学习很多对我来说很复杂的基础知识……谢谢,Mike

答案1

以下是一种方法:

\documentclass[12pt]{article}
\usepackage{blindtext}
\usepackage{etoolbox}
\usepackage{titlesec}
\usepackage{titletoc}

\titleformat{\section} % command
[hang]                 % shape
{\normalsize\bfseries} % format
{\thesubsection}       % label
{1em}                  % Spacing between label and title
{\MakeUppercase}       % before code
\titlespacing{\section}% Set the spacing around the title
{0pt}                  % Left
{0pt}                  % Above
{0pt}                  % Below

\newcommand\RegToCEntries{
  \titlecontents{section}[2em]
    {\vspace{12pt}}
    {\normalfont\normalsize\contentslabel[\thecontentslabel.0]{2em}\uppercase}
    {\hspace*{-2em}\uppercase}
    {\titlerule*[.75em]{.}\contentspage}
}
\newcommand\AppToCEntries{
  \titlecontents{section}[0em]
    {\vspace{12pt}}
    {\normalfont\normalsize\contentspush{\MakeUppercase{\appendixname}}%
      \contentslabel{-1em}\hspace{2em}\makebox[1em][l]{--}%
    }
    {\hspace*{-2em}}
    {\titlerule*[.75em]{.}\contentspage}
}
\AtBeginDocument{\RegToCEntries}
\pretocmd{\appendix}{\AppToCEntries}{}{}
\patchcmd{\tableofcontents}
  {\contentsname}
  {\hfill\MakeUppercase{\contentsname}\hfill\null}
  {}
  {}

\titleformat{\subsection} % command
[hang]                 % shape
{\bfseries\normalsize} % format
{\thesubsection}       % label
{1em}                  % Spacing between label and title
{}                     % before code
\titlespacing{\subsection}% Set the spacing around the title
{0pt}                  % Left
{0pt}                  % Above
{0pt}                  % Below

\titleformat{\subsubsection} % command
[runin]                % shape
{\bfseries\normalsize} % format
{\thesubsubsection}    % label
{1em}                % Spacing between label and title
{}                     % before code
[.]                    % after code

\begin{document}

\tableofcontents
\clearpage% just for the example
\blinddocument
\appendix
\section{A test appendix}
\section{Another test appendix}

\end{document}

结果:

在此处输入图片描述

解释

  1. 将目录标题居中。

    我使用该etoolbox包进行修补\tableofcontents

    \patchcmd{\tableofcontents}
      {\contentsname}
      {\hfill\MakeUppercase{\contentsname}\hfill\null}
      {}
      {}
    
  2. 章节条目的格式。

    我定义了两个命令\RegToCEntries\AppToCEntries

    \newcommand\RegToCEntries{
      \titlecontents{section}[2em]
        {\vspace{12pt}}
        {\normalfont\normalsize\contentslabel[\thecontentslabel.0]{2em}\uppercase}
        {\hspace*{-2em}\uppercase}
        {\titlerule*[.75em]{.}\contentspage}
    }
    \newcommand\AppToCEntries{
      \titlecontents{section}[0em]
        {\vspace{12pt}}
        {\normalfont\normalsize\contentspush{\MakeUppercase{\appendixname}}%
          \contentslabel{-1em}\hspace{2em}\makebox[1em][l]{--}%
        }
        {\hspace*{-2em}}
        {\titlerule*[.75em]{.}\contentspage}
    }
    

    第一个命令给出了常规部分所需的格式,第二个命令给出了附录部分所需的格式;我使用 添加了附录\contentspush。第一个命令用于\AtBeginDocument

    \AtBeginDocument{\RegToCEntries}
    

    第二个在调用后自动应用\appendix

    \pretocmd{\appendix}{\AppToCEntries}{}{}
    

建议

您的代码集

\titlespacing{\section}% Set the spacing around the title
{0pt}                  % Left
{0pt}                  % Above
{0pt} 

这会抑制章节标题周围的间距;我建议您在最后两个参数中使用正值,这样章节标题相对于周围文本将具有更好的垂直间距。

相关内容