Lualatex:某些页面的横向显示(来自 metapost 代码的每个页面)

Lualatex:某些页面的横向显示(来自 metapost 代码的每个页面)

我想将landscape一些页面设置为纵向,而将其他页面设置为纵向。每页都是来自的图片metapost。我在 中进行编译。Google 告诉我使用或lualatex包来实现横向显示。后面的第一个代码有效。它将第一页设置为横向显示,而将第二页保持完整。lscapepdflscape

但是,在我的实际情况中 - 第二个代码,每张图片都是从 metapost 代码中提取的,几乎占据一页,第二张图片自动转到下一页(不需要,\clearpage而且似乎\clearpage不能包含在 metapost 代码中)。每个开头都定义了一些全局变量,几乎每个图片(页面)都使用它们。因此,只有一个\begin{mplibcode} ... \end{mplibcode}块包含所有 metapost 代码(所有页面)。如何对第一页进行景观设计?

此代码可以landscape

\RequirePackage{luatex85}
\documentclass[a4paper]{article}
\usepackage{luamplib}
  \mplibtextextlabel{enable}
  % \everymplib{verbatimtex \leavevmode etex; beginfig(1);}
  % \everyendmplib{endfig;}
\usepackage{fancyhdr}
\usepackage[lmargin=0.5cm,rmargin=0.5cm,tmargin=0.5cm,bmargin=0.5cm]{geometry}
% \usepackage[lmargin=0.5cm,rmargin=0.6cm,tmargin=1.27cm,bmargin=2.27cm,landscape]{geometry}
\usepackage[sfdefault]{carlito}
\usepackage{pdflscape}

\newcommand{\defaultfontsize}{\fontsize{10pt}{\baselineskip}\selectfont}
\begin{document}\defaultfontsize

\begin{landscape}
\begin{mplibcode}
  warningcheck := 0;
  input boxes
  input moi

  beginfig(1)
    draw origin -- (25cm,0);
  endfig;
\end{mplibcode}
\end{landscape}

\clearpage

\begin{mplibcode}
  beginfig(2)
    % detail A - apex
    draw halfcircle scaled 2cm shifted (0, -50cm);
  endfig;
\end{mplibcode}

\end{document}

这是我的真实情况的框架。我该如何获取landscape第一页?如您所见,图 1 被 包围了\begin{landscape} \end{landscape}。代码无法编译。

\RequirePackage{luatex85}
\documentclass[a4paper]{article}
\usepackage{luamplib}
  \mplibtextextlabel{enable}
  % \everymplib{verbatimtex \leavevmode etex; beginfig(1);}
  % \everyendmplib{endfig;}
\usepackage{fancyhdr}
\usepackage[lmargin=0.5cm,rmargin=0.5cm,tmargin=0.5cm,bmargin=0.5cm]{geometry}
% \usepackage[lmargin=0.5cm,rmargin=0.6cm,tmargin=1.27cm,bmargin=2.27cm,landscape]{geometry}
\usepackage[sfdefault]{carlito}
\usepackage{pdflscape}

\newcommand{\defaultfontsize}{\fontsize{10pt}{\baselineskip}\selectfont}
\begin{document}\defaultfontsize

\begin{mplibcode}
  warningcheck := 0;
  input boxes
  input moi

  % globe variables
  numeric d, b, tf, tw, r, scale;
  string section_name;

  section_name = "180PFC";
  d = 180;
  b = 75;
  tf = 11;
  tw = 6;
  r = 12;

\begin{landscape}
  beginfig(1)
    scale = 50;
    a very large picture from metapost
  endfig;
\end{landscape}

  beginfig(2)
    % detail A - apex
    scale := 5;
    another very large picture from metapost
    % draw origin -- (d, 0);
  endfig;
\end{mplibcode}

\end{document}

答案1

您可以使用块来执行此操作verbatimtex,如第 2 页所述手册。我擅自简化了上面的第二个(不起作用的)示例,以显示可以做什么。

\documentclass[a4paper]{article}
\usepackage{luamplib}
  \mplibtextextlabel{enable}
\usepackage[margin=0.5cm]{geometry}
\usepackage{pdflscape}
\begin{document}
\begin{mplibcode}
% global variables
numeric d, scale;
d = 18;

verbatimtex \begin{landscape} etex
beginfig(1)
    scale := 10;
    % a very large picture from metapost
    draw fullcircle scaled d;
    currentpicture := currentpicture scaled scale;
endfig;

verbatimtex \end{landscape} etex
beginfig(2)
    scale := 5;
    % another very large picture from metapost
    draw origin -- (d, 0);
    currentpicture := currentpicture scaled scale;
endfig;
\end{mplibcode}
\end{document}

正如文档所解释的那样,如果你将 TeX 标记放在verbatimtex ... etex紧挨着 之前的块中,则标记将被插入到下一个宏发出的beginfig()之前。因此,在这个用例中,你会得到类似这样的处理:hboxendfiglualatex

...
\begin{landscape}
<hbox produced by first endfig>
\end{landscape}
<hbox produced by second endfig>
...

输出 PDF 如下所示:

在此处输入图片描述 即(我认为) 原帖者想要的是什么。

相关内容