我试图\overarc
在新文档上使用该命令,但它没有编译,只是花了很长时间,所以我不得不停止编译。
我尝试在另一个文档上加载几个包,它工作正常。当我删除包时,我发现我必须xwatermark
同时加载包arcs
才能工作。
有人知道为什么会发生这种情况吗?
\documentclass{article}
\usepackage{xwatermark}
\usepackage{arcs}
\begin{document}
\(\overarc{AB}\)
\end{document}
答案1
arcs 包尝试通过从相当小的字体大小开始,然后进行循环来增加字体大小,直到找到匹配的弧,从而找到弧的正确大小。
问题是,要增加字体大小,它使用 relsize 包。如果字体具有“离散”字体缩放(这是现代计算机的默认设置),那么它不会执行 arcs 包所期望的操作,因为它使用了相当高的容差:
\documentclass{article}
\usepackage{relsize}
\begin{document}
% default \RSpercentTolerance=30%:
\relsize{-10}a
\relsize{+1}a
\relsize{+1}a
\relsize{+1}a
\relsize{+1}a
\relsize{+1}a
\relsize{+1}a
\relsize{+1}a
\relsize{+1}a
\renewcommand\RSpercentTolerance{5} %now 5%
\relsize{-10}a
\relsize{+1}a
\relsize{+1}a
\relsize{+1}a
\relsize{+1}a
\relsize{+1}a
\relsize{+1}a
\relsize{+1}a
\relsize{+1}a
\end{document}
正如我们所见,字体并没有变大,因此出现了无限循环。
为了避免该问题,可以加载fix-cm
使所有字体缩放连续的程序,或者像这样修补 arcs 命令(也应应用 egregs patch):
\documentclass{article}
\usepackage{arcs}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\over@under@arc}
{\relsize{-10}}{\renewcommand\RSpercentTolerance{5}\relsize{-10}}{}{\fail}
\makeatother
\begin{document}
\(\overarc{AB}\)
\end{document}
答案2
这很奇怪。;-)
另一方面,输出是错误的,但可以通过打补丁来修复:
\documentclass{article}
\usepackage{xwatermark}
\usepackage{arcs}
\usepackage{etoolbox}
\makeatletter
\providecommand\@gobblethree[3]{}
\patchcmd{\over@under@arc}
{\@gobbletwo}
{\@gobblethree}
{}{}
\makeatother
\begin{document}
text $a$ \(\overarc{AB}\)
\end{document}
正如 Ulrike Fischer 在评论中指出的那样,真正需要的包是fix-cm
。