在双水平线之间居中文本

在双水平线之间居中文本

我想做这样的事:

====================   Text   ====================

其中 '===' 表示两条水平线相隔 2pt。换句话说,我想将一些文本置于双水平线之间。我找到了一个类似的问题这里并尝试采用egreg提出的以下解决方案:

\newcommand{\textbetweenrules}[2][.4pt]{%
  \par\vspace{\topsep}
  \noindent\makebox[\textwidth]{%
    \sbox0{#2}%
    \dimen0=.5\dimexpr\ht0+#1\relax
    \dimen2=-.5\dimexpr\ht0-#1\relax
    \leaders\hrule height \dimen0 depth \dimen2\hfill
    \quad #2\quad
    \leaders\hrule height \dimen0 depth \dimen2\hfill
  }\par\nopagebreak\vspace{\topsep}
}

并将其与给出的解决方案结合起来这里制定双重规则:

\hrule width \hsize \kern 1mm \hrule width \hsize

但是,无论我怎么尝试,第二个 \hrule 似乎都无法被正确识别,并且我的文档上要么打印出“高度深度”,要么什么都没有。

\documentclass{article}
\usepackage{lipsum}

\newcommand{\textbetweenrules}[2][.4pt]{%
  \par\vspace{\topsep}
  \noindent\makebox[\textwidth]{%
    \sbox0{#2}%
    \dimen0=.5\dimexpr\ht0+#1\relax
    \dimen2=-.5\dimexpr\ht0-#1\relax
    \leaders\hrule height \dimen0 depth \dimen2 \kern2pt \hrule height \dimen0 depth \dimen2\hfill
    \quad #2\quad
    \leaders\hrule height \dimen0 depth \dimen2 \kern2pt \hrule height \dimen0 depth \dimen2\hfill\hfill
  }\par\nopagebreak\vspace{\topsep}
}

\begin{document}

\lipsum[2]

\textbetweenrules{Text}

\lipsum[3]

\end{document}

答案1

您可以使用相同的想法,但是领导者在这里不起作用,因此我在计算其宽度后准备了一个具有双重规则的 vbox。

有点随意的是,规则之间的空间是其厚度的四倍。

\documentclass{article}

\newcommand{\textbetweendoublerules}[2][.4pt]{%
  \par\addvspace{\topsep}
  \noindent\makebox[\textwidth]{%
    \sbox0{\quad#2\quad}%
    \dimen0=.5\dimexpr\ht0+#1\relax
    \dimen2=-.5\dimexpr\ht0-#1\relax
    \dimen4=.5\dimexpr\textwidth-\wd0\relax
    \setbox2=\vbox to \ht0{%
      \vss
      \hrule width \dimen4 height #1
      \kern 4\dimexpr#1\relax
      \hrule width \dimen4 height #1
      \vss
    }%
    \copy2 \box0 \box2
  }\par\nopagebreak\addvspace{\topsep}%
}

\begin{document}

\textbetweendoublerules{abc}

\end{document}

在此处输入图片描述

答案2

我会采用不同的方法,将文本放在线条上方的彩色框中。这样你就不必担心居中了。

(以下代码仅供参考,请根据您的需要调整长度)

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

\newcommand{\textbetweenrules}[1]{%
    \begin{center}
        \setlength{\fboxsep}{0.4cm}
        \rule{\textwidth}{1pt}\\[-0.3cm]
        \rule{\textwidth}{1pt}\\[-0.65cm]
        \colorbox{white}{#1}
    \end{center}
}

\begin{document}

\lipsum[1]

\textbetweenrules{Text}

\lipsum[2]

\textbetweenrules{longer text text text}

\lipsum[3]

\end{document}

在此处输入图片描述

答案3

加载 Ti 可能会有点过头Z,但是如果你无论如何都要加载它,你可以考虑以下代码:

\documentclass{article}
\usepackage{lipsum}
\usepackage{tikz}


\newcommand{\RuleText}[1]{%
\centerline{\tikz{\draw[double,line width=1pt,double distance between line
centers=3pt] (0,0)--(\linewidth,0) node[midway,fill=white]{#1};}}}

\begin{document}

\lipsum[1]

\RuleText{koala bear}

\lipsum[2]

\RuleText{marmot}

\lipsum[3]

\end{document}

在此处输入图片描述

答案4

这是一个相当“老套”的版本,但至少适用于短文本。您必须尝试使用​​ vskips 才能获得 2pt 距离。

线

\documentclass{article}
\usepackage{lipsum}
\newcommand\textbetweenlines[1]{%
    \par
    \vskip-.2\baselineskip
    \noindent\hrulefill\phantom{\quad#1\quad}\hrulefill\par
    \vskip-.8\baselineskip
    \noindent\hrulefill\quad%
    \raisebox{-.1\baselineskip}{#1}\quad\hrulefill%
    \par
    \vskip.1\baselineskip
}
\begin{document}
\lipsum[1]
\textbetweenlines{Test}
\lipsum[1]
\end{document}

相关内容