有没有办法使一个框居中(例如adjustbox
),即使文档边距不相等(左右)?
\documentclass{article}
\usepackage{adjustbox}
\usepackage[pass]{geometry}
\usepackage{lipsum}
\begin{document}
\begin{adjustbox}{minipage=0.99\paperwidth,margin=0pt,center}
\lipsum[2]
\end{adjustbox}
\newgeometry{left=250pt,top=1cm,bottom=1cm,includefoot}
\begin{adjustbox}{minipage=0.99\paperwidth,margin=0pt,center}
\lipsum[2]
\end{adjustbox}
\end{document}
答案1
(current page.center)
您可以将其放入具有以下位置的 tikz 节点中:
\documentclass{article}
\usepackage{adjustbox}
\usepackage[pass]{geometry}
\usepackage{lipsum}
\usepackage{tikz}
\begin{document}
\begin{adjustbox}{minipage=\paperwidth,margin=0pt,center}
\begin{tikzpicture}[overlay, remember picture]
\node[text width=0.7*\linewidth] at (current page.center)
{\lipsum[2]};
\end{tikzpicture}
\end{adjustbox}
\newgeometry{left=250pt,top=1cm,bottom=1cm,includefoot}
\begin{adjustbox}{minipage=\paperwidth,margin=0pt,center}
\begin{tikzpicture}[overlay, remember picture]
\node[text width=0.7*\linewidth] at (current page.center)
{\lipsum[2]};
\end{tikzpicture}
\end{adjustbox}
\end{document}
答案2
使用 2019/01/04 发布的最新版本adjustbox
v1.2,您可以使用该pagecenter
键将内容居中对齐在页面上。这在内部使用了我原始答案中的代码(即根据页边距将内容重叠到左侧)。
\documentclass[twopages]{book}
\usepackage{adjustbox}[2019/01/04]
\usepackage{blindtext}
\begin{document}
\blindtext
\begin{adjustbox}{minipage=0.95\paperwidth,frame,pagecenter,vspace=\medskipamount}
\blindtext
\end{adjustbox}
\blindtext
\clearpage
\blindtext
\begin{adjustbox}{minipage=0.95\paperwidth,frame,pagecenter,vspace=\medskipamount}
\blindtext
\end{adjustbox}
\blindtext
\end{document}
原始答案适用于旧版本adjustbox
:
如果您想让框居中于页面中央,而不是文本区域中央,一种方法是将其置于lap
页面的左文本边缘。可以使用包读取所需的尺寸layout
。
下面的代码使用该ifoddpage
包来adjustbox
获取正确的数量。
\documentclass[twopages]{book}
\usepackage{ifoddpage}
\usepackage{adjustbox}
\usepackage[pass,showframe]{geometry}
\usepackage{layout}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\checkoddpage
\begin{adjustbox}{minipage=0.95\paperwidth,vspace=\smallskipamount,frame,
lap={\textwidth}{-1in-\hoffset-\ifoddpage\oddsidemargin\else\evensidemargin\fi+.5\paperwidth-.5\width-\csname @totalleftmargin\endcsname}}
\lipsum[2]
\end{adjustbox}
\lipsum
\checkoddpage
\begin{adjustbox}{minipage=0.95\paperwidth,vspace=\smallskipamount,frame,
lap={\textwidth}{-1in-\hoffset-\ifoddpage\oddsidemargin\else\evensidemargin\fi+.5\paperwidth-.5\width-\csname @totalleftmargin\endcsname}}
\lipsum[2]
\end{adjustbox}
\lipsum[1]
\clearpage
\layout
\end{document}
答案3
目前尚不清楚您究竟以什么为中心,但您可以使用 changepage 包中的 adjustwith 命令来临时调整边距。
该命令分别接受左边距和右边距的两个参数。该值是文本块将减少的量(因此负值会放大)。影响的是线宽而不是文本宽度。
下面的 MWE 和输出以及一些阅读材料应该可以解释。
\documentclass{article}
\usepackage[pass]{geometry}
\usepackage{changepage}
\begin{document}
\newgeometry{left=100pt,top=1cm,bottom=1cm,includefoot}
\begin{center}
Center within margins
\end{center}
Left
\flushright Right
\newgeometry{left=200pt,top=1cm,bottom=1cm,includefoot}
\begin{center}
Center within margins
\end{center}
\begin{adjustwidth}{-100pt}{0pt}
\begin{center}
Center on temporarily adjusted margin
\end{center}
Left
\flushright Right
\end{adjustwidth}
\newgeometry{left=300pt,top=1cm,bottom=1cm,includefoot}
\begin{center}
Center within margins
\end{center}
\begin{adjustwidth}{-200pt}{0pt}
\begin{center}
Center on temporarily adjusted margin
\end{center}
Text
\flushright Right
\end{adjustwidth}
\newgeometry{left=400pt,top=1cm,bottom=1cm,includefoot}
\begin{center}
Center within margins
\end{center}
\begin{adjustwidth}{-300pt}{0pt}
\begin{center}
Center on temporarily adjusted margin
\end{center}
Text
\flushright Right
\end{adjustwidth}
\end{document}
可以稍微自动化,但取决于你关注的重点。当你了解它的工作原理时,手动使用可能是最简单的。显然,如果你在奇数页和偶数页上有不同的边距,也需要考虑这一点。