如何从文本左边缘到纸张右边缘绘制规则而不溢出?

如何从文本左边缘到纸张右边缘绘制规则而不溢出?

我目前正在使用以下指令从文本主体的左边缘到纸张的右边缘绘制一条水平线:

\rule{\paperwidth}{2pt}

这有效,但会导致过度警告:

Overfull \hbox (232.295pt too wide) in paragraph at lines 12--13

正确的做法可能是计算实际长度,但我不知道该怎么做。我读过说明,\addtolength但不确定我能把什么加在一起。有人能给出建议吗?

答案1

没有任何包装:

\documentclass{article}

\begin{document}

Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text.

\noindent\makebox[0pt][l]{\rule{\paperwidth}{2pt}}\par
Some more text. Some more text. Some more text. Some more text. Some more text. Some more text. Some more text. Some more text.

\end{document} 

在此处输入图片描述

答案2

您也可以使用tikz包。

\documentclass{article}
\usepackage{tikz}
\usepackage{lipsum}
\begin{document}

\lipsum[1]

\noindent\begin{tikzpicture}[remember picture,overlay]
\draw [line width=2pt] (0,0) -- (\paperwidth, 0);
\end{tikzpicture}

\lipsum[2]
\end{document} 

在此处输入图片描述

答案3

在 的onside(默认)模式下article,从文本块左侧到页面右侧的长度为

\paperwidth - \oddsidemargin - 1in - \hoffset
%             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
%                       left margin

要查看此内容,请加载layout包裹并发出来\layout看看工作的长度是多少:

在此处输入图片描述

但是,只要长度大于上述长度,它就会一直延伸到页面的右侧。所以,您只需使用即可\paperwidth。这是一个宏版本,允许通过可选参数调整宽度:

在此处输入图片描述

\documentclass{article}

\newcommand{\fullrule}[1][2pt]{%
  \par\nobreak\noindent
  \makebox[0pt][l]{%
    \rule[.5ex]{\paperwidth}{#1}}\par
}

\usepackage{lipsum}

\begin{document}

\sloppy\lipsum[1]

\fullrule

\lipsum[2]

\fullrule[.4pt]

\lipsum[3]

\end{document} 

请注意,我们将规则放在零宽度框内,以避免出现任何有关过满的警告\hbox

相关内容