如何在 mpost 正文中使用 LaTeX 命令?(metauml + gmp)

如何在 mpost 正文中使用 LaTeX 命令?(metauml + gmp)

我在 Overleaf 上使用 gmp + metauml 创建 UML 类图,希望使用 LaTeX 命令更好地格式化文本。我尽力阅读了两个软件包的手册并仔细查看了 TeX.SE,但找不到方法。

具体来说,我希望使用\vphantom{}命令来更好地格式化类的属性,并修复MetaUML 添加额外的垂直空间

\textbf{}尝试使用

\documentclass{article}
\usepackage[shellescape,latex]{gmp}

\begin{document}
\begin{mpost}[mpsettings={input metauml;}]
    beginfig(1);
        Class.subject("Subject")("-test:\textbf{h}")(static "+attach(o : Observer)");
        drawObjects(subject);
    endfig;
    end
\end{mpost}
\end{document}

命令的扩展结果如下所示:

在此处输入图片描述

\vphantom{}尝试在输出中使用结果

在此处输入图片描述

和错误: 在此处输入图片描述

任何帮助都将受到赞赏。

答案1

lualatex使用和可能会更好luamplib。这是针对该环境重新编写的示例。

\documentclass[border=5mm]{standalone}
\usepackage{fontspec}
\setmainfont{TeX Gyre Termes}
\usepackage{luamplib}
\mplibtextextlabel{enable}
\begin{document}
\begin{mplibcode}
input metauml
beginfig(1);
Class.subject("Subject")("-test:\textbf{h}")(static "+attach(o : Observer)");
drawObjects(subject);
endfig;
\end{mplibcode}
\end{document}

编译后lualatex结果如下:

在此处输入图片描述

请注意,您必须在文档级别明确将字体设置为 Times(或等效字体),并且您需要进行\mplibtextextlabel{enable}设置,以便所有标签都使用TEX()宏自动处理。

还要注意的是,Overleaf 有一个选项(左上角的菜单)可以将编译器更改为lualatex。我可以确认我展示的重新编写的示例在那里产生了相同的输出。

相关内容