LaTeX 中的 Metapost(gmp 包)-不起作用

LaTeX 中的 Metapost(gmp 包)-不起作用

我尝试在 LaTeX 中使用 metapost 代码,但只收到 MP 图标而不是专用图片:

我想要生成的代码示例:

\documentclass[]{article}
\usepackage[T1]{fontenc}
\usepackage[polish]{babel}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\selectlanguage{polish}
\usepackage{indentfirst}
\usepackage[shellescape, latex]{gmp}
\gmpoptions{everymp={input expressg;}}
\usepackage{amsmath}

\usepackage[top = 2.50cm, bottom = 2.50cm, left   = 2.50cm, right  = 2.50cm]{geometry}


%opening
\title{Pole wielokąta. (nr 69, str. 30)}
\author{Adam Kasprzak}

\begin{document}

%\maketitle

\section{Treść}
Dane są dwa współśrodkowe okręgi o promieniach $r=/sgrt{3}$ cm i $R=2$ cm. Pewien wielokąt jest opisany na okręgu o promieniu $r$ i jest wpisany w okrąg o promieniu $R$. Znajdź pole tego wielokąta.

\begin{figure}[htp]

    \centering

    \begin{mpost}

        z0 = origin;

        drawroundedbox(0, 2.5cm, 3cm, 5mm)();

    \end{mpost}

\end{figure}

blablabla

\end{document}

总是相同的结果: 在此处输入图片描述

答案1

你需要

  1. pdflatex使用命令行选项运行-shell-escape

  2. 在盒子里面放点东西,即使什么都不打印,但btex...etex也是必要的。

\documentclass[]{article}
\usepackage[T1]{fontenc}
\usepackage[polish]{babel}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\selectlanguage{polish}
\usepackage{indentfirst}
\usepackage[shellescape, latex]{gmp}
\gmpoptions{everymp={input expressg;}}
\usepackage{amsmath}

\usepackage[top = 2.50cm, bottom = 2.50cm, left   = 2.50cm, right  = 2.50cm]{geometry}


%opening
\title{Pole wielokąta. (nr 69, str. 30)}
\author{Adam Kasprzak}

\begin{document}

%\maketitle

\section{Treść}
Dane są dwa współśrodkowe okręgi o promieniach $r=\sqrt{3}$ cm i $R=2$ cm. 
Pewien wielokąt jest opisany na okręgu o promieniu $r$ i jest wpisany w okrąg 
o promieniu $R$. Znajdź pole tego wielokąta.

\begin{figure}[htp]
\centering

\begin{mpost}
z0 = origin;
drawroundedbox(0, 2.5cm, 3cm, 5mm)(btex etex);
\end{mpost}

\end{figure}

blablabla

\end{document}

在此处输入图片描述

答案2

或者,你可以lualatex使用luamplib包,它更现代一些,并且避免了混乱的 shell 转义。

以下是更新后的 OP 脚本luamplib

\documentclass{article}
\usepackage[polish]{babel}
\selectlanguage{polish}
\usepackage{indentfirst}
\usepackage{luamplib}
\mplibtextextlabel{enable}
\everymplib{input expressg beginfig(0);}\everyendmplib{endfig;}
\usepackage{amsmath}
\usepackage[top = 2.50cm, bottom = 2.50cm, left = 2.50cm, right = 2.50cm]{geometry}
%opening
\title{Pole wielokąta. (nr 69, str. 30)}
\author{Adam Kasprzak}
\begin{document}
%\maketitle
\section{Treść}

Dane są dwa współśrodkowe okręgi o promieniach $r=\sqrt{3}$ cm i $R=2$ cm.
Pewien wielokąt jest opisany na okręgu o promieniu $r$ i jest wpisany w okrąg o
promieniu $R$. Znajdź pole tego wielokąta.

\begin{figure}[htp]
    \centering
    \begin{mplibcode}
        z0 = origin;
        drawroundedbox(0, 2.5cm, 3cm, 5mm)("Witaj $e=mc^2$")
    \end{mplibcode}
\end{figure}

blablabla

\end{document}

编译它lualatex得到以下内容:

在此处输入图片描述

相关内容