删除章节和小节的编号

删除章节和小节的编号

我找到了这个回答删除章节中的编号,但我也不需要在sub- 和subsubsections 上编号。

我尝试添加第二个 def,但随后又显示数字Section。我对 Latex 还不太熟悉,不太清楚此代码块中发生了什么。

原来的:

\makeatletter
\def\@seccntformat#1{%
  \expandafter\ifx\csname c@#1\endcsname\c@section\else
  \csname the#1\endcsname\quad
  \fi}
\makeatother

矿:

\makeatletter
\def\@seccntformat#1{%
  \expandafter\ifx\csname c@#1\endcsname\c@section\else
  \csname the#1\endcsname\quad
  \fi}

\def\@seccntformat#1{%
  \expandafter\ifx\csname c@#1\endcsname\c@subsection\else
  \csname the#1\endcsname\quad
  \fi}
\makeatother

答案1

由于您不需要编号,因此使用\setcounter{secnumdepth}{0}

\documentclass{article}
\setcounter{secnumdepth}{0}
\begin{document}
  \section{A section}
  \subsection{A sub section}
  \subsubsection{A sub sub section}
\end{document}

在此处输入图片描述

答案2

您必须以这种方式嵌套定义:

\makeatletter
\def\@seccntformat#1{%
  \expandafter\ifx\csname c@#1\endcsname\c@section\else
  \expandafter\ifx\csname c@#1\endcsname\c@subsection\else
  \expandafter\ifx\csname c@#1\endcsname\c@subsubsection\else
  \csname the#1\endcsname\quad
  \fi\fi\fi}
\makeatother

平均能量损失

\documentclass{article}

\makeatletter
\def\@seccntformat#1{%
  \expandafter\ifx\csname c@#1\endcsname\c@section\else
  \expandafter\ifx\csname c@#1\endcsname\c@subsection\else
  \expandafter\ifx\csname c@#1\endcsname\c@subsubsection\else
  \csname the#1\endcsname\quad
  \fi\fi\fi}
\makeatother

\begin{document}
\section{Section}
\subsection{Subsection}
\subsubsection{Subsubsection}
\end{document} 

输出

在此处输入图片描述

答案3

该代码仅用于从部分中删除。但是,为了删除编号,最简单的方法是将其设置secnumdepth为 0:

\setcounter{secnumdepth}{0}

我还将展示如何改进您提供的代码以进行多项测试。

\makeatletter
\renewcommand\@seccntformat[1]{\csname prepend@#1\endcsname}
\newcommand{\prepend@section}{\thesection\quad}
\newcommand{\prepend@subsection}{\thesubsection\quad}
\newcommand{\prepend@subsubsection}{\thesubsubsection\quad}
\makeatother

如果您想删除小节标题前面的数字,但将其保留在目录中(这可能是采用这种方式而不是使用的原因secnumdepth),只需注释掉该\prepend@subsubsection行。

所发生的情况是,\subsubsection将会执行\@seccntformat{subsubsection},进而执行\csname prepend@subsubsection\endcsname;如果该行被注释掉,则没有\prepend@subsubsection可用的定义,因此 TeX 会将\csname...\endcsname构造视为等同于\relax,因此它什么也不做。

答案4

或者简单的选项 - 使用 * 版本。您必须对每个部分/小节等执行此操作。但许多环境都有一个选项,其中 * 会抑制编号。例如 \section*{Introduction}。

相关内容