法语章节编号使用 bis、ter 等

法语章节编号使用 bis、ter 等

我正在转录一份古老的法国工程文本(约 1890 年),该文本使用了一种不太标准的章节编号。由于我试图制作一份或多或少逐字逐句的副本,因此对我来说,保持新文档的结构与原始文档相同非常重要。

一般章节编号使用数字序列(1、2、3 等)。但是,有些章节是在印刷前最后一刻插入的,所以当时的排字员(我猜)使用拉丁后缀“bis”和“ter”来插入新章节(1之二,1之三等)来代替对整个文本进行重新编号。请注意,后缀也采用斜体。

我发现用户询问在数字部分数字末尾添加字母字符的问题,但这并不完全适用。

由于章节编号基本已设置好,我可以手动调整需要调整的几个章节。不过,我想学习 TeX 解决方法以供将来参考,并更好地了解该程序。

请参阅下面的 MWE,其中有我使用手动节编号的代码示例。这给出了所需的结果,但没有自动节编号,这是 TeX 的主要功能。我想使用某种自动节编号方案复制此结果。

\documentclass{book}

\usepackage{titlesec}
\titleformat{\section}[block]{\normalfont\large\normalfont\filcenter}{\thesection. ---}{0.5em}{}
\renewcommand\thesection{\arabic{section}}
\usepackage{lipsum}

\begin{document}

\tableofcontents

\section{First Section Header}
\lipsum[1]

\section{Second Section Header}
\lipsum[2]

\section*{2 \textit{bis}. --- Third Section Header}\addcontentsline{toc}{section}{2 \textit{bis}    Third Section Header}
\lipsum[3]

\section{Fourth Section Header}
\lipsum[4]

\end{document}

下面是渲染。

手动编号的工作示例

答案1

原始解决方案 这是一个使用enumitemenumerate环境的解决方案。

由于您提到了部分编号,因此不确定这是否确实是您所要求的。

但是,使用此解决方案,所有定期编号的项目都必须位于(第一级)enumerate环境中,当您需要 bis、ter 等时,则可以使用嵌套enumerate环境。请记住第一的 \item这个环境的数量将是有限的之二,第二个将被编号为ter,等等

\documentclass{article}
\usepackage{xparse}
\usepackage{enumitem}

