来自 arcs 包和 xwatermark 的 \overarc 命令

来自 arcs 包和 xwatermark 的 \overarc 命令

我试图\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

相关内容