自动为各部分创建标签

自动为各部分创建标签

我正在编写某种实验性法律文件,该文件可能会被大量编辑。一些法律段落引用了法律条款或段落。由于该文件将被大量编辑,这些条款和段落的编号也会发生变化。我希望我的文件万无一失,这样当文件中的引用发生变化时,引用中的编号也会随之更改。

例子 :

第 1 条 我喜欢的法律

§1 一些文本 §2 更多文本引用第 3 条第 2 款

第二条 我不喜欢的法律

§1 文字丑陋 §2 文字更加丑陋

第 3 条 我喜欢的另一项法律

§1 好文章 §2 更多好文章

几个月后,当我们完全删除了第 2 条之后,就会变成:

第 1 条 我喜欢的法律

§1 一些文本 §2 更多文本引用第 2 条第 2 款

第二条 我喜欢的另一项法律

§1 好文章 §2 更多好文章

目标是参考自动改变。

所以我认为每当添加新文章或段落时我都可以自动创建标签。标签将包含文章的标题,例如 \label{art:Another law I like},因为标题比数字更不容易改变。然后我会使用 nameref 引用它们。

以下是我的文章:

\counterwithout{subsubsection}{subsection}
\counterwithin*{subsubsection}{section}
\setsecnumdepth{subsubsection}
\newcommand{\article}{\subsubsection}

\titleformat{\subsubsection}%command
[block]%shape
  {\bfseries}%format
  {Art. \arabic{subsubsection}}%label
  {1em}%sep
  {}%before
  []%after
\titlespacing{\subsubsection}
{0em}{3ex plus 1ex minus .5ex}{10pt}

和我的段落:

\newcounter{parnum}[subsubsection]
\renewcommand{\theparnum}{\arabic{parnum}}

\newcommand{\paragraphe}[1]{%
  \refstepcounter{parnum}%
  ~\\\indent\normalfont\textbf{\S\theparnum\space.---\space#1\quad}}

看来我的 \newcommand{\paragraphe}[1] 中的 \label{#1} 应该可以工作,但实际上却不行。标签太长了?那么 \article 呢?

这是包含我的标题结构的 MWE:

    \documentclass[a4paper,12pt,british,french,twoside,footnotereset=true]{memoir}
\usepackage{times} % police Times
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lipsum}
\RequirePackage{titlesec}
\RequirePackage{titleps}

%%% SECTIONS %%%
% [1] sections (I)
\renewcommand{\thesection}{\Roman{section}}
\newcommand{\sectionbreak}{\clearpage}

\titleformat{\section}[frame]
{\normalfont}
{\filright
\footnotesize
\enspace SECTION \thesection\enspace}
{8pt}
{\Large\bfseries\filcenter}

% [2] titres
\setsecnumdepth{subsection}
\newcommand{\titre}{\subsection}

\titleformat{\subsection}%command
[block]%shape
  {\bfseries}%format
  {TITRE \arabic{subsection} :}%label
  {1em}%sep
  {}%before
  []%after
\titlespacing{\subsection}
{3em}{3ex plus 1ex minus .5ex}{10pt}

% [3] articles
\counterwithout{subsubsection}{subsection}
\counterwithin*{subsubsection}{section}
\setsecnumdepth{subsubsection}
\newcommand{\article}{\subsubsection}

\titleformat{\subsubsection}%command
[block]%shape
  {\bfseries}%format
  {Art. \arabic{subsubsection}}%label
  {1em}%sep
  {}%before
  []%after
\titlespacing{\subsubsection}
{0em}{3ex plus 1ex minus .5ex}{10pt}

% [4] paragraphes
\newcounter{parnum}[subsubsection]
\renewcommand{\theparnum}{\arabic{parnum}}

\newcommand{\paragraphe}[1]{%
  \refstepcounter{parnum}%
  ~\\\indent\normalfont\textbf{\S\theparnum\space.---\space#1\quad}}

% [5] sous-paragraphes
\newcounter{subparnum}[parnum]
\renewcommand{\thesubparnum}{\arabic{subparnum}}

\newcommand{\sousparagraphe}[1]{%
  \refstepcounter{subparnum}%
  ~\\\indent\textbf{\S\theparnum.\thesubparnum\space.---\space#1\quad}}

%%% DOC %%%

\begin{document}
\mainmatter
\section{Une section}
\titre{Un titre}
\article{Un article}
\lipsum[1]
\paragraphe{Un paragraphe}
\lipsum[1]
\sousparagraphe{Un sous-paragraphe}
\lipsum[1]
\article{Deux articles}

\titre{Deux titres}
\article{Un article}
\lipsum[1]
\article{Deux articles}
\lipsum[1]

\section{Deux sections}
\titre{Un titre}
\article{Un article}
\lipsum[1]
\article{Deux articles}
\lipsum[1]
\paragraphe{Un paragraphe}
\lipsum[1]

\titre{Deux titres}
\article{Un article}
\lipsum[1]
\article{Deux articles}
\lipsum[1]

\section{Trois sections}

\end{document}

相关内容