编写附加 \section 命令

编写附加 \section 命令

我公司有一个 Word 文档,其中包含许多基于基本标题的样式。我需要创建 LaTeX 等效样式,但我正在苦苦挣扎如何创建,因为我需要做的不仅仅是重新定义\chapter\section等。

举个简单的例子,基于(Word 的)Heading 2 样式,有三种样式。这三种样式都有一些共同的属性:Arial 13pt 粗体,前有 10 pt 垂直空间,与下一段落属性保持一致(这样该行就不能是页面上的最后一行),以及 2 级目录条目。

从那里开始,风格就出现了分歧:有一种风格使用蓝色字体,第二种风格是自动编号(因此它计算活动 1、活动 2 等),第三种风格没有编号或颜色变化。

创建这些样式的最佳方法是什么?理想情况下,我想创建命令,以便我可以\activity对这三种样式中的任何一种说 或任何内容。

答案1

这里有个东西(可能)能满足您的要求。它不使用 Arial,因为我没有而且不喜欢它,而是用 Latin Modern Sans 代替。您输入\newsection两个参数;第一个参数表示\newsection它是哪种类型,第二个参数是部分名称。 a是一种类型(无数字,蓝色),b是另一种类型(无数字,仍然是黑色,字体无变化),其他任何类型都会产生第三种类型(编号,无衬线)。每个都将自己打印为目录中的部分级标题。(我假设这section是您的第二级标题;如果不是这样 [例如,如果您正在使用该类article],则需要在指令中更改section为。subsection\addcontentsline

\documentclass{book}
\usepackage{etoolbox}
\usepackage{lmodern}
\usepackage{xcolor}
\newcounter{newsect}
\setcounter{newsect}{0}
\makeatletter%
\def\newsection#1#2{%
    \ifstrequal{#1}{a}{%
        \fontsize{13pt}{15pt}\selectfont%
        \hbox to\linewidth{\textcolor{blue}{\textsf{#2}}\hfil}%
        \addcontentsline{toc}{section}{#2}%
    }{\ifstrequal{#1}{b}{%
        \fontsize{13pt}{15pt}\selectfont%
        \hbox to\linewidth{#2\hfil}%
        \addcontentsline{toc}{section}{#2}%
    }{%
        \stepcounter{newsect}%
        \fontsize{13pt}{15pt}\selectfont%
        \hbox to\linewidth{%
            \hbox to2em{\thenewsect\hfil}\textsf{#2}%
            \hfil%
        }%
        \addcontentsline{toc}{section}{%
          \hbox to2em{\thenewsect\hfil}#2}%
    }}%
    \penalty10000%
}%
\makeatother%
\begin{document}

\tableofcontents

\newsection{a}{Lorem}
\newsection{b}{Ipsum}
\newsection{c}{Loquitur}
\newsection{c}{whatever}
\newsection{b}{does}
\newsection{a}{this}
\newsection{c}{work?}
\end{document}

将会给你这个:

奇怪的章节标题

这里有几个注意事项:如果章节标题超过一行,看起来会很糟糕(可以修复,但我在这里临时拼凑起来)。颜色和字体的变化不是带入目录,但这也很容易修复。我相信这\penalty10000将阻止任何分页符出现在这些标题后面的空间中,正如所要求的那样,无论它看起来有多糟糕;\parskip在关闭的情况下可能会扩展到不可接受的程度,以弥补其中一个标题跳到下一页。理想情况下,当发生这种情况时,它只会在页面底部留下空白;这个论坛有办法做到这一点,但我现在没有时间去查找它们。

最后,这看起来很糟糕,我很遗憾你不得不重现它。也许对 LaTeX 有一点经验会让你的雇主做出更好的风格选择。

答案2

下面的代码给出了以下输出:

colinNewSection命令

% arara: xelatex
\documentclass{scrreprt}
\usepackage{blindtext}
\usepackage{fontspec}
\usepackage{xcolor}
\DeclareSectionCommand[beforeskip=-10pt,afterskip=10pt,
    font={\color{blue!40!black}\fontspec{Arial}\normalfont},
    style=section,
    level=1,
    tocindent=2em,
    tocnumwidth=2em,
    indent=0pt
]{activityB}% B, as in blue
\DeclareSectionCommand[beforeskip=-10pt,afterskip=10pt,
    font={\fontspec{Arial}\normalfont},
%   counterwithin=chapter,
    style=section,
    level=1,
    tocindent=1em,
    tocnumwidth=2em,
    indent=0pt
]{activity}
\renewcommand{\blindtext}{This is just a simple test}
\begin{document}
\tableofcontents
\chapter{pogo penguin}
\blindtext
\section{walzing Wombat}
\blindtext
\activity{samba snake}
\blindtext
\activity*{salsa squirrel}
\blindtext
\activityB{Lambada leguan}
\blindtext
\end{document}

该示例需要使用 XeLaTeX 运行,以便轻松使用 Arial。它使用了 KOMA-script 的相当新的功能,因此需要最新版本。

不过,定义新的浮动环境并将活动放在自己的列表中可能是一个更好的主意。但如果不知道实际用例,就很难知道。

相关内容