将文本模式中的特定包转换为数学模式

将文本模式中的特定包转换为数学模式

包可用于在一段文本上方或下方放置弧线。

它是一个在文本模式下工作的包,但可能是另一个仅在文本模式下工作的包,而且不一定是我选择的包。

在此处输入图片描述

我认为它只是一个特定的包,只在文本模式下使用,而不是在数学模式下使用。我从来没有用过这个包。使用这个 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提供\underparenunicode-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}

在此处输入图片描述

相关内容