如果我想在某些文本而不是等式上画一条上划线,我该怎么做?\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}