我很难编写一个紧凑的命令,让我在两行之间插入文本。我读了一些链接,例如这还有这个,但每个方法都分别处理左线和右线
\documentclass{article}
\usepackage{amsmath} %<<===
\usepackage[normalem]{ulem}
\usepackage{xcolor}
\newcommand\gsout{\bgroup\markoverwith{\textcolor{gray}{\rule[0.5ex]{2pt}{2.5pt}}}\ULon}
\newcommand*{\sxrule}[1][3em]{\textcolor{gray}{\rule[0.5ex]{#1}{2.5pt}}\;}
\begin{document}
\sxrule Osservazioni \gsout{\hfill}
\end{document}
有什么建议吗?谢谢
答案1
也许是这样的:
代码如下:
\documentclass{article}
\usepackage{xcolor}
\usepackage{lipsum}
\newlength\sxrulelength
\newcommand\sxrule[2][3em]{%
\settowidth\sxrulelength{\,#2\,}%
\noindent%
\textcolor{gray}{\rule[0.5ex]{#1}{2.5pt}}\,#2\,%
\textcolor{gray}{\rule[0.5ex]{\dimexpr\linewidth-\sxrulelength-#1\relax}{2.5pt}}%
}
\begin{document}
\lipsum
\sxrule{Osservazioni}
\lipsum
\end{document}
该\sxrule
宏有一个可选参数,用于控制“左手”线的长度。与 OP 中一样,默认为3em
。
从评论来看,也许定义
\newcommand\sxrule[2][3em]{%
\settowidth\sxrulelength{\,#2\,}%
\noindent%
\textcolor{gray}{\rule[0.5ex]{#1}{2.5pt}}\,\textbf{#2}\,%
\textcolor{gray}{\rule[0.5ex]{\dimexpr\linewidth-\sxrulelength-#1\relax}{2.5pt}}%
}
更好,因为现在\sxrule{Osservazioni}
将“Osservazioni”以粗体显示:
答案2
\documentclass{article}
\usepackage[normalem]{ulem}
\usepackage{xcolor,lipsum}
\newcommand\filrule{{\color{gray}{\leaders
\hrule height .7ex depth -.4ex \hfill }\hskip .0em}}
\def\ruledworld#1{\bigskip\noindent\filrule\quad%
#1\quad\filrule\bigskip\par}
\begin{document}
\ruledworld{Osservazioni}
\lipsum[2]
\ruledworld{Grandi conclusioni}
\lipsum[3]
\end{document}
如果您不想让单词居中,而是从固定点开始,请将\filrule
定义中的第一个 更改\ruledworld
为正常的。或者您可以在左侧\rule
留下一个,但在右侧留下几个(例如),以便将单词\filrule
\filrule\filrule\filrule
居中关于某个点(在该示例中,在线的 25% 处)。