彩色数学表达式 metapost

彩色数学表达式 metapost

有没有办法在 metapost 中打印单个标签(以数学符号表示)像这样

label(btex \Large{$3$} etex,(2,-1));

使用一些特定的颜色,如红色或蓝色?

先感谢您。

答案1

它很简单,但是仍有一些事项需要牢记。

label中定义plain.mp在正确的位置绘制 <picture> 变量。如果您传递纯字符串,它会自动转换为 <picture> infont。如果您传递btex ... etex字符串,它将在传递给 之前转换为 <picture> label

所以如果你label(btex $3$ etex, (2,1));这样做,本质上就等同于

picture P;
P = btex $3$ etex;
draw P shifted (2,1);

因此如果你label(btex $3$ etex, (2,1)) withcolor red;这样做,就会扩展为

picture P;
P = btex $3$ etex;
draw P shifted (2,1) withcolor red;

您的标签会显示为红色。在普通 MP 中,图片中的所有内容P都只会显示为红色。因此,您可能需要考虑这个程序:

prologues := 3;
outputtemplate := "%j%c.eps";
verbatimtex
\documentclass{article}
\usepackage{xcolor}
\begin{document}
etex

beginfig(1);

picture T[]; 
T1 = btex $e=mc^2$ etex;
T2 = btex $\mathcolor{red}{e} = \mathcolor{blue}{mc}^2$ etex;
T3 = image(
    fill fullcircle scaled 22 -- reverse fullcircle scaled 14 -- cycle withcolor blue;
    fill unitsquare shifted -(1/2, 1/2) xscaled 36 yscaled 4 withcolor red;
) shifted 18 right;

for i = 1, 2, 3:
    draw T[i] shifted (0, -64i);
    draw T[i] shifted (60, -64i + 12) withcolor 1/2 red;
    draw T[i] shifted (60, -64i - 12) withcolor 1/2 green;
endfor

endfig;
end.

如果你编译它,mpost -tex=latex你应该得到一个如下所示的 EPS 文件:

在此处输入图片描述

withcolor请注意,当您在命令后添加后,这三幅图像将变成“单色” draw。即使它们原本是多色的。

luamplib用户额外说明

当前的 TeXLive 版本似乎有一个怪癖 —— 或者可能是一个错误 —— luamplib。如果你更改上述程序的标题,使其看起来像这样:

\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\usepackage{xcolor}
\begin{document}
\begin{mplibcode}

beginfig(1);

picture T[]; 

T1 = btex $e=mc^2$ etex;
T2 = btex $\mathcolor{red}{e} = \mathcolor{blue}{mc}^2$ etex;
T3 = image(
    fill fullcircle scaled 22 -- reverse fullcircle scaled 14 -- cycle withcolor blue;
    fill unitsquare shifted -(1/2, 1/2) xscaled 36 yscaled 4 withcolor red;
) shifted 18 right;

for i = 1, 2, 3:
    draw T[i] shifted (0, -64i);
    draw T[i] shifted (60, -64i + 12) withcolor 1/2 red;
    draw T[i] shifted (60, -64i - 12) withcolor 1/2 green;
endfor

endfig;
\end{mplibcode}
\end{document}

重新编译后lualatex你将得到如下的 PDF:

在此处输入图片描述

由于某种原因,withcolor如果 <picture> 包含彩色文本,则会被忽略。这可能是我自己设置的怪癖!

相关内容