是否可以在数学模式下创建一条中间有包含符号的间隙的上划线?
我想要实现的是这样的:
答案1
像这样吗?
\documentclass{article}
\usepackage{amsmath}
\newcommand{\joverline}[2]{%
\mathord{% make sure we're in math mode
\vbox{\offinterlineskip
\halign{##\cr
\hrulefill$\,\scriptscriptstyle#1\,$\hrulefill\cr
\noalign{\kern.3ex}
$#2$\cr
}%
}%
}%
}
\begin{document}
$\joverline{n}{(Q,\emptyset)}$
\end{document}
如果您计划在下标/上标中也使用此构造,则可能还需要更多内容。
上标按照规则垂直居中的版本:
\documentclass{article}
\usepackage{amsmath}
\newcommand{\chrulefill}{%
\leaders\hrule height \dimexpr\fontdimen22\scriptscriptfont2+0.2pt\relax
depth -\dimexpr\fontdimen22\scriptscriptfont2-0.2pt\relax
\hfill}
\newcommand{\joverline}[2]{%
\mathord{% make sure we're in math mode
\vbox{\offinterlineskip
\halign{##\cr
\chrulefill$\,\scriptscriptstyle#1\,$\chrulefill\cr
\noalign{\kern.2ex}
$#2$\cr
}%
}%
}%
}
\begin{document}
$\joverline{n}{(Q,\emptyset)}$
\end{document}
您可以通过修改;来改变规则和主体部分之间的间距\kern.2ex
,随意调整。
答案2
当前设置的重叠间隙为 2pt,可以进行更改以适应。
\documentclass{article}
\usepackage{stackengine}
\usepackage{calc}
\newcommand\overlineset[2]{%
\stackengine{2pt}{$#1$}{\makebox[\widthof{$#1$}]{%
$\scriptscriptstyle\hrulefill\,#2\,\hrulefill$}}{O}{c}{F}{T}{S}%
}
\begin{document}
\(\overlineset{(Q,\emptyset)}{n}\)
\end{document}