查询页面左边距

查询页面左边距

显然,TeX 确实知道段落在纸张上的水平位置。这就是geometry调用的原因left。我如何访问它?

我怀疑有(或者可以定义)一个简单的长度寄存器,我们称其\realleftmargin为保存当前页面的总左边距(无论是奇数还是偶数)。最好不要处理太多geometry.sty内部结构、\ifodd\thepage和扩展序列。

我的内容(浮动/图形)占满纸张宽度。我希望它横跨物理纸张,这样我的边距定义和奇数/偶数页就无法在边界处剪切内容。如果您想出另一种策略,而不是在我的图形前面加上 ,那也没问题\hspace*{-\realleftmargin}

我目前的发现:

  • 全宽图形,奇数/偶数页+边距提出了类似的问题memoir(我使用标准 LaTeX/KOMA/geometry)
  • \Gm@lmargin/\Gm@rmargin偶数/奇数页上的长度正确,但辨别这两者似乎并不重要。

答案1

我希望这能让你有所启发。在下文中,我使用该包根据图形最终出现在奇数页还是偶数页来changepage调整环境的内容。figure

% figpageprob.tex  SE 509111  Is figure on even or odd page
\documentclass{book}
\usepackage{changepage}
  \strictpagecheck
\usepackage{lipsum}

\begin{document}

\lipsum[1]

\begin{figure}
\checkoddpage
\ifoddpage
    FIGURE ON ODD PAGE
\else
\raggedleft    FIGURE ON EVEN PAGE
\fi
\caption{A figure}
\end{figure}

\lipsum[1]

\begin{figure}
\checkoddpage
\ifoddpage
    FIGURE ON ODD PAGE
\else
\raggedleft    FIGURE ON EVEN PAGE
\fi
\caption{A figure}
\end{figure}

\lipsum[1]

\begin{figure}
\checkoddpage
\ifoddpage
    FIGURE ON ODD PAGE
\else
\raggedleft    FIGURE ON EVEN PAGE
\fi
\caption{A figure}
\end{figure}

\lipsum[1]

\begin{figure}
\checkoddpage
\ifoddpage
    FIGURE ON ODD PAGE
\else
\raggedleft    FIGURE ON EVEN PAGE
\fi
\caption{A figure}
\end{figure}

\lipsum[1]

\begin{figure}
\checkoddpage
\ifoddpage
    FIGURE ON ODD PAGE
\else
 \raggedleft   FIGURE ON EVEN PAGE
\fi
\caption{A figure}
\end{figure}

\lipsum[1]

\begin{figure}
\checkoddpage
\ifoddpage
    FIGURE ON ODD PAGE
\else
\raggedleft    FIGURE ON EVEN PAGE
\fi
\caption{A figure}
\end{figure}

\lipsum[1]

\begin{figure}
\checkoddpage
\ifoddpage
\raggedright    FIGURE ON ODD PAGE
\else
\raggedleft    FIGURE ON EVEN PAGE
\fi
\caption{A figure}
\end{figure}

\lipsum[1]

\end{document}

第一次打印时,所有图表都假定在偶数页上。第二次打印时,图表会知道它们打印在哪一页上,并相应地调整其内容。

文档左侧边距的值取决于您使用的类以及影响页面布局的任何包。layouts如果您不知道边距,可以使用包来确定边距。

您可以按照以下方式定义一个宏(减少任何拼写错误并添加额外的部分):

\newlength{\mylength}
\newcommand*{\mymacro}{%
  \checkoddpage
  \ifoddpage
    \setlength{\mylength}{<oddleftmargin>}
  \else
    \setlength{\mylength}{<evenleftmargin>}
  \fi}

并像使用它一样

\begin{figure}
\mymacro
% adjust the figure location by \mylength
%
\end{figure}

答案2

我可以部分回答你的问题(我在整页图前有一张白页)。实际上,您定义\newgeometry{margin=0cm},放置您的图形,然后\restoregeometry。完整代码为:

\documentclass[a4paper,oneside]{article}

\usepackage{graphicx}
\usepackage{lipsum,MWE}
\usepackage[margin=2cm]{geometry}

\begin{document}
    \lipsum[1]
    \section{Prima}
    \lipsum[2-4]
    \newgeometry{margin=0cm}
    \thispagestyle{empty}
    \noindent
    \includegraphics[width=\textwidth,height=\textheight]{image-a}
    \restoregeometry
    \lipsum[6]
\end{document}

输出:

在此处输入图片描述

相关内容