\ExplSyntaxOn
\seq_new:N \bislist
\seq_set_split:Nnn \bislist {;} {bis;ter;quater;quinquies;sexies;septies;octies;novies;decies}
\NewDocumentCommand {\bisprint} {m}
 {
  \seq_item:Nn \bislist {#1}
 }
\ExplSyntaxOff

\setlist[enumerate,1]{leftmargin=0pt,labelwidth=!,label=\arabic*.,align=left}
\setlist[enumerate,2]{leftmargin=0pt,labelwidth=!,label=\arabic{enumi} \bisprint{\arabic{enumii}}.,align=left}


\begin{document}
\begin{enumerate}
\item First item
\item Second item
\begin{enumerate}
\item First bis item 
\item First ter item
\end{enumerate}
\end{enumerate}


\end{document}

产生这样的结果:在此处输入图片描述

也许,避免与其他嵌套enumerate环境冲突的另一种选择是通过bis这种方式创建环境:

\documentclass{article}
\usepackage{xparse}
\usepackage{enumitem}

\ExplSyntaxOn
\seq_new:N \bislist
\seq_set_split:Nnn \bislist {;} {bis;ter;quater;quinquies;sexies;septies;octies;novies;decies}
\NewDocumentCommand {\bisprint} {m}
 {
  \seq_item:Nn \bislist {#1}
 }
\ExplSyntaxOff

\setlist[enumerate,1]{leftmargin=0pt,labelwidth=!,label=\arabic*.,align=left}

\newlist{bis}{enumerate}{1}
\setlist[bis]{leftmargin=0pt,labelwidth=!,label=\arabic{enumi} \bisprint{\arabic{bisi}}.,align=left}


\begin{document}
\begin{enumerate}
\item First item
\item Second item
\begin{bis}
\item First bis item 
\item First ter item
\end{bis}
\end{enumerate}


\end{document}

这产生的结果与前面的代码完全相同。

请注意,如果环境中有 10 个或更多项目bis,则编号将失败(主要是因为我不知道 decies 后面是什么)。但我希望您的原始文本不需要走那么远 ;-)(但是,似乎某些法国法律使用了 decies,也许接下来的几个法律也使用了 decies……)

编辑:解决方案与\section

这是一个使用\section和的解决方案\section*警告:通过重新定义这两个命令,您将无法将它们用于文档其余部分的任何其他操作(我想您已经意识到了这一点,但以防万一,现在很清楚了)。

这里的想法是使用来\section{}开始一个有规律编号的部分,并且\section*{}对于之二編號部分。

\documentclass{article}
\usepackage{xparse}
\usepackage{enumitem}
\usepackage[explicit]{titlesec}
\usepackage{lipsum}


\ExplSyntaxOn
\seq_new:N \bislist
\seq_set_split:Nnn \bislist {;} {bis;ter;quater;quinquies;sexies;septies;octies;novies;decies}
\NewDocumentCommand {\bisprint} {m}
 {
  \seq_item:Nn \bislist {#1}
 }
\ExplSyntaxOff

\newcounter{bis}
\stepcounter{bis}
\titleformat{\section}[runin]{\normalfont}{\arabic{section}.}{0pt}{}[\setcounter{bis}{1}]
\titleformat{name=\section,numberless}[runin]{\normalfont}{\arabic{section} \bisprint{\arabic{bis}}.}{0pt}{}[\stepcounter{bis}]
\titlespacing{\section}{\parindent}{\baselineskip}{\parindent}{}


\begin{document}

\section{}
\lipsum[1]
\section{}
\lipsum[2]
\section*{}
\lipsum[3]
\section*{}
\lipsum[4]
\section*{}
\lipsum[5]
\section{}
\lipsum[6]
\section{}
\lipsum[7]
\section*{}
\lipsum[8]


\end{document}

如果格式不完全符合您的要求,您可以更改\titleformat和的参数\titlespacing(例如,更改\normalfont\bfseries将产生粗体数字)。

更新:包含目录\section*这是出现在目录中的 最后一次更新(这次使用book您想要的文档类别以及您在 MWE 中使用的标题格式)。

\documentclass{book}
\usepackage{xparse}
\usepackage{enumitem}
\usepackage[explicit]{titlesec}
\usepackage{lipsum}
\usepackage{calc}
\usepackage{totcount}

\ExplSyntaxOn
\seq_new:N \bislist
\seq_set_split:Nnn \bislist {;} {bis;ter;quater;quinquies;sexies;septies;octies;novies;decies}

\NewDocumentCommand {\bisprint} {m}
 {
  \seq_item:Nn \bislist {#1}
 }
\ExplSyntaxOff

\newtotcounter{bismax}
\newcounter{bis}
\stepcounter{bis}
\setcounter{bismax}{1}

\newcommand{\bisadd}{\stepcounter{bis} \setcounter{bismax}{\minof{4}{\maxof{\thebismax}{\thebis-1}}}}

\AtBeginDocument{\newlength{\bislength}
\settowidth{\bislength}{\textit{\bisprint{\totvalue{bismax}}}}
\addtolength{\bislength}{1.5em}}

\titleformat{\section}[block]{\normalfont\large\normalfont\filcenter}{\thesection. --- #1}{0.5em}{}[\setcounter{bis}{1}]

\renewcommand\thesection{\arabic{section}}

\titleformat{name=\section,numberless}[block]{\normalfont\large\normalfont\filcenter}{\arabic{section} \textit{\bisprint{\arabic{bis}}}. --- #1}{0.5em}{}[ \addcontentsline{toc}{section}{\protect\numberline{\arabic{section} \textit{\bisprint{\arabic{bis}}}}#1} \bisadd{}]

\makeatletter
\renewcommand*\l@section{\@dottedtocline{1}{1.5em}{\bislength}}
\makeatother

\begin{document}



\tableofcontents

\section{First section header}
\lipsum[1]
\section{Second section header}
\lipsum[2]
\section*{Third section header}
\lipsum[3]
\section*{Fourth section header}
\lipsum[4]
\section*{Fifth section header}
\lipsum[5]
\section*{Sixth section header}
\lipsum[6]
\section{Seventh section header}
\lipsum[7]
\section*{Eighth section header}
\lipsum[8]

\end{document}

现在会自动计算目录中数字和章节标题之间的间距,以便显示最长的“bis 编号”(即,如果您只需打印 bis 或 ter,则空间会比需要打印 quiquies 时更小)。您可以通过更改当前设置为 的值来放大或缩小此空间1.5em

答案2

这是一个半自动版本,您必须手动添加后缀。

\documentclass{article}

\makeatletter
\newcommand{\numpar}[1][]{%
  \par\addvspace{\medskipamount}%
  \if\relax\detokenize{#1}\relax
    \refstepcounter{numpar}%
    \def\thisnumpar{\thenumpar}%
  \else
    \edef\@currentlabel{\thenumpar\noexpand~#1}%
    \def\thisnumpar{\thenumpar~#1}%
  \fi
  \everypar{\thisnumpar.\hspace{\parindent}\everypar{}}%
}
\makeatother
\newcounter{numpar}


\begin{document}

\numpar This is the first paragraph. Let's make it longer
so it wraps. Maybe this suffices, but just in case we
add some more words.

\numpar[bis]\label{1bis} This has been added. Let's make it longer
so it wraps. Maybe this suffices, but just in case we
add some more words.

\numpar[ter] This also has been added and refers to the previous one~\ref{1bis}.
Let's make it longer so it wraps. Maybe this suffices, but just in case we
add some more words.

\numpar This is numbered normally and refers to the previous one~\ref{1bis}.
Let's make it longer so it wraps. Maybe this suffices, but just in case we
add some more words.

\end{document}

使用技巧\everypar可以让你不必担心后面的空格\label

在此处输入图片描述

相关内容