如何自定义节标题后面的水平规则?

如何自定义节标题后面的水平规则?

我正在准备我的简历,想自定义部分标题。

我想要一个水平线填写空白处(线宽)在节标题之后。

以下是我到目前为止能够做的事情:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[hmargin=1.25cm, vmargin=1.25cm]{geometry}
\usepackage[explicit]{titlesec}
\usepackage[x11names]{xcolor}
\usepackage{xhfill}

\titleformat{\section}{\Large\raggedright}{}{0em}{\textcolor{gray}{\rule{5mm}{3mm}} #1 \xhrulefill{gray}{3mm}}

\begin{document}

{\noindent\Huge{John Doe}}
\section{Education}

\end{document}

上面的代码给出了以下输出: 在此处输入图片描述

但是,我想在右侧有一个像这样的颜色渐变: 在此处输入图片描述

有人可以建议如何实现这一点吗?

答案1

受@muzimuzhiZ 的回答启发,使用一个框来导出标题的长度。对于多行标题,它根本不起作用。

\documentclass{article}
\usepackage[hmargin=1.25cm, vmargin=1.25cm]{geometry}
\usepackage[explicit]{titlesec}
\usepackage[x11names]{xcolor}

\usepackage{tikz}
\usepackage{lipsum}
\newsavebox\MyBox
\titleformat{\section}{\Large\raggedright}{}{0em}{%
  \tikz\fill[black](0,0) rectangle (5mm,3mm);%
  \sbox\MyBox{\ #1\ }\usebox\MyBox%
  \tikz\fill[left color=black, right color=black!20] (0,0) rectangle (\linewidth-5mm-\the\wd\MyBox, 3mm);%
}

\begin{document}
{\noindent\Huge{John Doe}}
\section{Education}
\lipsum[1]
\section{Test of longer section}
\lipsum[2]
\end{document}

在此处输入图片描述

答案2

  • 使用包\linegoal中的linegoal方法来获取当前行的剩余宽度。
  • 使用tikz包用阴影(水平颜色渐变)填充矩形。 xhfill使用\leader窄彩色规则填充剩余的线,因此不能应用阴影。
  • \linegoal会将位置信息写入辅助文件,因此不能直接在坐标中使用tikz。因此,其扩展值存储在临时长度中\mylinegoal
\documentclass{article}
\usepackage[hmargin=1.25cm, vmargin=1.25cm]{geometry}
\usepackage[explicit]{titlesec}
\usepackage[x11names]{xcolor}

\usepackage{tikz}
\usepackage{linegoal}

\newlength\mylinegoal

\makeatletter
\newcommand\setlinegoal{%
  \setlength\mylinegoal{\linegoal}%
  % draw only when \linegoal expands to the remaining length
  \ifdim\mylinegoal=\linewidth
    \expandafter\@gobble
  \else
    \expandafter\@firstofone
  \fi
}
\makeatother

\titleformat{\section}{\Large\raggedright}{}{0em}{%
  \textcolor{gray}{\rule{5mm}{3mm}} #1 %
  \setlinegoal{%
    \tikz\fill[left color=gray, right color=black!20] 
      (0,0) rectangle (\mylinegoal, 3mm);%
  }%
}

\begin{document}

{\noindent\Huge{John Doe}}
\section{Education}

\section{Test loooong loooong loooong loooong loooong loooong loooong title}
\end{document}

在此处输入图片描述

相关内容