页码条件中的虚假空白

页码条件中的虚假空白

在下面的例子中,我引入了一个页码条件\ifnum\c@page=1\relax\else...。页码条件(在本例中)检查页码是否为 1,如果条件满足,则不执行任何操作。该条件似乎还会产生奇怪的垂直空白,高度为\baselineskip\relax用替换\vskip-\baselineskip会产生预期的结果,放置文本(例如,xyz在第一节标题之前)也会产生预期的结果。这些都不是问题的真正解决方案,因为我仍然不明白发生了什么。

顺便说一句,如果条件之前没有文本(例如两个相继的章节标题),则将条件更改为不同的页码会导致同样的问题。

那么空间从何而来?

\documentclass{article}
\usepackage[explicit]{titlesec}%
\makeatletter
\usepackage{changepage}
\usepackage{showframe}
\newenvironment{somenevironment}%
  {\begin{adjustwidth*}{0pt}{100pt}%%%<<<<<
  }%
  {\end{adjustwidth*}%%%<<<<<<
  }%
\titleformat{name=\section}%
{}{}{\z@}%
{%
  \ifnum\c@page=1\relax%
  \else%
    \expandafter\clearpage\fi%
%                            ^^^^^^^^^^^
  \begin{somenevironment}%
    #1
  \end{somenevironment}%%%%<<<<
  }%
[\clearpage]
\makeatother
\begin{document}
\section{My section}xyz
\section{My section}xyz
\section{My section}xyz
\section{My section}xyz
\section{My section}xyz
\section{My section}xyz
\section{My section}xyz
\section{My section}xyz
\section{My section}xyz
\section{My section}xyz
\section{My section}xyz
\section{My section}xyz
\section{My section}xyz
\end{document}

答案1

开头的垂直空间是由 引起的adjustwidth。有更简单的方法可以实现您想要的效果:

\documentclass{article}
\usepackage{titlesec}
\usepackage{showframe}

\newcommand{\somecommand}[1]{%
  \makebox[\textwidth][l]{\parbox[t]{\dimexpr\textwidth+100pt}{#1}}%
}

\titleformat{name=\section}
  {}{}{0pt}
  {%
   \ifnum\value{page}=1
   \else
     \clearpage
   \fi
   \somecommand
  }[\clearpage]

\begin{document}

\section{My section}xyz
\section{My section}xyz

\end{document}

在此处输入图片描述

相关内容