自定义文档结构

自定义文档结构

我想用 LaTeX 排版法规和法律。为此,我需要一种方法来构建我的文档,如下所示:

  1. 标题
  2. 章节
  3. 部分
  4. [小节]
  5. 文章

有什么方法可以覆盖默认(或 KOMA-Script)类提供的分段命令吗?您可以在此处看到我想要实现的结构示例:https://www.boe.es/buscar/pdf/2015/BOE-A-2015-10566-consolidado.pdf

谢谢!

答案1

以下是使用 class 的建议scrartcl

\documentclass[english]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{babel}
\newcaptionname{english}{\Titlename}{Title}
\newcaptionname{english}{\Chaptername}{Chapter}
\newcaptionname{english}{\Sectionname}{Section}
\newcaptionname{english}{\Subsectionname}{Subsection}
\newcaptionname{english}{\Articlename}{Article}

\renewcommand\raggedpart{\centering}
\renewcommand\raggedsection{\centering}

\newcommand\entryprefix[2]{%
  #1\ #2
}

\DeclareNewSectionCommand[
  style=part,
  level=\partnumdepth,
  tocbeforeskip=2.25em plus 1pt,
  tocindent=0pt,
  tocnumwidth=2.3em,
  tocdynnumwidth,
  tocentrynumberformat=\entryprefix{\Titlename}
]{Title}
\renewcommand\theTitle{\Roman{Title}}
\renewcommand\Titleformat{\Titlename~\theTitle\autodot}

\DeclareNewSectionCommand[
  style=part,
  level=0,
  counterwithin=Title,
  font=\LARGE,
  prefixfont=\Large,
  tocindent=1em,
  tocnumwidth=2.3em,
  tocdynnumwidth,
  tocentrynumberformat=\entryprefix{\Chaptername}
]{Chapter}
\renewcommand\theChapter{\Roman{Chapter}}
\renewcommand\Chapterformat{\Chaptername~\theChapter\autodot}

\RedeclareSectionCommand[
  counterwithin=Chapter,
  tocentryformat=\normalfont,
  tocbeforeskip=0pt plus .2pt,
  tocentryindent=2em,
  tocpagenumberformat=\normalfont,
  tocdynnumwidth,
  tocentrynumberformat=\entryprefix{\Sectionname},
    toclinefill=\TOCLineLeaderFill
]{section}
\renewcommand\thesection{\arabic{section}}
\renewcommand\sectionformat{\Sectionname~\thesection\autodot\enskip}

\RedeclareSectionCommand[
  tocentryindent=3em,
  tocdynnumwidth,
  tocentrynumberformat=\entryprefix{\Subsectionname}
]{subsection}

\renewcommand\thesubsection{\arabic{subsection}}
\renewcommand\subsectionformat{\Subsectionname~\thesubsection\autodot\enskip}

\DeclareNewSectionCommand[
  style=section,
  level=\subsubsectionnumdepth,
  beforeskip=3.25ex plus 1ex minus .2ex,
  afterskip= 1.5ex plus .2ex,
  indent=0pt,
  font=\mdseries\slshape,
  tocstyle=default,
  toclevel=\subsubsectiontocdepth,
  tocindent=4em,
  tocnumwidth=2.3em,
  tocdynnumwidth,
  tocentrynumberformat=\entryprefix{\Articlename}
]{Article}
\renewcommand\Articleformat{\Articlename~\theArticle\autodot\enskip}

