我认为这并不难,但我对计算和尺寸确实很陌生。
在上面的代码中,我想自动计算左右线的尺寸,例如在左右两侧留出 20% 的线宽不做线格。如果可以有 LaTeX3 版本,那对我来说就太好了。
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{tcolorbox}
\usepackage[showframe]{geometry}
\newcommand\docruler[1]{%
\begin{center}
\color{green!50!black}%
\scriptsize%
\itshape\bfseries%
\rule{.25\linewidth}{2.5pt}% <-- Calc. here.
\,\,#1\,\,%
\rule{.25\linewidth}{2.5pt}% <-- Calc. here.
\end{center}
}
\begin{document}
\docruler{ABCDEFGH}
\docruler{ABCDEFGH}
\docruler{XYZ}
\end{document}
答案1
下面通过首先将参数排版到一个框中并测量该框来明确计算宽度。
我已经加载了该showframe
包,以便可以估算出 20% 的线宽是空闲的。
\documentclass[]{article}
\usepackage{showframe}
\ExplSyntaxOn
\box_new:N \l_projetmbc_tmpa_box
\dim_new:N \l_projetmbc_rule_dim
\NewDocumentCommand \docruler { m }
{
\begin {center}
\scriptsize\itshape\bfseries
\hbox_set:Nn \l_projetmbc_tmpa_box { \,\, #1 \,\, }
\dim_set:Nn \l_projetmbc_rule_dim
{ .3\linewidth - .5\box_wd:N \l_projetmbc_tmpa_box }
\rule { \dim_use:N \l_projetmbc_rule_dim } { 2.5pt }
\box_use:N \l_projetmbc_tmpa_box
\rule { \dim_use:N \l_projetmbc_rule_dim } { 2.5pt }
\end {center}
}
\ExplSyntaxOff
\begin{document}
\docruler{ABCDEFGH}
\docruler{ABCDEFGH}
\docruler{XYZ}
\end{document}