我想重现旧书第一页的外观。是否可以将首字母与章节标题对齐?
\documentclass{scrbook}
\usepackage{microtype,fontspec,lettrine}
\usepackage{ebgaramond}
\usepackage[explicit]{titlesec}
\titleformat{\section}[block]{\scshape\LARGE\raggedleft}{}{0pt}{#1\quad\thesection}
\renewcommand{\thesection}{\Roman{section}}
\begin{document}
\section{Hello world}
\lettrine[loversize=0.9, lines=3]{S}{ed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque} laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi...
\end{document}
答案1
您不应titlesec
与 KOMA-Script 类结合使用。因此,我首先使用 KOMA-Script 用户界面更改了基本部分格式,在本例中\setkomafont
是更改部分的字体,并重新定义\secionlinesformat
以更改部分编号和部分标题的顺序。要删除部分编号后的点,您可以使用类选项numbers=noenddot
或重新定义\sectionformat
。要打印右对齐的部分标题,您可以更改\raggedsection
以更改对齐方式全部\raggedleft
级别,或者在 的定义中添加\sectionlinesformat
。恕我直言,打印具有相同对齐方式的所有章节、小节等标题更有意义,因此我将使用 的重新定义\raggedsection
。
然后您可以使用它\RedeclareSectionCommand
来改变部分命令的垂直间距。
\documentclass{scrartcl}
\usepackage{microtype,fontspec,lettrine}
\usepackage{ebgaramond}
\renewcommand{\thesection}{\Roman{section}}
\renewcommand*{\sectionformat}{\thesection}% no dot or space behind the number
\let\raggedsection\raggedleft
\setkomafont{section}{\normalfont\Large\scshape}
\makeatletter
\renewcommand*{\sectionlinesformat}[4]{%
\Ifstr{#1}{section}
{#4\quad#3}
{\@hangfrom{\hskip#2#3}#4}%
}
\makeatother
\RedeclareSectionCommand[afterskip=-\ht\strutbox,runin=false]{section}% change space after heading
\begin{document}
\section{Hello world}
\lettrine[loversize=0.9, lines=3]{S}{ed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque} laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi...
\end{document}
笔记:
该值
-\ht\strutbox
是估计值。如果这还不够,您还可以使用绝对值,如-1.5ex
或-10pt
。但不要忘记使用runin=false
。否则,您会因为负数 而定义一个 runin 标题afterskip
。有关更多信息,请参阅 KOMA-Script 手册。如果有多行章节标题,则定义如下
\renewcommand*{\sectionlinesformat}[4]{% \Ifstr{#1}{section} {\parbox[b]{.8\textwidth}{\raggedleft #4}\quad#3} {\@hangfrom{\hskip#2#3}#4}% }
可能会有用。但在这种情况下,您首先必须决定如何打印较长的章节标题。
我使用了,因为恕我直言,如果不使用 ,
scrartcl
使用 就没有意义。但是,该解决方案也适用于。scrreprt
\chapter
scrreprt
除了 KOMA-Script 手册外,还有关于 KOMA-Script wiki 中章节标题格式的部分,其中有几个关于此答案中也使用的命令用法的示例。维基百科也提供德语版本。
答案2
由于titlesec
与不兼容scrbook
,我将使用book
。
粗略测量得出的结果约为 22pt,经过一些视觉格式化后,必须将其减小到 21pt。
我会留下一点超调。
\documentclass[a4paper]{book}
\usepackage{
microtype,
fontspec,
lettrine
}
\usepackage{ebgaramond}
\usepackage[explicit]{titlesec}
\titleformat{\section}[block]
{\scshape\LARGE\raggedleft}
{}
{0pt}
{#1\quad\thesection}
\titlespacing*{\section}
{0pt}
{3.5ex plus 1ex minus .2ex}
{-21pt}
\renewcommand{\thesection}{\Roman{section}}
\begin{document}
\section{Hello world\makebox[0pt][r]{\vrule height \dimeval{\fontcharht\font`H+0.2pt}
depth -\fontcharht\font`H width \textwidth}}
\lettrine[loversize=0.9,lines=3]{S}{ed ut perspiciatis unde omnis
iste natus error sit voluptatem accusantium doloremque} laudantium,
totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et
quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam
voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia
consequuntur magni dolores eos qui ratione voluptatem sequi...
\section{Hello world\makebox[0pt][r]{\vrule height \dimeval{\fontcharht\font`H+0.2pt}
depth -\fontcharht\font`H width \textwidth}}
\lettrine[loversize=0.9,lines=3]{T}{ed ut perspiciatis unde omnis
iste natus error sit voluptatem accusantium doloremque} laudantium,
totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et
quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam
voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia
consequuntur magni dolores eos qui ratione voluptatem sequi...
\section{Hello world\makebox[0pt][r]{\vrule height \dimeval{\fontcharht\font`H+0.2pt}
depth -\fontcharht\font`H width \textwidth}}
\lettrine[loversize=0.9,lines=3]{B}{ed ut perspiciatis unde omnis
iste natus error sit voluptatem accusantium doloremque} laudantium,
totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et
quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam
voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia
consequuntur magni dolores eos qui ratione voluptatem sequi...
\end{document}