我正在尝试定义一个类似于的新命令
\newcommand {\mainv} {\par\noindent\hspace*{0pt}\ignorespaces}
但是,我想要一些负的前面垂直空间。我知道这会\vspace
在文本后添加垂直空间。是否有类似的命令可以在文本前添加垂直空间?
提供以下输出的命令是:
\main {This text is written using command main}
\mainv {This text is written using command mainv}
其中\main
定义为
\newcommand {\main} {\par\noindent\hspace*{0pt}\ignorespaces}
答案1
答案2
我不完全清楚您想要实现什么以及为什么要重叠线条,所以我会坚持这个问题“是否有一个命令可以在文本行前添加垂直空间?”。
pdfTeX 引擎有一个\vadjust pre
原语,可以方便地用于此目的。请参阅以下 MWE。
% My standard header for TeX.SX answers:
\documentclass[a4paper]{article} % To avoid confusion, let us explicitly
% declare the paper format.
\usepackage[T1]{fontenc} % Not always necessary, but recommended.
% End of standard header. What follows pertains to the problem at hand.
\makeatletter
\newcommand*\vspacebeforeline[1]{%
\ifvmode % if in vertical mode, act as "\vspace{#1}"
\vskip #1
\vskip \z@skip
\else
\@bsphack
\vadjust pre {%
\@restorepar
\vskip #1
\vskip \z@skip
}%
\@esphack
\fi
}
\makeatother
\begin{document}
Here is some nonsensical text, written for the sole purpose of filling up at
least one line. Well, after all I~think that two lines would be even better.
And now, we use our new command exactly here\vspacebeforeline{18pt plus 6pt
minus 6pt}, followed by a few other words to end the test.
\vspacebeforeline{3pt}
It can be used in vertical mode, too.
\end{document}
这是它产生的输出:
答案3
除非您尝试重叠线条,否则我猜您正在寻找变量\baselineskip
或\baselinestretch
?但您可能不想直接更改这些变量,因为其他宏会根据它们进行缩放。
\baselineskip:告诉 TeX 基线之间距离的参数。
或者\linespread
例如,为下一次字体更改设置线条扩展:\linespread{1.5}\selectfont
否则,是的,只需操纵垂直框周围的空间,\vspace{<natural height> plus <stretching> minus <shrinking>}
这就是你的工具。