如何按照严格的规则设置文档的所有标题级别?

如何按照严格的规则设置文档的所有标题级别?

我正在写一份具有非常具体规则的文档:

  • 部分:14 pt,粗体,大写
  • 小节:12 pt,粗体,大写
  • 小节:12 pt,粗体
  • 段落:12 pt
  • 文档间距:1.5
  • 段落之间的间距:一行
  • 标题后的空格:一行
  • 编号:最高至 4 级(段落)
  • 编号:空格-空格(1 - 文本)

以下是一个例子:

在此处输入图片描述

到目前为止,我已经用sectsty包更改了标题字体和大小,用更改了文档间距linespread{1.3},将编号增加到 4 级。

我还需要

  • 在编号中添加连字符
  • 设置段落之间以及标题与段落之间的间距
  • 在第 4 级(段落)后添加换行符

我怎样才能使用最少的包来做到这一点

\documentclass[12pt,a4paper]{article}
\usepackage{blindtext}
\usepackage[brazil]{babel}
\usepackage{mathptmx}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}%
\usepackage[
    left=3.00cm,
    right=2.00cm,
    top=3.00cm,
    bottom=2.00cm
]{geometry}
\usepackage{graphicx}
%%%%%%%%%%
\usepackage{sectsty} 
\partfont{\centering}
\chapterfont{\raggedright\Large\MakeUppercase}
\sectionfont{\raggedright\large\MakeUppercase}
\subsectionfont{\raggedright\normalsize\MakeUppercase}
\subsubsectionfont{\raggedright}
\paragraphfont{\raggedright\normalfont}
%%%%%%%%%%
\linespread{1.3}
\setcounter{secnumdepth}{4}
\setcounter{tocdepth}{4}

\begin{document}
\blinddocument
\end{document}

答案1

你写了,

I still need    
    to add the hyphen in the numbering
    to set the space between paragraphs, and titles and paragraphs
    to add a line break after level 4 (paragraph)

我假设您将使用article文档类。

对于第一项,我建议您在序言中插入以下说明:

\makeatletter
\def\@seccntformat#1{\csname the#1\endcsname\space- }
\makeatother

顺便说一句,如果您需要插入“en-dash”而不是连字符,只需在前面的代码块中-替换即可。--

对于第二项,我建议您使用parskip选项skip=1\baselineskip和来加载包indent。(指定后一个选项可保留段落的非零默认缩进。

在讨论第三项之前,我想建议你

  • 替换\usepackage{mathptmx}\usepackage{newtxtext,newtxmath}(该mathptmx包确实很旧,

  • 替换\linespread{1.3}\usepackage[nodisplayskipstretch]{setspace} \setstretch{1.3}(不要直接操作低级参数\linespread),并且

  • 替换\sectionfont{\raggedright\large\MakeUppercase}\sectionfont{\raggedright\fontsize{14}{16.8}。(如果主文档字体大小为12pt,则\large对应于14.4pt不是 14pt

最后,关于在 -level 标题后设置换行符的目的\paragraph:我建议您在序言中添加以下代码:

\usepackage{etoolbox}
\makeatletter
\renewcommand\paragraph{\@startsection{paragraph}{4}%
    {\z@}{-3.25ex\@plus -1ex \@minus -.2ex}%
    {1.5ex \@plus .2ex}{\normalfont\normalsize}}
\makeatother

完整的 MWE (最小工作示例):

在此处输入图片描述

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[left=3cm,right=2cm,top=3cm,bottom=2cm]{geometry}
\usepackage[brazil]{babel}

\usepackage{graphicx}
\usepackage{lipsum} % for filler text

%%\usepackage{mathptmx}
\usepackage{newtxtext,newtxmath}

\usepackage{sectsty} 
\partfont{\centering}
%%\chapterfont{\raggedright\Large\MakeUppercase} % not needed
%%\sectionfont{\raggedright\large\MakeUppercase}
\sectionfont{\raggedright\fontsize{14}{16.8}\selectfont\MakeUppercase}
\subsectionfont{\raggedright\normalsize\MakeUppercase}
\subsubsectionfont{\raggedright}
\paragraphfont{\raggedright\normalfont}

\setcounter{secnumdepth}{4}
\setcounter{tocdepth}{4}

%%\linespread{1.3} % don't manipulate this macro directly
\usepackage[nodisplayskipstretch]{setspace}
\setstretch{1.3} % BTW: why not "1.5"?


%% And here's the all-new code:
\makeatletter

% Extra space between paragraphs:
\usepackage[indent,skip=1\baselineskip]{parskip}

% Insert "-" (dash) between sectioning numbers and text:
\def\@seccntformat#1{\csname the#1\endcsname\space- }

% Line break after \paragraph-level headers:
\usepackage{etoolbox}
\renewcommand\paragraph{\@startsection{paragraph}{4}%
    {\z@}{-3.25ex\@plus -0.75ex \@minus -.1ex}%
    {1ex \@plus .2ex}{\normalfont\normalsize}}

\makeatother  % end of new-code block


\begin{document}
\section{Heading on level 1 (Section)}
\subsection{Heading on level 2 (Subsection)}
\subsubsection{Heading on level 3 (Subsubsection)}
\paragraph{Heading on level 4 (Paragraph)}
\lipsum[1-2] % filler text
\end{document}

相关内容