Проблема с латексными этикетками, использующими btex и etex в METAPOST

Проблема с латексными этикетками, использующими btex и etex в METAPOST

Следующий простой код METAPOST не компилируется без ошибок:

verbatimtex
%&latex
\documentclass{article}
\begin{document}
etex
beginfig(1);
z0 = (0,0); z1 = (sqrt(3)*cm,0);
z2 = (sqrt(3)*cm,1cm);
draw z0--z1--z2--cycle;
label.bot(btex $w$ etex, 1/2[z0,z1]);
endfig;
end;

В файле журнала указано:

This is MetaPost, version 2.01 (MiKTeX 22.3)  14 APR 2022 17:40
Sample.mp Preloading the plain mem file, version 1.005) (./Sample.mp
>> Sample.mp
>> Sample.mpx
! ! Unable to read mpx file.
l.10 label.bot(btex
                $w$ etex, 1/2[z0,z1]);
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

В файле mpxerr указано:

This is mikTeX, Version 3.141592653 (MiKTeX 22.3) (preloaded format=tex 2022.4.14)  14 APR 
2022 
17:38
restricted \write18 enabled.
%&-line parsing enabled.
**./mp8HtMK1.tex
(mp8HtMK1.tex
! Undefined control sequence.
l.2 \documentclass
              {article}
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.

! Undefined control sequence.
l.3 \begin
      {document}
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.

[1] [1] )
Output written on mp8HtMK1.dvi (2 pages, 340 bytes).

Я в недоумении. Я проверил и перепроверил код, и он, кажется, правильный. При компиляции он вызывает правильные исполняемые файлы (т.е. mpost.exe, latex.exe). Что происходит?

Я прочитал соответствующие вопросы на этом форуме и попытался реализовать предложенные решения. Ничего не работает.

решение1

Поскольку сейчас 2022 год, больше нет необходимости использовать античный %&latexвызов с Metapost. Старые документы и образцы действительно все нуждаются в обновлении.

Здесь у вас есть два варианта:

Во-первых, если вы просто хотите попробовать простой вариант mpostи вас не особо волнует интеграция с каким-либо сложным форматом LaTeX, то замените преамбулу так, чтобы ваш файл MP выглядел следующим образом:

prologues := 3;
outputtemplate := "%j%c.%{outputformat}";
beginfig(1);
z0 = (0,0); z1 = (sqrt(3)*cm,0);
z2 = (sqrt(3)*cm,1cm);
draw z0--z1--z2--cycle;
label.bot(btex $w$ etex, 1/2[z0,z1]);
endfig;
end;

Если вы скомпилируете это с помощью mpostэтого, то теперь он создаст вывод в формате Encapsulated PostScript в файле с .epsрасширением, который вы можете просмотреть с помощью любого просмотрщика PostScript или преобразовать в PDF с помощью epstopdfили аналогичных инструментов.

С другой стороны, если вы хотите использовать MP в более современном стиле, со всем полезным форматированием LaTeX, если оно вам нужно, то переключитесь на использование lualatexи luamplibпакета. Вот так:

\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
beginfig(1);
z0 = (0,0); z1 = (sqrt(3)*cm,0);
z2 = (sqrt(3)*cm,1cm);
draw z0--z1--z2--cycle;
label.bot(btex $w$ etex, 1/2[z0,z1]);
endfig;
\end{mplibcode}
\end{document}

Скомпилируйте это с помощью lualatexдля непосредственного создания PDF-файла.

И на самом деле есть умная опция для меток, которая позволяет полностью избавиться от громоздкого btex ... etexмеханизма. Проверьте опцию mplib textext...

\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable} % <---- extra option
\begin{mplibcode}
beginfig(1);
z0 = (0,0); z1 = (sqrt(3)*cm,0);
z2 = (sqrt(3)*cm,1cm);
draw z0--z1--z2--cycle;
label.bot("$w$", 1/2[z0,z1]);
endfig;
\end{mplibcode}
\end{document}

Скомпилируйте это, lualatexчтобы получить PDF-файл, который выглядит следующим образом:

введите описание изображения здесь

Вы можете прочитать (скудную) документацию наluamplib здесь.

Связанный контент