$(kpsewhich -var-value TEXMFDIST)/tex/latex/base/article.cls

$(kpsewhich -var-value TEXMFDIST)/tex/latex/base/article.cls

请原谅这个问题的愚蠢简单性,请随时让我参考以前的答案。我对 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 起什么作用?
  • \@plusLaTeX 宏 = TeX 宏\plus, \show\@plus= =macro: ->plus., 参见什么是胶水拉伸?
  • \@minusLaTeX 宏 = 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}}:}

相关内容