计算规则的长度(在 LaTeX3 中?)

计算规则的长度(在 LaTeX3 中?)

我认为这并不难,但我对计算和尺寸确实很陌生。

在上面的代码中,我想自动计算左右线的尺寸,例如在左右两侧留出 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}

在此处输入图片描述

相关内容