Ошибка с Lua, Luamplib и Mpgraph

Ошибка с Lua, Luamplib и Mpgraph

Следующий код работает нормально.

\documentclass{article}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
  input graph ;
  beginfig(0) ;
  draw begingraph(5cm,3cm)
    gdraw (0,0) for x = 1 upto 3: .. (x, x) endfor ;
  endgraph ;
  endfig ;
\end{mplibcode}
\end{document}

Однако следующее не работает.

\documentclass{article}
\usepackage{luacode}
\usepackage{luamplib}
\begin{document}
\def\plot{
   \directlua{
      tex.print("\string\\begin{mplibcode}")
      tex.print("input graph ;")
      tex.print("beginfig(0)")
      tex.print("draw begingraph(5cm,3cm)")
      tex.print("   gdraw (0,0) for x = 1 upto 3: .. (x, x) endfor ;")
      tex.print("endgraph;")
      tex.sprint("endfig;")
      tex.print("\string\\end{mplibcode}")
}
}
\plot
\end{document}

Кажется, возникла проблема с mplibdoreplacenewlinebrили catcode. Как можно устранить эту ошибку?

решение1

Поскольку вы используете luamplibLua, вы могли бы просто использовать интерфейс Lua и отказаться от \being...\end{mplibcode}.

\documentclass{article}
\usepackage{luamplib}
\begin{document}
\def\plot{%
  \directlua{luamplib.process_mplibcode([[
    input graph ;
    beginfig(0)
    draw begingraph(5cm,3cm)
       gdraw (0,0) for x = 1 upto 3: .. (x, x) endfor ;
    endgraph ;
    endfig ;
  ]])}%
}
\plot
\end{document}

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

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