我重新审视了旧代码,并以我认为更优雅的方式重写了一些东西,但我得到了意想不到的结果。
我有以下代码,无论我如何设置值,它似乎都能完全按照我的意愿运行\parskip
。
\documentclass{article}
\usepackage[margin=0.5in]{geometry}
\makeatletter
\newcommand\ae@tpd{}
\newcommand\savetopreviousdepth{%%
\par\xdef\ae@tpd{\the\prevdepth}}
\newcommand\restoretopreviousdepth{%%
\par\prevdepth\ae@tpd
\ifdim\parskip=0pt
\else
\vskip -\parskip
\fi}
\makeatother
%\setlength\parskip{2ex}
\begin{document}
Horum omnium fortissimi sunt Belgae, propterea quod a cultu atque
humanitate provinciae longissime absunt, minimeque ad eos mercatores saepe
commeant atque ea quae ad effeminandos animos pertinent important,
proximique sunt Germanis, qui trans Rhenum incolunt, quibuscum continenter
bellum gerunt. Qua de causa Helvetii quoque reliquos Gallos virtute
praecedunt, quod fere cotidianis proeliis cum Germanis contendunt, cum aut
suis finibus eos prohibent aut ipsi in eorum finibus bellum gerunt.
\begin{minipage}[t]{4.15in}%%'
Apud Helvetios longe nobilissimus fuit et ditissimus Orgetorix. Is
M. Messala, [et P.] M. Pisone consulibus regni cupiditate inductus
coniurationem nobilitatis fecit et civitati persuasit ut de finibus suis cum
omnibus copiis exirent: perfacile esse, cum virtute omnibus praestarent,
totius Galliae imperio potiri. Id hoc facilius iis persuasit, quod undique
loci natura Helvetii continentur: una ex parte flumine Rheno latissimo atque
altissimo, qui agrum Helvetium a Germanis dividit; altera ex parte monte Iura
altissimo, qui est inter Sequanos et Helvetios; tertia lacu Lemanno et flumine
Rhodano, qui provinciam nostram ab Helvetiis dividit. His rebus fiebat ut et
minus late vagarentur et minus facile finitimis bellum inferre possent; qua ex
parte homines bellandi cupidi magno dolore adficiebantur. Pro multitudine
autem hominum et pro gloria belli atque fortitudinis angustos se fines habere
arbitrabantur, qui in longitudinem milia passuum
\savetopreviousdepth
\end{minipage}%%'
\restoretopreviousdepth\noindent
His rebus adducti et auctoritate Orgetorigis permoti constituerunt ea
quae ad proficiscendum pertinerent comparare, iumentorum et carrorum quam
maximum numerum coemere, sementes quam maximas facere, ut in itinere copia
frumenti suppeteret, cum proximis civitatibus pacem et amicitiam
confirmare. Ad eas res conficiendas biennium sibi satis esse duxerunt; in
tertium annum profectionem lege confirmant. Ad eas res conficiendas
Orgetorix deligitur. Is sibi legationem ad civitates suscipit. In eo
itinere persuadet Castico, Catamantaloedis filio, Sequano, cuius pater
regnum in Sequanis multos annos obtinuerat et a senatu populi Romani
amicus appellatus erat, ut regnum in civitate sua occuparet, quod pater
ante habuerit; itemque Dumnorigi Haeduo, fratri Diviciaci, qui eo tempore
principatum in civitate obtinebat ac maxime plebi acceptus erat, ut idem
conaretur persuadet eique filiam suam in matrimonium dat. Perfacile factu
esse illis probat conata perficere, propterea quod ipse suae civitatis
imperium obtenturus esset: non esse dubium quin totius Galliae plurimum
Helvetii possent; se suis copiis suoque exercitu illis regna conciliaturum
confirmat.
Hac oratione adducti inter se fidem et ius iurandum dant et
regno occupato per tres potentissimos ac firmissimos populos totius
Galliae sese potiri posse sperant.
\end{document}
但我认为我可以想出一个更优雅的解决方案,通过重写\restoretopreviousdepth
为
\newcommand\restoretopreviousdepth{%%
\bgroup
\parskip0pt
\par\prevdepth\ae@tpd
\egroup}
换句话说,不必测试是否对 做了任何特殊处理\parskip
,只需在本地更改该值即可。但是,当我将其设置为某个非零值时,这根本没有达到预期的效果。在最终产品中,行间距似乎在 的末尾和以下材料之间\parskip
插入了 的空间,这完全不是我想要的。2ex
minipage
现在,如果我写一些不太优雅的东西
\newcommand\restoretopreviousdepth{%%
\bgroup
\parskip0pt
Hq
\par\noindent
Hq
\par\prevdepth\ae@tpd
\egroup}
\par
似乎在做正确的事情除了当后面跟着 时\prevdepth
。
有人能解释一下这里发生了什么吗?
答案1
\parskip
在的设置
\newcommand\restoretopreviousdepth{%%
\bgroup
\parskip0pt
\par\prevdepth\ae@tpd
\egroup}
什么也不做\parskip
执行任何操作,就像 TeX 那样树叶垂直模式开始一个新段落,并且(如果发生的话)发生在之后,\egroup
因此将使用前一个值。