如果不知道规则的具体宽度,如何绘制规则?

如果不知道规则的具体宽度,如何绘制规则?

我正在尝试改进我使用 LaTeX 编写的简历。我想显示类似这样的章节标题

在此处输入图片描述

但我不知道该怎么做;

  1. 在章节标题旁边添加空白,该空白与示例图所示的文本之前的内容相同。

  2. 添加与页边距完全相同的规则,从文本后开始,到文本宽度大小的末尾结束。这对我来说很难,因为规则的大小根据占据纸张文本宽度一部分的文本大小而不同。

这是造成部分问题的 MWE。

在此处输入图片描述

%pdfLaTeX
\documentclass{article}

\usepackage{marginnote}
\usepackage{color}
\definecolor{darkcandyapplered}{rgb}{0.64, 0.0, 0.0}

\newcommand{\stitle}[2] {%
    \noindent\textcolor{darkcandyapplered}{\large \bf #1}%
    \reversemarginpar\marginpar%
    {\raggedleft \textcolor{darkcandyapplered}{\rule{2.35cm}{8.5pt}} \\*[-.8pc]}%
    \\[#2\baselineskip]}

\begin{document}

\stitle{Education}{0}

\end{document}

答案1

您可以使用分段命令,借助titlesec

\documentclass{article}
\usepackage{titlesec}
\usepackage{xcolor}
\usepackage{lipsum}

\definecolor{darkcandyapplered}{rgb}{0.64, 0.0, 0.0}

\titleformat{\section}
  {\Large\bfseries}
  {}
  {0pt}
  {\betweenrules}

\titlespacing*{\section}
  {0pt}% space at left
  {1ex}% space above
  {2ex}% space below

\newcommand{\betweenrules}[1]{%
  \makebox[0pt][r]{\color{darkcandyapplered}\vrule width 2cm height 1.5ex \hspace{1em}}%
  #1% the title
  \hspace{1em}%
  \color{darkcandyapplered}%
  \leaders\hrule height 1.5ex\hfill
}

\begin{document}

\lipsum[3]

\section{Education}

\lipsum[1-2]

\end{document}

调整参数以适应。

在此处输入图片描述

答案2

这是一个简单的解决方案,没有marginnote:我只是从@David Carlisle那里借用了一个代码。另外,在我看来,无衬线字体在如此繁重的规则下看起来会更好,并且与cabin它们特别匹配。您还可以考虑将规则的高度设置为与小写 字母,而不是大写字母:

\documentclass{article}
\usepackage[showframe, reversemp]{geometry}
\usepackage{cabin}
\usepackage{color}
\definecolor{darkcandyapplered}{rgb}{0.64, 0.0, 0.0}

\makeatletter
\newcommand\thickrulefill[1][1ex]{\leavevmode\leaders\hrule height#1\hfill\kern\z@}
\makeatother

\newcommand{\stitleA}[2] {%
    \noindent\textcolor{darkcandyapplered}{\large\sffamily\bfseries\llap{\rule{\marginparwidth}{8.4pt}\hspace*{\marginparsep}}\hspace*{-\fontdimen2\font}#1\hskip\marginparsep\thickrulefill[8.4pt]}%
    \\[#2\baselineskip]}
\newcommand{\stitle}[2] {%
    \noindent\textcolor{darkcandyapplered}{\large\sffamily\bfseries%
    \llap{\rule{\marginparwidth}{1ex}\hspace*{\marginparsep}}\hspace*{-\fontdimen2\font}#1\hskip\marginparsep\thickrulefill}%
    \\[#2\baselineskip]}

\begin{document}

\stitle{Education}{0}

\stitleA{Education}{0}

\end{document} 

在此处输入图片描述

答案3

\documentclass{article}
\usepackage[showframe, reversemp]{geometry}
\usepackage{cabin}
\usepackage{xcolor}
\usepackage{xhfill}
\definecolor{darkcandyapplered}{rgb}{0.64, 0.0, 0.0}
\newcommand\stitle[1]{%
  \noindent\textcolor{darkcandyapplered}{%
    \hspace*{\dimexpr-\marginparwidth-\marginparsep}%
      \rule{\marginparwidth}{2ex}%
      \hspace{\marginparsep}\textbf{\textsf{#1}}}\hspace{\marginparsep}% 
        \xhrulefill{darkcandyapplered}{2ex}\par}
\begin{document}

    \stitle{Education}

\end{document} 

在此处输入图片描述

答案4

FWIW,这是一个 ConTeXt 解决方案。ConTeXt 已经有一个命令\textrule,可以完成几乎完全需要的操作。\textrule{#1}文本区域,绘制固定宽度的规则,留出固定距离,排版#1,留出固定距离,绘制规则,直到剩余可用宽度。

\textrule从文本区域的边缘开始,因此要获得所需的结果,我们需要做的就是更改,\leftskip使文本区域的左边缘与左边距的左边缘相同。这可以使用来完成\startnarrower

结合这两个,完整的代码如下:

\setuplayout
    [
      cutspace=1in,
      backspace=1in,
      width=middle,
      leftmargin=0.5in,
      rightmargin=0.5in,
    ]

\definecolor[darkcandyapplered][r=0.64]

\setuptextrules
    [
      width=\leftmarginwidth, distance=\leftmargindistance,
      rulecolor=darkcandyapplered, rulethickness=1.5ex,
      style=\bfb,
    ]

\definenarrower
    [rulenarrower]
    [
      left=-\the\dimexpr\leftmargindistance+\leftmarginwidth\relax,
      default=left,
      right=0pt,
    ]

\define[1]\titlecommand
    {\startrulenarrower\textrule{#1}\stoprulenarrower}

\showframe % To see the page boundaries

\starttext

\titlecommand{Education}

\input ward

\stoptext

这使

在此处输入图片描述

相关内容