显然,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}
输出: