我为学生的测试做了一些“标题”。我使用的代码是
\begin{document}
\begin{flushleft}Combinatorics -- 2018.2 \hfill \includegraphics[scale=0.08]{logo.pdf}\end{flushleft}
\vspace{-0,3cm}
\hrule
\vspace{-0,3cm}
\begin{flushleft}\textbf{FIRST TEST}\hfill Prof$.$ Alessandro Gaio\end{flushleft}
\vspace{0.3cm}
产生了
但当我把“组合学”改成“微分几何”时
\begin{document}
\begin{flushleft}Differential Geometry -- 2018.2 \hfill \includegraphics[scale=0.08]{logo.pdf}\end{flushleft}
\vspace{-0,3cm}
\hrule
\vspace{-0,3cm}
\begin{flushleft}\textbf{FIRST TEST}\hfill Prof$.$ Alessandro Gaio\end{flushleft}
\vspace{0.3cm}
“geometry” 中字符 “y” 的出现产生了这样的结果:
正如您所注意到的,与编写“组合学”时相比,“微分几何”和水平线之间的空间有所增加。
那么我该如何避免这种情况发生呢?我希望两个空间都像小空间一样。
提前致谢!
答案1
使用\hrule
可以实现精确的间距,但flushleft
会造成阻碍。最好使用水平框。
由于\hrule
不会在上方和下方添加垂直空间,因此您可以精确决定要放置多少空间。唯一要做的就是删除顶行的深度,这可以通过结束段落(由单个框组成)并按 后退来完成\prevdepth
。
宏绝对是可行的方法,因此如果您想更改间距,您只需修复宏的代码。
\documentclass{article}
\usepackage{graphicx}
\usepackage{showframe}
\newcommand{\assignmentheader}[3]{%
\par\noindent
\makebox[\textwidth][s]{%
\strut #1 -- #2\hfill
\includegraphics[height=3mm]{example-image}%
}%
\par\vspace{-\prevdepth}\vspace{0.5ex}
\hrule\vspace{0.5ex}
\noindent
\makebox[\textwidth][s]{\textbf{#3}\hfill Prof.\ Alessandro Gaio}%
\par
}
\begin{document}
\assignmentheader{Combinatorics}{2018.2}{FIRST TEST}
\bigskip
\assignmentheader{Differential Geometry}{2018.2}{FIRST TEST}
\end{document}
顺便说一句,如果你不想让句号Prof.
被视为句子结尾,请输入
Prof.\ Alessandro Gioia
而不是可怕的Prof$.$
;-)
该showframe
包仅用于显示文本块边界,在生产版本中将其删除。
答案2
LaTeX\rule
命令将根据一致的基线到基线间距进行定位,但由于您使用了 Tex 基元,因此\hrule
它会立即定位在垂直列表中,因此会受到下降符的影响。从您已有的内容开始,最简单的更改是使用
\mbox{\textbf{\smash{Differential Geometry}}}
宏\smash
隐藏了其内容的垂直范围。