我希望使用 tikz 创建一个奇特的线分隔符,以类似于下面显示的分隔符。
分隔线基本上是一条细细的灰线,上面有一个较大的矩形,矩形的长度恰好等于其下方部分标题的长度。我真的不知道如何在 LaTeX 中实现这一点,而且看起来可能相当复杂。不过,我真的很感激您的意见。
\documentclass[11pt,a4paper]{article}
\usepackage{xcolor}
\usepackage[explicit]{titlesec}
%Underlining ruler for subsections
\titleformat{\section}
{\normalfont\Large\bfseries}
{}
{0em}
{#1}
[{\color{gray!50}\titlerule[0.8pt]}]
\begin{document}
\section{A test section}
Text text text
\end{document}
答案1
选项calcwidth
将寄存器设置\titlewidth
为标题中最长的行,然后是较粗行的宽度。较细的线随后是宽度\linewidth
。
规则在标题之前使用\vadjust pre
(pdfTeX 发明的关键字pre
,也在 XeTeX/LuaTeX 中实现)设置。
TikZ 不是必需的,规则是用\hrule
纯 TeX 绘制的。
例子:
\documentclass[11pt,a4paper]{article}
\usepackage{xcolor}
\usepackage[calcwidth]{titlesec}
%Underlining ruler for subsections
\titleformat{\section}%
[hang]% shape
{\normalfont\Large\bfseries}% format
{}% label
{0mm}% sep
{%
\vadjust pre{%
\color{gray!50}%
\hrule width \titlewidth height 4pt\relax
\hrule width \linewidth height .4pt\relax
}%
}% before-code
\begin{document}
\section{A test section}
Text text text
\end{document}
答案2
这是将灰色条的长度调整为文本长度的一种可行方法。如标题所述,它利用了 tikz。
\documentclass{article}
\usepackage{tikz}
\usepackage{calc}
\usepackage{lipsum}
\usepackage[explicit]{titlesec}
\usepackage[titles]{tocloft}
\newlength{\marmotlength}
\setlength{\marmotlength}{2.7cm}
\newcommand\myfancysection[1]{\addtolength\marmotlength{\widthof{\Large{\textbf{#1}}}}%
\typeout{feep \the\marmotlength}
\tikz[baseline=(CHAP.base),very thick]{
\draw[use as bounding box,draw=white,fill=white] (0,0) rectangle (2cm,2cm);
\node[fill=white,minimum width=1.5cm,outer sep=0pt,rounded corners] (CHAP) at
(1cm,\baselineskip+1ex) {\Large{\textbf{\textsf{\thesection}}}};
\draw[black, line width=1pt](2cm,1.2cm) -- (\textwidth,1.2cm);
\draw[gray!50!, line width=2mm](2cm,1.2cm) -- (\marmotlength,1.2cm);
}}
\titleformat{\section}
{\normalfont}{\myfancysection{#1}}{1em}{\Large{\textbf{#1}}}
\begin{document}
\section{Blabla}
\lipsum[1]
\section{Blablablabla}
\lipsum[2]
\end{document}