\数学模式之外的上划线

\数学模式之外的上划线

如果我想在某些文本而不是等式上画一条上划线,我该怎么做?\overline似乎只能在数学模式下工作,而在数学模式之外使用时,它会自动显示“缺少插入$”。

答案1

简单回答:

\newcommand{\textoverline}[1]{$\overline{\mbox{#1}}$}

不是那么简单,但更简洁:

\makeatletter
\newcommand*{\textoverline}[1]{$\overline{\hbox{#1}}\m@th$}
\makeatother

我们使用数学模式的常态\overline,利用\hbox数学模式中的以数学公式开始时的当前字体排版其参数的事实(也保留空格)。

奇怪的\m@th是,为了防止可能设置参数\mathsurround,在内联数学公式前后添加一个空格;它通常为零,但类可能会更改它。当数学模式用于此类操作时,最好谨慎行事:将\m@th参数设置为零,但由于数学公式形成一个组,因此设置是本地的,不会更改全局设置。

答案2

使用\={o},它在文本模式下工作。

答案3

您的问题的基本答案是,\overline{}如果您将数学模式中的命令与命令结合使用,您也可以将其用于文本\mbox{}。该\mbox{}命令允许您在数学模式下退出数学模式。所以试试这个:

\documentclass{article}
\begin{document}
$\overline{\mbox{This is under a line}}$ but this isn't.
\end{document}

egreg 基本上回答了您的问题,但没有太多解释,而且这篇文章太长了,不适合作为评论。

答案4

\documentclass{article}
\newsavebox\TBox
\def\textoverline#1{\savebox\TBox{#1}%
  \makebox[0pt][l]{#1}\rule[1.1\ht\TBox]{\wd\TBox}{0.4pt}}
\begin{document}

\textoverline{foo}
\textoverline{\textit{foo\"A}}
\tiny\textoverline{bar}

\end{document}

相关内容