1. 简介

1. 简介
\section{Introduction}

给出了类似

1. 简介

我怎样才能获得以下标题?

第 1 节 简介

答案1

无需使用hyperref并且在默认文档类中,您可以根据是否在内\@sect进行有条件地插入:Section~\section

在此处输入图片描述

\documentclass{article}
\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
\makeatletter
\def\@seccntformat#1{\csname the#1\endcsname.\quad}
\patchcmd{\@sect}% <cmd>
  {\relax\@svsec}% <search>
  {\relax\ifnum#2=1\relax Section~\fi\@svsec}% <replace>
  {}{}% <success><failure>
\makeatother
\begin{document}
\section{A section}\label{section}
\subsection{A subsection}
See Section~\ref{section}.
\end{document}

补丁由etoolbox\patchcmd。它搜索\relax\@svsec并在其间插入条件。条件检查节单元的级别是否与“级别 1”(的级别\section)匹配,就像查看 中的定义时的情况一样article.cls(的第二个参数\@startsection):

\newcommand\section{\@startsection {section}{1}{\z@}%
                                   {-3.5ex \@plus -1ex \@minus -.2ex}%
                                   {2.3ex \@plus.2ex}%
                                   {\normalfont\Large\bfseries}}

有关组件的详细信息\@startsection,请参阅在哪里可以找到类似\@startsectionLaTeX 的命令的帮助文件或文档?

答案2

您可以使用 TeX 的一个非常有用的功能;一个名为的命令

\csname foo\endcsname

如果没有定义,将会被默默忽略(实际上\relax会被执行,但不执行任何操作) 。\foo

这样做

\documentclass{article}
\makeatletter
\def\@seccntformat#1{\csname named#1\endcsname\csname the#1\endcsname.\quad}
\makeatother
\newcommand{\namedsection}{Section }

\begin{document}
\section{A section}\label{section}
\subsection{A subsection}
See Section~\ref{section}.
\end{document}

你达到了你的目标。

在此处输入图片描述

如果您还想在小节编号前添加“小节”,只需添加

\newcommand{\namedsubsection}{Subsection }

该宏的\@seccntformat描述与类似的技巧类似,在TeX 常见问题解答, 看调整章节编号的呈现方式

相关内容