\renewcommand\sectionlinesformat[4]{%
  \ifstr{#1}{Article}
    {\raggedright\textbf{\upshape#3}#4.}
    {#3#4}%
}


\usepackage{lipsum}
\usepackage{blindtext}
\begin{document}
\tableofcontents
\Title{Title level}
\Chapter{Chapter level}
\section{Section level}
\Article{An article}
\lipsum[1-3]
\Article{A second article}
\lipsum[4]
\section{Section level}
\subsection{A subsection}
\Article{An article}
\lipsum[1-3]
\subsection{Another subsection}
\Article{A second article}
\lipsum[4]
\Title{Title level}
\Chapter{Chapter level}
\section{Section level}
\Article{An article}
\lipsum[1-3]
\Article{Another article}
\lipsum[4]
\end{document}

在此处输入图片描述

答案2

行为图片

基于 esdd 的解决方案,我建议使用 scrjura 包来排版法律文本。我的代码大部分是从 Elkes 的解决方案中窃取的,我只在 Artículo 级别进行了更改并更改了语言,因为我们必须为 Artículos 提供标题名称。

\documentclass[spanish, juratotoc=true, toc=flat]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{scrjura, libertine}
\newcaptionname{spanish}{\Titlename}{TÍTULO}
\newcaptionname{spanish}{\Chaptername}{CAPÍTULO}
\newcaptionname{spanish}{\Sectionname}{Sección}
\newcaptionname{spanish}{\Subsectionname}{Subsección}
%\newcaptionname{english}{\Articlename}{Article}

\providecaptionname{spanish}{\parname}{Artículo}
\providecaptionname{spanish}{\parshortname}{Art.}

\renewcommand{\Clauseformat}[1]{Artículo~#1.}
\setkomafont{contract.Clause}{\itshape{}}

\renewcommand\raggedpart{\centering}
\renewcommand\raggedsection{\centering}

\newcommand\entryprefix[2]{%
  #1\ #2
}

\DeclareNewSectionCommand[
  style=part,
  level=\partnumdepth,
  tocbeforeskip=2.25em plus 1pt,
  tocindent=0pt,
  tocnumwidth=2.3em,
  tocdynnumwidth,
  tocentrynumberformat=\entryprefix{\Titlename}
]{Title}
\renewcommand\theTitle{\Roman{Title}}
\renewcommand\Titleformat{\Titlename~\theTitle\autodot}

\DeclareNewSectionCommand[
  style=part,
  level=0,
  counterwithin=Title,
  font=\LARGE,
  prefixfont=\Large,
  tocindent=1em,
  tocnumwidth=2.3em,
  tocdynnumwidth,
  tocentrynumberformat=\entryprefix{\Chaptername}
]{Chapter}
\renewcommand\theChapter{\Roman{Chapter}}
\renewcommand\Chapterformat{\Chaptername~\theChapter\autodot}

\RedeclareSectionCommand[
  counterwithin=Chapter,
  tocentryformat=\normalfont,
  tocbeforeskip=0pt plus .2pt,
  tocentryindent=2em,
  tocpagenumberformat=\normalfont,
  tocdynnumwidth,
  tocentrynumberformat=\entryprefix{\Sectionname},
    toclinefill=\TOCLineLeaderFill
]{section}
\renewcommand\thesection{\arabic{section}}
\renewcommand\sectionformat{\Sectionname~\thesection\autodot\enskip}

\RedeclareSectionCommand[
  tocentryindent=3em,
  tocdynnumwidth,
  tocentrynumberformat=\entryprefix{\Subsectionname}
]{subsection}

\renewcommand\thesubsection{\arabic{subsection}}
\renewcommand\subsectionformat{\Subsectionname~\thesubsection\autodot\enskip}

% \DeclareNewSectionCommand[
%   style=section,
%   level=\subsubsectionnumdepth,
%   beforeskip=3.25ex plus 1ex minus .2ex,
%   afterskip= 1.5ex plus .2ex,
%   indent=0pt,
%   font=\mdseries\slshape,
%   tocstyle=default,
%   toclevel=\subsubsectiontocdepth,
%   tocindent=4em,
%   tocnumwidth=2.3em,
%   tocdynnumwidth,
%   tocentrynumberformat=\entryprefix{\Articlename}
% ]{Article}
% \renewcommand\Articleformat{\Articlename~\theArticle\autodot\enskip}

% \renewcommand\sectionlinesformat[4]{%
%   \ifstr{#1}{Article}
%     {\raggedright\textbf{\upshape#3}#4.}
%     {#3#4}%
% }




\usepackage{lipsum}
\usepackage{blindtext}
\begin{document}
\tableofcontents
\Title{Title level}
\Chapter{Chapter level}
\section{Section level}
\begin{contract}
  \Clause{title=Objeto.}
\label{CLA:objeto}
 La potestad sancionadora de las Administraciones Públicas se ejercerá cuando haya 
 sido  expresamente  reconocida  por  una  norma  con  rango  de  Ley,\dots

  El  ejercicio  de  la  potestad  sancionadora  corresponde\dots

\Clause{title=Ámbito Subjetivo}
\label{CLA:ambito-subjetivo}

Las  disposiciones  de  este  Capítulo  serán  extensivas  al  ejercicio  por  las 
Administraciones Públicas de su potestad disciplinaria

Las  disposiciones  de  este  capítulo  no  serán  de  aplicación  al  ejercicio  por  las 
Administraciones  Públicas  de  la  potestad


\end{contract}

\section{Section level}
\subsection{A subsection}
\begin{contract}
  \Clause{title=Principios generales}
\label{CLA:principios-generales}

La potestad sancionadora de las Administraciones Públicas se ejercerá cuando haya 
 sido  expresamente  reconocida  por  una  norma  con  rango  de  Ley,\dots

  El  ejercicio  de  la  potestad  sancionadora  corresponde\dots

Las  disposiciones  de  este  Capítulo  serán  extensivas  al  ejercicio  por  las 
Administraciones Públicas de su potestad disciplinaria

Las  disposiciones  de  este  capítulo  no  serán  de  aplicación  al  ejercicio  por  las 
Administraciones  Públicas  de  la  potestad


\Clause{title={Principios de intervención de las Administraciones Públicas para el desarrollo de 
una actividad.}, tocentry={Principios de intervención}}
\label{CLA:titl-de-interv}

La potestad sancionadora de las Administraciones Públicas se ejercerá cuando haya 
 sido  expresamente  reconocida  por  una  norma  con  rango  de  Ley,\dots

  El  ejercicio  de  la  potestad  sancionadora  corresponde\dots

Las  disposiciones  de  este  Capítulo  serán  extensivas  al  ejercicio  por  las 
Administraciones Públicas de su potestad disciplinaria

Las  disposiciones  de  este  capítulo  no  serán  de  aplicación  al  ejercicio  por  las 
Administraciones  Públicas  de  la  potestad




\end{contract}

\end{document}

相关内容