格式化章节标题的简单方法

格式化章节标题的简单方法

任何软件包文档看起来如下:

\titleformat{<command>}[<shape>]{<format>}{<label>}{<sec>}{<before-code>}[<after-code>]

对于新手(比如我)来说,它比示例要没那么有用。它没有给新手读者提供太多线索,真正的文档中到底应该输入什么。我要输入那些尖括号吗?花括号?方括号?这些分隔符中究竟应该包含什么?

例子是记录的方式。

文档titlesec最后确实有示例,但是太少了,而且没有涵盖我感兴趣的情况。

我的问题是:有什么简单、直接的方法来格式化章节标题?我的输出有几个设计要求:

  1. 章节编号根本不应该缩进。
  2. 整个章节文本的正文应该像包中那样缩进enumerate,但我更喜欢普通的散文段落缩进而不是换行。也就是说,章节中段落的第一行缩进“两次”,而后续行只缩进“一次”。这里的“一次”和“两次”是指相对于章节编号。

我确信有办法做到这一点,但我在这里和其他地方搜索都没能找到它。如果能得到任何帮助,我将不胜感激。提前致谢!

这是使用该包的一个几乎可以工作的最小示例enumerate。我几乎可以用这个包做到这一点,除了想要加粗的章节标题等等。

\documentclass[12pt]{article}
\usepackage{enumerate}

\begin{document}

\begin{enumerate}[I.]
\item Section Title

This level has a great spacing from the 1. on the left to the first word ``This''. And then, if I want 
a hierarchy, the heading there, an `A.' in this case,
\begin{enumerate}[A.]
\item Subsection Title

is nicely lined up with the indented text above. However, I would like to change
this indenting to use normal prose paragraph indenting, such as
\end{enumerate}
\end{enumerate}

Normal paragraph prose indenting, where the first line is indented, and the rest of the paragraph is not. 
However, the non-indented text needs to be at the indentation of the ``This'' above, and the first lines need
to be indented one more slot, of the same width.

\end{document}

这是我在 MS Word 中输入的一个最小工作示例(当然,我必须手动处理缩进才能达到我想要的效果):

MS Word 中的最小工作示例

答案1

我不太确定你到底想要这些缩进是什么样的,所以我创建了一个缩进,其中章节标题位于相同的缩进点。代码基于文档部分中给出的章节示例9.1 完整示例:

\titleformat{\section}
   {\normalfont\Large\bfseries}{\thesection}{1em}{}

为了获得相同的缩进点,我们需要计算节号的宽度,因为这些宽度会有所不同,具体取决于要打印的数字。(在大多数字体中,8 比 1 宽,而 100 当然更宽)。这可以使用-package\widthof{content}中的命令来完成calc。然后我们将缩进的长度设置为 2 \parindent,即正常缩进的长度减去节号的宽度。

但由于\parindent并非处处相同,且在 -macro 内为零\titleformat,因此我们需要在 之外计算它。因此,创建了一个新的长度 ,\anIndent它捕获该长度。

为了得到你想要的缩进,我抓住了答案沃纳发表于缩进整个段落/部分?。这适用于所有页面,并且比 更易于使用minipage。当然,如果有某种解决方案,无需为每个部分手动设置这些宏,那就太好了。

另外,你真的想缩进第一行吗?我认为这不是一种很常见的做法。通常,第一段不缩进,只有后续段落才缩进。

编辑:我现在创建了一个新环境,以使语法更好一些。它基于-packageadjustwidth中的 -environment changepage。新环境被调用indentedSection并接受一个参数,即缩进数。1 表示section2 表示subsection3 表示subsubsection。我还添加了对subsubsection

输出

在此处输入图片描述

代码

\documentclass[11pt]{article}
\usepackage{titlesec}
\usepackage{lipsum}
\usepackage{indentfirst}
\usepackage{calc}
\usepackage{changepage}

\newlength{\anIndent}
\setlength{\anIndent}{\parindent}

\titleformat{\section}
  {\normalfont\Large\bfseries}{\thesection}{2\anIndent-\widthof{\thesection}}{}

\titleformat{\subsection}
  {\normalfont\large\bfseries}{\thesubsection}{3\anIndent-\widthof{\thesubsection}}{}

\titleformat{\subsubsection}
  {\normalfont\normalsize\bfseries}{\thesubsubsection}{4\anIndent-\widthof{\thesubsubsection}}{}

\newenvironment{indentedSection}[1]{%
    %Input #1: Level of indentation
    \begin{adjustwidth}{#1\anIndent+\anIndent}{}
        \hspace{\anIndent}% Indent first line
        \ignorespaces% Ignor any space at start of environment
    }{\end{adjustwidth}}

\begin{document}
\section{Baz}
\begin{indentedSection}{1}
    \lipsum[2]
\end{indentedSection}
\subsection{Foo}
\begin{indentedSection}{2}
    \lipsum[2]
\end{indentedSection}
\subsubsection{hello}
\begin{indentedSection}{3}
    \lipsum[2]
\end{indentedSection}
\end{document}

答案2

好的,这里是一份 27 页的文档,解释 titlesec。(如果该链接不起作用,请尝试这个。)我现在自己也在读,因为我找到了。它有你的可憎之处,但它解释了这些可憎之处。这样就好了,对吧?还有本网站它还有在线 LaTeX 编辑器;其中包含您可以打开的工作示例。我正在修复第一个链接。

示例(直接引用):是需要重新定义的<command>分段命令,即 ,\part\chapter\section, 或\subsection\subsubsection\paragraph\subparagraph

希望这有帮助!我会继续寻找其他资源。

其他资源

哦,鉴于 Johannes_B 的评论,这里是 TikZ 手册。非常长,非常有帮助(我刚开始学习 TikZ/LaTeX,那本手册很棒。以及LaTeX 维基百科这里这里还有两个非常方便的 LaTeX 资源。这里是 Tabu 的文档。最后,这里是一个关于 ConTeXt 文档/资源的 TeX stack exchange 问题。

笔记:这篇文章是在 OP 更新他的问题之前发布的,以明确表示他想要解决问题,而不是记录。

相关内容