我有一份正式的法律文件,其中包含行号和许多章节。我定义了一个自定义枚举环境,允许使用\S
以下方法列出段落。
\newlist{myenum}{enumerate}{1}
\setlist[myenum]{nosep,label={\textbf{\S\arabic*}}}
使用包定义的各个部分titlesec
如下。
\titleformat{\section}[runin]{\normalfont\scshape}{Section \thesection. }{0em}{}[\newline]
命令之后\section
,我通常会有一些介绍性文字,然后是myenum
开始于新行的环境。但是,在某些情况下,没有介绍性文字。但不幸的是,自定义枚举的起始位置比应有的位置低了一行,因为它在枚举前插入了一个额外的换行符。
如何定义一个自定义枚举环境,使其不在第一个项目之前插入换行符?
请参阅下面的 MWE。这个问题也可以表述为:如何定义一个自定义枚举环境,它具有仅有的第一个项目是否内联,其他行为是否正常?请注意,行号需要正确计算,即仅引入负间距不是解决方案。
进一步注意,只需定义第二个标题类\othersection
并\newline
从标题格式中删除该选项即可解决间距问题。但是,我需要章节编号和交叉引用机制连续工作,并且该titlesec
包要求每个标题类都有自己的计数器。也许有通过这种方法的替代解决方案,但我找不到它。
\documentclass{article}
\usepackage{titlesec}
\titleformat{\section}[runin]{\normalfont\scshape}{Section \thesection. }{0em}{}[\newline]
\usepackage{enumitem}
\newlist{myenum}{enumerate}{1}
\setlist[myenum]{nosep,label={\textbf{\S\arabic*}}}
\usepackage{lineno}
\leftlinenumbers
\linenumbers
\begin{document}
\section{First Section}
First section introductory text.
\begin{myenum}
\item First item
\item Second item
\end{myenum}
\section{Second Section Without Intro Text}
\begin{myenum}
\item First item after extra line (unwanted!)
\end{myenum}
\end{document}
答案1
问题在于使用runin
with\newline
之后。删除它们并改为对间距进行操作。
\documentclass{article}
\usepackage{titlesec}
\usepackage{enumitem}
\usepackage{lineno}
%% titlesec
\titleformat{\section}
{\normalfont\scshape}
{Section \thesection. }
{0em}
{}
\titlespacing*{\section}% * means no indent after the title
{0pt}% left
{*4}% above
{0pt}% below
\newlist{myenum}{enumerate}{1}
\setlist[myenum]{nosep,label={\textbf{\S\arabic*}}}
\leftlinenumbers
\linenumbers
\begin{document}
\section{First Section}
First section introductory text.
\begin{myenum}
\item First item
\item Second item
\end{myenum}
\section{Second Section Without Intro Text}
\begin{myenum}
\item First item after extra line (unwanted!)
\end{myenum}
\end{document}