更改 LaTeX 章节格式

更改 LaTeX 章节格式

我使用以下命令创建了一本书的各个部分:

\section{Content}

在 PDF 中(以及在目录中)它看起来像这样:

1.1 内容

我想将其改为“内容 1.1”,而不是“1.1 内容”。我该怎么做?提前致谢!

示例代码:

\documentclass[twoside, 10pt]{book}
\usepackage[]{geometry}
\usepackage[explicit]{titlesec}
\usepackage{titletoc}
\usepackage{tocloft}
\titleformat{\section}{\Large\bfseries}{}{0pt}{#1\enspace\thesection}
\titlecontents{section}[15pt]{}%
{}{\partname{}}%
{\cftdotfill{\cftdotsep}\contentspage}%
\usepackage{fancyhdr}%header & footer
\usepackage[english]{babel}
\usepackage{blindtext}

\pagestyle{fancy}
\fancyhf{}
\fancyhead[RE]{\leftmark}
\fancyhead[LO]{\rightmark}
\fancyhead[LE,RO]{\thepage}
\renewcommand{\headrulewidth}{0.8pt}

\begin{document}
    \tableofcontents
    \chapter{chapter}
    \section{Content}
    \blindtext
    \pagebreak
    \blindtext
    \pagebreak
    \blindtext
\end{document}

答案1

使用包来扩展功能总是好的。但是,如果您处于困境中,您可以使用以下方法来操纵/更改基本功能\@sect\l@section实现您想要的功能。

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

\documentclass{book}

\usepackage{fancyhdr,etoolbox}
\usepackage{lipsum}

\pagestyle{fancy}
\fancyhf{}% Clear header/footer
\fancyhead[RE]{\leftmark}
\fancyhead[LO]{\rightmark}
\fancyhead[LE,RO]{\thepage}
\renewcommand{\headrulewidth}{0.8pt}

\makeatletter
% Update placement of sectional units within text
% \patchcmd{<cmd>}{<search>}{<replace>}{<success>}{<failure>}
\patchcmd{\@sect}% <cmd>
  {\interlinepenalty \@M #8}% <search>
  {\hskip #3\relax\@svsec}% <replace>
  {}{}% <success><failure>
\patchcmd{\@sect}% <cmd>
  {\hskip #3\relax\@svsec}% <search>
  {\interlinepenalty \@M #8}% <replace>
  {}{}% <success><failure>
\renewcommand{\@seccntformat}[1]{\quad\csname the#1\endcsname}

% Reverse display of numbering and title in ToC
\patchcmd{\@sect}% <cmd>
  {\ifnum #2>\c@secnumdepth \else 
    \protect \numberline {\csname the#1\endcsname }%
   \fi #7}% <search>
  {#7 \protect\quad \ifnum #2>\c@secnumdepth \else
    \csname the#1\endcsname
   \fi}% <replace>
  {}{}% <success><failure>

% Change section mark in headers
\renewcommand{\sectionmark}[1]{%
  \markright{\MakeUppercase{#1\ \ifnum\c@secnumdepth>\z@ \thesection}}%
}
\makeatother

\begin{document}

\tableofcontents

\chapter{A chapter}
\section{A section}
\subsection{A subsection}
\sloppy\lipsum[1-50]

\end{document}

由于我们正在更新,因此\@sect变化反映在所使用的每个部分单元中(\section,,,...)。\subsection\subsubsection

答案2

您不应同时使用titletoctocloft以避免冲突。这是一个简单的解决方案。由于我不明白\partname{}您的代码在做什么,所以我删除了它。

\documentclass[twoside, 10pt]{book}
\usepackage[]{geometry}
\usepackage[explicit]{titlesec}
\usepackage{titletoc}
\titleformat{\section}{\Large\bfseries}{}{0pt}{#1\enspace\thesection}
\titlecontents{section}[15pt]{}%
{}{}%\partname{}
{\enspace\thecontentslabel\hspace{0.2em}\titlerule*[0.67pc]{.}\contentspage}%
\usepackage{fancyhdr}%header & footer
\usepackage[english]{babel}
\usepackage{blindtext}

\pagestyle{fancy}
\fancyhf{}
\fancyhead[RE]{\leftmark}
\fancyhead[LO]{\rightmark}
\fancyhead[LE,RO]{\thepage}
\renewcommand{\headrulewidth}{0.8pt}

\begin{document}

    \tableofcontents
    \chapter{chapter}
    \section{Content}
    \blindtext
    \pagebreak
    \blindtext
    \pagebreak
    \blindtext

\end{document} 

在此处输入图片描述

编辑:这里有一个代码,它可以替换fancyhdr标题titleps并执行您想要的操作:

\documentclass[twoside, 10pt]{book}
\usepackage[]{geometry}
\usepackage[explicit, pagestyles]{titlesec}
\usepackage{titletoc}
\titleformat{\section}{\Large\bfseries}{}{0pt}{#1\enspace\thesection}
\titlecontents{section}[15pt]{}%
{}{}%
{\enspace\thecontentslabel\hspace{0.2em}\titlerule*[0.67pc]{.}\contentspage}%
\usepackage[english]{babel}
\usepackage{blindtext}
}
\newpagestyle{mine}{%
\setheadrule{0.8pt}
\headrule
\sethead[\thepage][][\ifthechapter{\MakeUppercase{\chaptername} \thechapter\quad}{}\MakeUppercase{\chaptertitle}]%
{\MakeUppercase{\sectiontitle}\enspace\thesection}{}{\thepage}
}%
\pagestyle{mine}

\begin{document}

    \tableofcontents
    \chapter{chapter}
    \section{Content}
    \blindtext
    \pagebreak
    \blindtext
    \pagebreak
    \blindtext
    \pagebreak
    \blindtext
    \pagebreak
    \blindtext

\end{document} 

在此处输入图片描述 在此处输入图片描述

相关内容