\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
,请参阅在哪里可以找到类似\@startsection
LaTeX 的命令的帮助文件或文档?
答案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 常见问题解答, 看调整章节编号的呈现方式