如何跳过整个左边距

如何跳过整个左边距

LaTeX 如何计算边距对我来说已经显得有些复杂了。为了改进我的回答,这个问题关于如何让图形横跨整篇论文,我再次尝试去理解它——在阅读了 TH 的回答后这个问题我认为我明白了左边距是如何计算的:

\hoffset+ 1英寸\oddsidemargin++\leftskip

我的预期是,如果我跳过左边的给定数量,我最终会到达真正的纸张边距。然而,显然这行不通:

\documentclass{article}
\usepackage{lipsum}
\begin{document}
  \lipsum[3]
  \hskip\dimexpr -\hoffset-1in-\oddsidemargin-\leftskip\relax\rule{\paperwidth}{4pt}
  \lipsum[3]
\end{document}

得出以下结果:

在此处输入图片描述

因此,纸张左侧边距和命令输出之间仍然有一些空间\rule。那么还缺少多少长度呢?

答案1

段落分隔符后,LaTeX 会\parindent在下一个段落的开头插入 。要取消此操作\parindent,您应该\noindent在下一个段落的开头插入 。

\documentclass{article}
\usepackage{lipsum}
\begin{document}
 \lipsum[3]
 \noindent\hskip\dimexpr -\hoffset-1in-\oddsidemargin-\leftskip\relax\rule{\paperwidth}{4pt}
  \lipsum[3]
\end{document}

答案2

只是为了扩展 Marc 的精彩答案。您还应该检查偶数页或奇数页,因为即使使用,您的代码parindent0pt也会在偶数页上失败,而应使用:

\documentclass{article}
\usepackage{lipsum}
\parindent0pt
\begin{document}
\makeatletter
\ifodd\c@page 
  \lipsum[3]
  \hskip\dimexpr -\hoffset-1in-\oddsidemargin-\leftskip\relax\rule{\paperwidth}{4pt}
  \lipsum[3]
\else
\the\leftskip
\newpage
 \lipsum[3]
  \hskip\dimexpr -\hoffset-1in-\evensidemargin-\leftskip\relax\rule{\paperwidth}{4pt}
  \lipsum[3]
\fi
\makeatother
\end{document}

答案3

这适用于单面和双面文档。需要运行两次 LaTeX

\documentclass[twoside]{article}
\usepackage{lipsum}
\newcounter{rulecounter}
\makeatletter
\newcommand*\longrule[1][4pt]{%
  \refstepcounter{rulecounter}\label{longrule-label@\therulecounter}%
  \par\noindent
  \ifodd\pageref{longrule-label@\therulecounter}
    \hskip\dimexpr-\hoffset-1in-\oddsidemargin-\leftskip\relax
  \else
    \hskip\dimexpr-\hoffset-1in-\evensidemargin-\leftskip\relax
  \fi%
  \rule{\paperwidth}{#1}\par}
\makeatother
\begin{document}
\lipsum[3]
\longrule
\lipsum[3]
\newpage
\lipsum[3]
\longrule[6pt]
\lipsum[3]
\end{document}

相关内容