横跨整个页面的文本上方和下方不同粗细的水平线。

横跨整个页面的文本上方和下方不同粗细的水平线。

我正在尝试制作类似以下的节标题这份简历。我希望文本上方有一行,下方有一行,并且上方的线比下方的线粗。这些线还需要跨越整个页面。我尝试过类似

\rule{\textwidth}{1px}\\ Heading\\ \rule{\textwidth}{0.5px}\\

但间距太小了。行与文本之间的间距太大。我怎样才能让它看起来像示例中的那样?

答案1

\newcommand\myheading[1]{\par
  \bigskip
  \hrule height 1pt
  \kern 2pt
  \hbox to \textwidth{\textbf{#1}\hfil}
  \kern 2pt
  \hrule height 0.5pt
  \kern\medskipamount}

我们结束一个段落,留出一个垂直空间并绘制一个 1pt 粗细的规则;在它之后我们留出一个小空间(根据您的需要进行自定义)并打印标题,在它之后再留出另一个小空间。0.5pt 粗细的规则和另一个空间。

此低级代码使用了四个技巧:(1)通过 插入的垂直空格\kern不会被 TeX 用于分页,因此唯一允许分页的地方是\bigskip标题之前;(2) \hbox不会启动水平模式,也不会在主垂直列表的框之前或之后插入粘连(因此没有分页的地方);(3)垂直\kern模式下的 会产生固定长度的垂直空格;(4)\hrule没有指定的width会延伸到覆盖垂直列表中最宽的框(此处为\hbox to \textwidth{...}。分页规则的结果是标题和其后的段落之间不能有分页符(前提是它不插入惩罚,如果以下项目是诸如 之类的列表,则可能会发生这种情况itemize)。

Gonzalo 的解决方案基于标题安全非常干净,但有时低级代码会更快,只要我们理解它。:-)

答案2

您可以使用该titlesec包来重新定义行为方式\section

\documentclass{article}
\usepackage{titlesec}
\usepackage{lipsum}% just to generate filler text

\setlength\parskip{0pt}

\titleformat{\section}
  {\normalfont\large\bfseries}{}{0em}{\hrule height 1pt\vspace{2pt}}[\hrule height 0.2pt]
\titlespacing*{\section}
  {0pt}{0pt}{10pt}

\begin{document} 

\section{EDUCATION}
\lipsum[1]
\section{LEGAL EXPERIENCE}
\lipsum[1]

\end{document}

编辑:根据评论中的要求,这里是对代码的修改,允许使用包\so中的soul作为部分标题:

\documentclass{article}
\usepackage{soul}
\usepackage[explicit]{titlesec}
\usepackage{lipsum}% just to generate filler text

\setlength\parskip{0pt}

\titleformat{\section}
  {\normalfont\large\bfseries}{}{0em}{\hrule height 1pt\vspace{2pt}\so{#1}}[\hrule height 0.2pt]
\titlespacing*{\section}
  {0pt}{0pt}{10pt}

\begin{document} 

\section{EDUCATION}
\lipsum[1]
\section{LEGAL EXPERIENCE}
\lipsum[1]

\end{document}

相关内容