在下面的 MWE 中,\@startsection
如果出现在页面顶部,则 (#4) 的 beforeskip 参数似乎会被忽略\section
。这很酷——因为这里不需要很大的垂直空间。然而,LaTeX 所做的是将 Section 的基线带到与正常基线(右列)相同的水平,尽管字体大小更大。
我需要的是向部分框的顶线添加 3pt 的小垂直空间,以将基线向下移动一点。换句话说,我想要的是将部分的基线降低 3pt。
如果我取消注释\vspace*{-2\baselineskip}
MWE 中的这一行(见下文),我就能得到我需要的东西。但我不想每次都手动添加这一行:
那么,有没有办法进行修改\@startsection
,以便我可以仅在该部分位于页面顶部的情况下添加一些额外的命令或空格?
(以防万一:这确实是该部分基线需要降低 3pt 的设计。afterskip-Value(#5)等于 \baselineskip-3pt 并且是正确的。)
梅威瑟:
\documentclass{scrartcl}
\usepackage{lipsum}
\usepackage{multicol}
\usepackage{fontspec}
\renewcommand{\normalsize}{\fontsize{9.6pt}{13.7pt}\selectfont}
\makeatletter
\renewcommand{\section}{\@startsection%
{section} % name
{1} % level
{6mm} % indent
{-30.4pt} % beforeskip
% -30.4pt = -2\baselineskip+Grundlinienversatz
{10.7pt} % afterskip
% 10.7pt = \baselineskip + Grundlinienversatz
{\normalfont%
\bfseries%
\fontsize{11.5pt}{13.7pt}%
\addfontfeature{Numbers=OldStyle}% Mediävalziffern
\addfontfeature{LetterSpace=1.0}% Laufweite 10/1000 Geviert
\selectfont%
\raggedright}%
}
\makeatother
\parskip=0pt
\begin{document}
\begin{multicols}{2}
% \vspace*{-3\baselineskip}
\section{Summary}
\lipsum[1]
\section{Section 2}
\lipsum[2-7]
\end{multicols}
\end{document}
答案1
这里大家都在度假……
因此,我找到了以下解决方案:我使用\raisebox{-3pt}
来将部分标题的基线降低 3pt(“Grundlinienversatz”)。在 中,\raisebox
我必须使用\parbox
来启用标题中的换行符。这样可以正确定位标题本身。最后,必须整理标题后的垂直间距:\prevdepth
必须存储在 中\parbox
并在 外部恢复。要将所有这些与 一起使用\@startsection
,我必须\my@sectbox
为所有提到的操作设置一个新命令。这可以 \@startsection
作为参数 #6 传递给。
结果如下:
\documentclass{scrartcl}
\usepackage{lipsum}
\usepackage{multicol}
\usepackage{fontspec}
\renewcommand{\normalsize}{\fontsize{9.6pt}{13.7pt}\selectfont}
\makeatletter
\renewcommand{\section}{\@startsection%
{section} % name
{1} % level
{6mm} % indent
{-27.4pt} % beforeskip
% -27.4pt = -2\baselineskip
{10.7pt} % afterskip
% 10.7pt = \baselineskip + 3pt Grundlinienversatz
{\my@sectbox}%
}
\def\my@sectbox#1{%
\noindent\raisebox{-3pt}{%
\parbox[t]{\linewidth}{%
% Setting up font size and style:
\normalfont%
\bfseries%
\fontsize{11.5pt}{13.7pt}%
\addfontfeature{Numbers=OldStyle}% Mediävalziffern
\addfontfeature{LetterSpace=1.0}% Laufweite 10/1000 Geviert
\selectfont%
\raggedright%
\strut#1%
\xdef\rpd{\the\prevdepth}% saving \prevdepth inside box
}%
}%
\prevdepth=\rpd% restoring \prevdepth outside box (empty line above is mandatory)
}
\makeatother
\parskip=0pt
\begin{document}
\begin{multicols}{2}
\section{Summary}
\lipsum[1]
\section{Section two with a very long headline}
\lipsum[2-7]
\end{multicols}
\end{document}