使用 titlesec 在小页面中标题前的垂直间距

使用 titlesec 在小页面中标题前的垂直间距

我正在使用titlesec包来设置我的部分标题的样式,包括居中和着色。有时我的部分会出现在 中,minipage因为我经常有长而窄的图表贯穿整个页面,并且我希望文本在它旁边。但是,我发现当 出现\section在 的开头时minipage,页面顶部会有额外的垂直空间。以下 MWE 显示了这一点:

\documentclass[10pt]{article}
\usepackage[a6paper,showframe]{geometry}

\usepackage{xcolor}
\definecolor{headcol}{cmyk}{0,.75,.75,.2}
\usepackage{titlesec}
\newcommand\sectheadfont{\fontsize{12pt}{14.4pt}\selectfont\color{headcol}}
\titleformat{\section}[block]{\sectheadfont}{}{0pt}{\filcenter}

\begin{document}
\section{Foo}
\clearpage

\begin{minipage}[t]{0.8\textwidth}
\section{Bar}
\end{minipage}
\end{document}

第一页标题前没有空格,而第二页标题上方有 1em 的空格。如果我注释掉该\titleformat行,就不会发生这种情况。此外,如果我\color{headcol}从定义中删除\sectheadfont它,也不会发生这种情况。我被要求使用彩色标题的方式是造成额外空格的原因。

\vspace{-1em}我知道我可以在 的开头用 手动解决minipage,但这似乎有点不可靠,因为所需的确切空间似乎取决于字体大小和其他类似的东西,并不总是恰好是 1em。有人能帮我在序言中解决这个问题吗?

答案1

我真的不明白为什么要采用这种结构。无论如何,删除前面的空格minipage就足够了:

\vspace{-\abovedisplayskip}

在下面的 MWE 中,我定义了新的strangeenv环境,但您也可以不用它,只需使用:

\begin{minipage}[t]{0.8\textwidth}
  \vspace{-\abovedisplayskip}
\section{Bar}
...

\end{minipage}

平均能量损失

\documentclass[10pt]{article}
\usepackage[a6paper,showframe]{geometry}
\usepackage{kantlipsum}
\usepackage{xcolor}
\definecolor{headcol}{cmyk}{0,.75,.75,.2}
\usepackage{titlesec}
\newcommand\sectheadfont{\fontsize{12pt}{14.4pt}\selectfont\color{headcol}}
\titleformat{\section}[block]{\sectheadfont}{}{0pt}{\filcenter}

\newenvironment{strangeenv}[1]
  {\begin{minipage}[t]{#1}
    \vspace{-\abovedisplayskip}}
  {\end{minipage}}

\begin{document}
\section{Foo}
\kant[1]
\clearpage
    
\begin{strangeenv}{0.8\textwidth}
\section{Bar}
\kant[9]

\end{strangeenv}
\end{document}

在此处输入图片描述

答案2

如果您想并排运行文本和高而窄的图像,我推荐 paracol。

\documentclass[10pt]{article}
\usepackage[a6paper,showframe]{geometry}

\usepackage{xcolor}
\definecolor{headcol}{cmyk}{0,.75,.75,.2}
\usepackage{titlesec}
\newcommand\sectheadfont{\fontsize{12pt}{14.4pt}\selectfont\color{headcol}}
\titleformat{\section}[block]{\sectheadfont}{}{0pt}{\filcenter}

\usepackage{paracol}
\globalcounter{section}

\begin{document}
\section{Foo}
\clearpage

\setcolumnwidth{0.8\textwidth}
\begin{paracol}{2}
\section{Bar}
\switchcolumn
\noindent\rule{\columnwidth}{\textheight}
\end{paracol}
\end{document}

相关内容