我正在尝试为我的文档创建自定义标题,但水平线之间的间距或一般间距无法正常工作。以下是最小工作示例我希望这能让你更清楚地理解:
\documentclass[a4paper,12pt,DIV=15, ngerman]{scrartcl} % parskip=half or parskip=full
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{lipsum}
\usepackage{lmodern}
\newcommand{\mytitle}{
\textsf{
\begin{center}
\rule{\textwidth}{1.6pt}\vspace*{-\baselineskip}\vspace{3.2pt} % Thick horizontal rule
\rule{\textwidth}{0.4pt} % Thin horizontal rule
\vspace{0.75\baselineskip} % Whitespace above the title
\Large \textbf{Wonderfull Title} \\ %\vspace{0.3cm}
\large\textbf{Here stands a great Subtitle}
\rule{\textwidth}{0.4pt}\vspace*{-\baselineskip}\vspace{3.2pt} % Thin horizontal rule
\rule{\textwidth}{1.6pt} % Thick horizontal rule
\vspace{2\baselineskip} % Whitespace after the title block
Last compiled on \textbf{Date} \\
von \textbf{Author}\\
\end{center}
}
}
\begin{document}
\mytitle
\lipsum[1]
\end{document}
问题在于:
- 底部行之间的间距似乎是故意的,但顶部行之间的间距太大,尽管它们是完全相同的代码
- 副标题和底部两行之间有太多空白
- 日期和作者之间的空格太多
关于这个话题我的问题是:
- 为什么间距是这样的?Latex 的目的是什么?我想更好地了解 tex 的内部工作原理。
- 我的具体间距问题该如何解决?
- 创建好看的标题的最佳做法是什么?
(当然我很高兴收到任何意见,因为这对于乳胶的总体实践来说更好 - 它不必直接回答问题)
提前感谢您的回答!
附言:这是我在这个论坛上的第一篇帖子,所以请对我提出建设性的批评!我真的不确定如何以最清晰的方式表达自己。
答案1
主要问题是\Large
和\large
影响基线跳过。使用{
和}
来限制它们的范围。
此后,就可以轻松控制元素之间的垂直空间。
关于两条平行线,请参见绘制紧密的水平线
寻找灵感,看看漂亮的标题页
有关如何按照严格规范设计封面或标题页的示例,请参阅 奇肖尔德
\documentclass[a4paper,12pt,DIV=15, ngerman]{scrartcl} % parskip=half or parskip=full
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{lipsum}
\usepackage{lmodern}
\newcommand{\mytitle}{%
\textsf{%
\centering
\hrule height 1.6pt depth 0pt width \textwidth
\vspace{2pt}
\hrule height 0.4pt depth 0pt width \textwidth
\bigskip
{\bfseries \Large Wonderfull Title} \\ \vspace{0.3cm}
{\bfseries \large Here stands a great Subtitle} \\\vspace{10pt}
\hrule height 0.4pt depth 0pt width \textwidth
\vspace{2pt}
\hrule height 1.6pt depth 0pt width \textwidth
\vspace{\baselineskip} % Whitespace after the title block
Last compiled on \textbf{Date} \\ \vspace{0.3cm}
von \textbf{Author}\\
\vspace*{3\baselineskip}
}
}
\begin{document}
\mytitle
\lipsum[1]
\end{document}
最后,为了保护模板并确保重复使用时的一致性,定义一个具有四个强制参数的命令:
\newcommand{\mytitle}[4]{% four mandatory parameters
\textsf{%
\centering
\hrule height 1.6pt depth 0pt width \textwidth
\vspace{2pt}
\hrule height 0.4pt depth 0pt width \textwidth
\bigskip
{\bfseries \Large #1} \\ \vspace{0.3cm}
{\bfseries \large #2} \\\vspace{10pt}
\hrule height 0.4pt depth 0pt width \textwidth
\vspace{2pt}
\hrule height 1.6pt depth 0pt width \textwidth
\vspace{\baselineskip} % Whitespace after the title block
Last compiled on \textbf{#3} \\ \vspace{0.3cm}
von \textbf{#4}\\
\vspace*{3\baselineskip}
}
}
并使用 \mytitle{Wonderfull Title}{Here stands a great Subtitle}{Date}{Author}
答案2
如果你有
\rule{\textwidth}{0.4pt} % Thin horizontal rule
\vspace{0.75\baselineskip} % Whitespace above the title
\Large \textbf{Wonderfull Title}
然后在水平模式下添加一条规则,然后仍然在水平模式下,当前基线跳跃的 .75 空间被存储起来,以便在下一行之后添加。然后\Large
执行更改字体和当前基线跳跃(但不是刚刚存储的值)的命令,然后设置文本Wonerfull Title
。然后有一个换行符,因此保存的 vspace 会添加到该文本之后。
类似地,日期后面的大空格是\vspace{2\baselineskip}
在该行以水平模式添加的,因此出现在日期后的换行符处。
您几乎总是应该\par
在前面使用一个空白行(或),\vspace
以便将其添加到它出现的位置,还要\par
在每个大小更改处添加一个或空白行,以便当前段落设置合适的基线跳过。