我正在使用 Marco Daniel 的fullwidth
包,详细在这个答案中。我希望我的所有文本fullwidth
都是不可分割的(并且以长黑线开始和结束),所以我目前正在执行以下操作:
\documentclass[11pt,a4paper]{memoir}
\usepackage[outermargin=-4cm,]{fullwidth}
\begin{document}
\begin{minipage}{\linewidth}
\begin{fullwidth}[width=\linewidth+4cm]
\medskip
This is very long, but because it is in the fullwidth environment,
it extends into the full length of the page
before a line break occurs.
\medskip
\end{fullwidth}
\end{minipage}
\end{document}
这有效,但它确实给了我以下警告:
“全宽使用选项 nobreak 警告:\def 在输入第 15 行”
“包全宽警告:输入行 15 处的环境为空(全宽)。”
以及
“\hbox 过满”……
当我删除命令时,这些警告不再出现minipage
。是什么导致了这些警告?我该如何消除它们?
另外,我可以定义一个宏,以便无论何时我写入\begin{fullwidth}
,LaTeX 都会自动执行\begin{minipage}{\linewidth} \begin{fullwidth}[width=\linewidth+4cm] \medskip
吗?
更新:
@cmhughes 为“定义宏”问题提供了完美的解决方案。但是,他使用nobreak
in 选项fullwidth
代替 usingminipage
不起作用。以下是问题要点:
如果我使用[leftmargin = -4cm]
OR [outermargin = -4cm]
,则fullwidth
文本在奇数页上会延伸到正确的边距(外边距),在偶数页上会延伸到错误的边距(内边距)。如果我使用[rightmargin = -4cm]
OR [innermargin = -4cm]
,则fullwidth
文本在偶数页上会延伸到正确的边距(外边距),在奇数页上会延伸到错误的边距(内边距)。问题就在这里:该nobreak
选项搞乱了相对定位,因此outermargin
和innermargin
只会表现得像leftmargin
和rightmargin
。
请阅读他的答案的评论,以获得更详细的讨论。截至目前,我正在寻找可以修复使用给出的警告minipage
或可以nobreak
正确使用该选项的东西......
答案1
我不确定我是否真的理解了这个问题,但是如果你想在全页面(或任何东西)中放置一些牢不可破的东西,我会期望小页面位于环境内部而不是外部。
\begin{fullwidth}[width=\linewidth+4cm]
\noindent\begin{minipage}{\linewidth}
不会产生任何警告并产生合理的输出。
答案2
除了使用minipage
来阻止环境分裂之外,您还可以使用选项nobreak
。
除此之外,\medskip
您还可以使用选项innertopmargin
和,而不是使用innerbottommargin
。
在下面的代码中,我插入了一个人工代码vspace
,只是为了测试块是否保持在一起,并且不会跨页
\documentclass[11pt,a4paper]{memoir}
\usepackage{lipsum}
\usepackage[outermargin=-4cm,]{fullwidth}
\begin{document}
\lipsum[1]
\vspace{8.5cm}
\lipsum[1]
\begin{fullwidth}[innermargin=-2cm,width=\linewidth+4cm,nobreak]
This is very long, but because it is in the fullwidth environment,
it extends into the full length of the page
before a line break occurs.
\end{fullwidth}
\end{document}
您可以创建自己的环境
\newenvironment{myfullwidth}{\begin{fullwidth}[width=\linewidth+4cm,nobreak]}%
{\end{fullwidth}}
可以用作
\begin{myfullwidth}
\lipsum[2]
\end{myfullwidth}