使框与文档边距无关

使框与文档边距无关

有没有办法使一个框居中(例如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 发布的最新版本adjustboxv1.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}

在此处输入图片描述

可以稍微自动化,但取决于你关注的重点。当你了解它的工作原理时,手动使用可能是最简单的。显然,如果你在奇数页和偶数页上有不同的边距,也需要考虑这一点。

相关内容