这弧包可用于在一段文本上方或下方放置弧线。
它是一个在文本模式下工作的包,但可能是另一个仅在文本模式下工作的包,而且不一定是我选择的包。
我认为它只是一个特定的包,只在文本模式下使用,而不是在数学模式下使用。我从来没有用过这个包。使用这个 MWE 时,我遇到了一个错误
\documentclass[a4paper,12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{amssymb, amsmath}
\usepackage{arcs}
\begin{document}
\overarc{A}
\end{document}
LaTeX Font Warning: Font shape OML/cmm/m/it in size <3.59999> not available(Font)
目前我记不太清楚了。在 LaTeX 中,有什么策略可以将文本模式的特定包转换为数学模式?
答案1
要修复无限循环,应该这样做:
\documentclass{article}
\usepackage{arcs}
\usepackage{xpatch}
\makeatletter
\xpatchcmd\over@under@arc
{\let \rs@size@warning = \@gobbletwo}
{\let \rs@size@warning = \@gobblethree}
{}{\fail}
\makeatother
\begin{document}
\overarc{A}\overarc{a} \par
\underarc{A}\underarc{a}
\end{document}
但我无法提供数学模式变体。抱歉。
更新:
一次糟糕的尝试:$\overarc{$A$}, \underarc{$a$}$
。
或者,您可以使用包\overparen
提供\underparen
的unicode-math
。此包需要支持 unicode 的引擎,如 XeTeX 或 LuaTeX。这两个命令记录在unimath-symbols.pdf
,第 5 和 6 节。
\documentclass{article}
% this uses otf math font "Latin Modern Math" by default
\usepackage{unicode-math}
\begin{document}
\[
\overparen{a} \overparen{A} \overparen{AB}
\underparen{a} \underparen{A} \underparen{AB}
\]
\end{document}
有一个奇妙的TeX-SX 答案提供有关可用 otf 数学字体的更新信息。
答案2
我没有使用这个包,而是arcs
借用了我的回答数学模式中的大波浪符号,以适应当前目的。参见附录用于arcs
包装方法。
请注意,我在 MWE 演示文稿中做了一些垂直挤压(不在宏定义中),以免它从我的屏幕截图中运行出来。
\documentclass{article}
\usepackage{scalerel}
\usepackage{stackengine,wasysym}
\newcommand\reallywideoverarc[1]{\ThisStyle{%
\setbox0=\hbox{$\SavedStyle#1$}%
\stackengine{-.5\LMpt}{$\SavedStyle#1$}{%
\stretchto{\scaleto{\SavedStyle\mkern.2mu\frown}{.4\wd0}}{.6\ht0}%
}{O}{c}{F}{T}{S}%
}}
\newcommand\reallywideunderarc[1]{\ThisStyle{%
\setbox0=\hbox{$\SavedStyle#1$}%
\stackengine{1.5\LMpt}{$\SavedStyle#1$}{%
\stretchto{\scaleto{\SavedStyle\mkern.2mu\smile}{.4\wd0}}{.6\ht0}%
}{U}{c}{F}{T}{S}%
}}
\def\test#1{$%
\reallywideoverarc{#1}\,
\scriptstyle\reallywideoverarc{#1}\,
\scriptscriptstyle\reallywideoverarc{#1}
$\par\vspace{-4pt}$%
\reallywideunderarc{#1}\,
\scriptstyle\reallywideunderarc{#1}\,
\scriptscriptstyle\reallywideunderarc{#1}
$\par\vspace{-2pt}}
\parskip 1ex
\begin{document}
\test{abcdefghijklm}
\test{abcdefghijk}
\test{abcdefghi}
\test{abcdefg}
\test{abcde}
\test{abc}
\test{ab}
\end{document}
ps:后来我发现我在这里至少对这类问题做了部分回答:\overarc 补丁的奇怪结果
附录
根据评论,OP 要求我在回答中详细说明。在尝试实际使用该arcs
包时,我发现,就像这个问题的另一个答案一样,该包表现不佳。另一个答案中给出的解决该问题的方法是在 的定义中将更改\@gobbletwo
为。但是,结果仍然处于文本模式。要将数学模式作为默认模式,需要进行另外两项更改:\@gobblethree
\over@under@arc
\renewcommand{\overarc}[2][1]{\over@under@arc{#1}{$#2$}\z@}
\renewcommand{\underarc}[2][1]{\over@under@arc{#1}{$#2$}\@ne}
通过这三个更改,结果将在数学模式下设置。但是,\overarc` 对圆弧本身没有斜体校正。
\documentclass[a4paper,12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{amssymb, amsmath}
\usepackage{arcs}
\usepackage{xpatch}
\makeatletter
\xpatchcmd\over@under@arc
{\let \rs@size@warning = \@gobbletwo}
{\let \rs@size@warning = \@gobblethree}
{}{\fail}
\renewcommand{\overarc}[2][1]{\over@under@arc{#1}{$#2$}\z@}
\renewcommand{\underarc}[2][1]{\over@under@arc{#1}{$#2$}\@ne}
\makeatother
\begin{document}
\overarc{A}
\overarc{AB}
\underarc{A}
\underarc{AB}
\end{document}