软件包 gmp 存在问题:\sqrt 标签中

软件包 gmp 存在问题:\sqrt 标签中

gmp包装不能与\sqrt标签配合,这很奇怪。背面

\documentclass{article}
\usepackage[shellescape,latex]{gmp}%nowrite
\usempxclass{amsart}
\usempxpackage{amssymb}

\title{Metapost+gmp}

\begin{document}

\maketitle
    \begin{figure}[htbp]
        \centering
        \begin{mpost}
            draw fullcircle scaled 100pt;
            label(btex $r=10$ etex, origin);
            %to test, un-comment the following line:
            %label(btex $r=\sqrt{100}$ etex, origin);
        \end{mpost}
        \caption{Caption}
        \label{fig:my_label}
    \end{figure}
\end{document}

我测试过,问题没有出现在 中mpgraphics。这是 的一个错误吗gmp

更新:

错误信息:

l.17  label(btex
                 $r=\protect \let \reserved@d =[\def \begingroup \def ##1,{}...
The two files given above are one of your source files
and an auxiliary file I need to read to find out what your
btex..etex blocks mean. If you don't know why I had trouble,
try running it manually through MPtoTeX, TeX, and DVItoMP

答案1

当 中需要 LaTeX 宏时label,请使用\btex,而不是btex

\begin{mpost}
  draw fullcircle scaled 100pt;
  label(\btex $r=\sqrt{100}$ etex, origin);
\end{mpost}

它已经在文档第 1 页底部公布

这会产生一些后果;例如,METAPOST 标签通常会放在
\btex ... etex

另请参见图 6 中的示例并\btex在手册中查找。

在此处输入图片描述

为什么是\btex必要的?因为的目的之一gmp是能够将 LaTeX 宏传递给环境mpost,主要是为了根据上下文使用长度。因此.mp文件是用全面扩张。一些宏不会受到此影响,但标签使用btex...etex通常包含需要防止过早扩展的内容。

\btex...etex因此,我们设计了这种方法;基本上它变成了

btex \unexpanded{...} etex

当它被传递以写入文件时,其效果是“逐字地”.mp写入构造。btex ... etex

在标准.mp文件中\btex,完全等同于btex,因为\定义为,因此可以relax复制并粘贴到另一个文件。.mp

答案2

或者如果lualatex这对于您来说是一个合适的选择,您可能想尝试这种luamplib方法。

\documentclass{amsart}
%-----------
\usepackage{luatex85}
\usepackage{luamplib}
\everymplib{verbatimtex \leavevmode etex; beginfig(0);}
\everyendmplib{endfig;}
\mplibtextextlabel{enable}
% see: `texdoc luamplib` for details...
%----------
\usepackage{amssymb}
\title{Metapost+luamplib}
\begin{document}

\maketitle
\begin{figure}[htbp]
    \centering
        \begin{mplibcode}
            draw fullcircle scaled 100pt;
            label("$r=10$", 20 up);
            label("$r=\sqrt{100}$", origin);
        \end{mplibcode}
    \caption{Caption}
    \label{fig:my_label}
\end{figure}
\end{document}

通过该\mplibtextextlabel{enable}选项,您可以直接使用字符串来代替btex .. etex机制,而不需要任何特殊的转义。

在此处输入图片描述

相关内容