请原谅这个问题的愚蠢简单性,请随时让我参考以前的答案。我对 LaTeX 术语不太熟悉,所以找不到它。
我只想为我的章节标题设置不同的默认格式。我希望它们不是仅仅加粗并且比正文稍大,而是正常粗细、与正文大小相同并且全部大写。
我正在使用这个article
课程。
答案1
您可以使用标题安全包裹:
\documentclass{article}
\usepackage{titlesec}
\usepackage{lipsum}
\titleformat{\section}
{\normalfont\scshape}{\thesection}{1em}{}
\begin{document}
\section{Test Section}
\lipsum[1]
\end{document}
使用小型大写字母作为章节标题:
或者
\documentclass{article}
\usepackage[explicit]{titlesec}
\usepackage{lipsum}
\titleformat{\section}
{\normalfont}{\thesection}{1em}{\MakeUppercase{#1}}
\begin{document}
\section{Test Section}
\lipsum[1]
\end{document}
使用大写字母作为章节标题:
如果您不想使用该titlesec
包,您可以重新定义该\section
命令,如在中实现的那样article.cls
;这里有一个重新定义的例子,使用小型大写字母来获取章节标题:
\documentclass{article}
\makeatletter
\renewcommand\section{\@startsection {section}{1}{\z@}%
{-3.5ex \@plus -1ex \@minus -.2ex}%
{2.3ex \@plus.2ex}%
{\normalfont\scshape}}
\makeatother
\begin{document}
\section{Test Section}
\end{document}
答案2
我想尝试回答这个问题,因为 5 年前我来到这里,认为titlesec
这是最好的方法。但事实可能如此,也可能并非如此。
类别设置对于专家来说可能很明显,但对于 LaTeX 的新用户来说却很模糊。
$(kpsewhich -var-value TEXMFDIST)/tex/latex/base/article.cls
对于 2016 版本,这将导致/usr/local/texlive/2016/texmf-dist/tex/latex/base/article.cls
基于 Unix 的系统。
从文件中提取的文章类的相关部分。
% Do you want numbering?
% Setup Counters using TeX or LaTeX
\newcounter {part}
\newcounter {section}
\newcounter {subsection}[section]
\newcounter {subsubsection}[subsection]
\newcounter {paragraph}[subsubsection]
\newcounter {subparagraph}[paragraph]
% Format Output of Counters
\renewcommand\thepart{\@Roman\c@part}
\renewcommand\thesection{\@arabic\c@section}
\renewcommand\thesubsection{\thesection.\@arabic\c@subsection}
\renewcommand\thesubsubsection{\thesubsection.\@arabic\c@subsubsection}
\renewcommand\theparagraph{\thesubsubsection.\@arabic\c@paragraph}
\renewcommand\thesubparagraph{\theparagraph.\@arabic\c@subparagraph}
% Define Sectioning Commands (\part is the oddball)
\newcommand\part{%
\if@noskipsec \leavevmode \fi
\par
\addvspace{4ex}%
\@afterindentfalse
\secdef\@part\@spart}
\def\@part[#1]#2{%
\ifnum \c@secnumdepth >\m@ne
\refstepcounter{part}%
\addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
\else
\addcontentsline{toc}{part}{#1}%
\fi
{\parindent \z@ \raggedright
\interlinepenalty \@M
\normalfont
\ifnum \c@secnumdepth >\m@ne
\Large\bfseries \partname\nobreakspace\thepart
\par\nobreak
\fi
\huge \bfseries #2%
\markboth{}{}\par}%
\nobreak
\vskip 3ex
\@afterheading}
\def\@spart#1{%
{\parindent \z@ \raggedright
\interlinepenalty \@M
\normalfont
\huge \bfseries #1\par}%
\nobreak
\vskip 3ex
\@afterheading}
\newcommand\section{\@startsection {section}{1}{\z@}%
{-3.5ex \@plus -1ex \@minus -.2ex}%
{2.3ex \@plus.2ex}%
{\normalfont\Large\bfseries}}
\newcommand\subsection{\@startsection{subsection}{2}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
{\normalfont\large\bfseries}}
\newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
{\normalfont\normalsize\bfseries}}
\newcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
{3.25ex \@plus1ex \@minus.2ex}%
{-1em}%
{\normalfont\normalsize\bfseries}}
\newcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
{3.25ex \@plus1ex \@minus .2ex}%
{-1em}%
{\normalfont\normalsize\bfseries}}
% For something like Appendix where sections should appear as letters,
% reset counters to 0 and use \@Alph to make \c@section appear as A.
\newcommand\appendix{\par
\setcounter{section}{0}%
\setcounter{subsection}{0}%
\gdef\thesection{\@Alph\c@section}}
% How should it appear in the table of contents?
% Usually the ToC title is formatted like the sections.
\newcommand\tableofcontents{%
\section*{\contentsname
\@mkboth{%
\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
\@starttoc{toc}%
}
\z@
= 0,参见\z@ 起什么作用?\c@countername
= TeX 寄存器实际保存由 LaTeX 宏创建的整数\newcounter
(通常仅用于后端,因此@
),并且可以全局访问,请参阅TeX 计数和 LaTeX 计数器之间有什么区别?\m@ne
= 计数器等于 -1 的寄存器,参见\m@ne 和 \@M 在 \@makechapterhead 的定义中起什么作用?\@M
=\mathchardef
=\mathchar"2710
= 10000,见上文。\leavevmode
= 退出垂直模式[并隐式进入水平模式],请参阅\leavevmode 的功能和使用对所有可以在段落开头使用的宏使用 \leavevmode,并自行添加水平框(例如以文本形式)。
\@afterindentfalse
\@afterindenttrue
与中的 LaTeX 内核宏相反\if@afterindent
。它是在分段命令后将 设置@afterindent
为 false,这样标题后面的段落就不合适了。当 的扩展变为 时,后续段落将缩进\@afterindenttrue
,参见http://mirror.easyname.at/ctan/macros/latex/required/tools/indentfirst.pdf\secdef
例如,\secdef\@part\@spart
实际上是星号版本\@spart
(s 代表星号部分)和非星号版本之间的转换器\@part
。这可以*
影响要展开哪个宏,请参阅\secdef 起什么作用?\@plus
LaTeX 宏 = TeX 宏\plus
,\show\@plus
==macro: ->plus.
, 参见什么是胶水拉伸?\@minus
LaTeX 宏 = TeX 宏\minus
,见上文。\ifnum \c@secnumdepth >\m@ne
只是说如果部分计数器的深度大于 -1,则将此标题添加到目录中......\parindent
= 缩进的空间量\raggedright
= LaTeX 内核宏。它告诉 TeX 将某些内容左对齐,而不考虑 TeX 印刷点系统,该系统会进行适当的单词间空间调整,以形成漂亮的方形段落形状(完全对齐)。=\let\\\@centercr\@rightskip\@flushglue \rightskip \@rightskip\leftskip\z@skip\parindent\z@
,请参阅结合 leftskip、rightskip 和 raggedright\@afterheading
处理后标题内容的 LaTeX 宏,例如防止标题和下一行(通常是段落的俱乐部行)之间出现分页符,或防止该行(俱乐部)与其下一行之间出现分页符。前者使用\if@nobreak
逻辑完成,后者使用\clubpenalty=10000
= 最大惩罚。\@nobreaktrue \everypar{\if@nobreak \@nobreakfalse \clubpenalty\@M \if@afterindent \else {\setbox\z@\lastbox} \fi \else \clubpenalty\@clubpenalty \everypar{} \fi} }\@fb@afterHHook
编辑章节
只是环顾四周article.cls
可能会非常有帮助,但有许多命令使用符号@
,这有助于确保用户级命令不会与“内核”命令重叠,即你不太可能将\newcommand\@Alph{}
其放入序言中(如果你这样做了,你会得到一个错误,因为 TeX 期望宏名/命令序列名中的所有字符都有类别代码 11),请参阅\makeatletter 和 \makeatother 起什么作用?和类别代码是什么?了解详情。
您可以使用 重新定义这些部分以满足您的要求\renewcommand
。请注意,您需要临时更改 的类别代码才能@
访问内核命令。要么将您的定义括在
\makeatletter
% insert macro with @ here
\makeatother
或者
\catcode`\@11\relax
% insert macro with @ here
\catcode`\@12\relax
祖父\@startsection
请注意,除部分外,所有分段命令/标题的祖先是\@startsection
。理解它可能有点棘手,但\show\@startsection
可以揭示其定义:
\if@noskipsec \leavevmode \fi \par \@tempskipa #4\relax \@afterindenttrue \ifdim \@tempskipa <\z@ \@tempskipa -\@tempskipa \@afterindentfalse \fi \if@nobreak \everypar {}\else \addpenalty \@secpenalty \addvspace \@tempskipa \fi \@ifstar {\@ssect {#3}{#4}{#5}{#6}}{\@dblarg {\@sect {#1}{#2}{#3}{#4}{#5}{#6}}}.
\@startsection{<name>}{<level>}{<indent>}{<beforeskip>}{<afterskip>}{<style>}*[<altheading>]{<heading>}
要使用它来创建新的标题,您需要定义以下内容:
- 同名的计数器
- 格式化计数器输出
- ToC 条目行格式
- 命令
\@startsection
本身 - 页眉/页脚“标记”
请留意,使用时etoc
,还需为新命令提供一个级别,并将其与在 中设置分开,这一点很重要\@startsection
。
有关详细信息\@startsection
,请参阅在哪里可以找到类似 LaTeX 的 \@startsection 命令的帮助文件或文档?。
完整示例
\documentclass{article}
\usepackage{fontspec}
\usepackage{xcolor}
\makeatletter
% Change existing
% Article Class already defined a counter for this heading
\renewcommand\section{\@startsection{section}{1}{\z@}
{-3.5ex \@plus -1ex \@minus -.2ex}%
{2.3ex \@plus.2ex}%
{\normalfont\MakeUppercase}}% look at \contentsname
% Add new
\newcounter{mysection}% add counter
\renewcommand\themysection{\@arabic\c@mysection}% set typesetting format of counter to arabic numerals
\newcommand*\l@mysection{\@dottedtocline{1}{0em}{1.5em}} % define table of contents line format
% Article Class \l@section
%\newcommand*\l@section[2]{%
% \ifnum \c@tocdepth >\z@
% \addpenalty\@secpenalty
% \addvspace{1.0em \@plus\p@}%
% \setlength\@tempdima{1.5em}%
% \begingroup
% \parindent \z@ \rightskip \@pnumwidth
% \parfillskip -\@pnumwidth
% \leavevmode \bfseries
% \advance\leftskip\@tempdima
% \hskip -\leftskip
% #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
% \endgroup
% \fi}
\newcommand\mysectionmark[1]{} % define header/footer
\newcommand\mysection{\@startsection{mysection}{1}{\z@}
{-3.5ex \@plus -1ex \@minus -.2ex}%
{2.3ex \@plus.2ex}%
{\bfseries\Large\normalfont\noindent\textcolor{orange}}} % use \textcolor{color}{arg consumed later automatically} instead of \color{color} to avoid a whatsit and disrupt the page breaking mechanism. Add \noindent when using \textcolor here. Indentation can still be achieved by replacing arg 3 of \@startsection.
\makeatother
\begin{document}
\tableofcontents
---ENDTOC---
\section{Animals}
Lions, tigers, and bears, oh my!
\mysection{Vegetables}
Carrots, parsnips, and broccoli, oh my!
\end{document}
答案3
如果您想使用 titlesec 自定义章节标题,其中包括字体大小、字体类型、颜色、下划线等:
\usepackage{titlesec}
\titleformat{\section}
{\fontsize{11}{11}\usefont{T1}{ptm}{b}{n}\selectfont\color{red}}
{\thesection.~}{0cm}{\addulc}
\newcommand{\addulc}[1]{\underline{\MakeUppercase{#1}}:}