在一本大部头的书中,我时常会在段落之间看到一行虚假的空行。常见的情况似乎是段落恰好填满其最后一行,后面跟着一些与尾注/脚注相关的说明。
我的 MWE 有点臃肿,因为这种行为很难重现;更改任何改变确切布局的操作似乎都会让问题消失。这是我的 latex 代码(这是由 XSLT 生成的,不打算供人类阅读,然后又手工切碎了一些以减小尺寸,抱歉):
\documentclass[11pt]{memoir}
%%
\setstocksize{11in}{8.5in}%
\settrimmedsize{9.25in}{6.125in}{*}%
\setlength{\trimtop}{\stockheight} %
\addtolength{\trimtop}{-\paperheight} %
\setlength{\trimedge}{\stockwidth} %
\addtolength{\trimedge}{-\paperwidth} %
\settrims{0.875in}{1.1875in} %
\settypeblocksize{8.0in}{4.8in}{*} %
\setbinding{0in} %
\setlrmargins{0.8in}{*}{*} %
\setulmargins{0.75in}{*}{*} %
\setheadfoot{\onelineskip}{\footskip} %
\setheaderspaces{*}{.3in}{*} %
\checkandfixthelayout %
\showtrimson%
%%
\usepackage[utf8]{inputenc}
\usepackage[american]{babel}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{mathptmx}
\usepackage{helvet}
\usepackage{courier}
\usepackage[style=alphabetic,backend=biber,backref=true]{biblatex}
\usepackage{color}
\usepackage{graphicx}
\usepackage{hyphenat}
\usepackage[strict=true]{csquotes}
\usepackage{url}
\usepackage{ellipsis}
\usepackage{refcount}
\usepackage[debug=true,colorlinks=true,pdftex,draft=false,bookmarks,bookmarksopen,pdfpagelabels]{hyperref}
\usepackage[toc]{glossaries}
\makeindex
\makepagenote
\begin{document}%
\frontmatter%
\mainmatter
\chapter{Ricercar}
\label{id265899}\setlength{\epigraphwidth}{.6\linewidth}\setlength{\epigraphrule}{0pt}\epigraph{
It is unbelievable how much you don't know{\itshape } about the game you've
been playing all your life. }{\textit{---Mickey Mantle}}\setcounter{pagenote}{0}\pagenote[id265899]{{\itshape
It is unbelievable how much you don't know}: \cite[p.\ 42]{b:QualityOfCourage}}%%
%
\par
A man is sitting at a desk and typing.
He is writing in a language that no one on earth speaks.
Without long hours of study,
even someone who understood the language would be hard
pressed to read his work and understand his precise intent.
Sometimes, he stops and thinks, or draws pictures on
a piece of paper or whiteboard, or stops to sleep, eat, or
meet with others, but he always returns to typing.
Hours turn into days, days into weeks,
weeks into months, and perhaps even months into
years before the man stands up and declares he is \enquote{done.}%
\par
Done with what?
What has he created?%
\par
What he has created is a computer program,
but that explains little about what it is or even where
it exists.
At the physical level,
a computer program is usually a microscopic pattern of either electricity or
magnetism.
It may flow as whirling fields of electromagnetism from one form into another,
and be endlessly duplicated and replicated across many different
machines.
It often exists in a great many places---indeed, it only
really ceases to exist if all those copies are tracked down and obliterated
(and modern programmers generally keep an astounding number of copies of each program).%
\par
What, then, is computer programming, really?
Computer programming can be described in a number of ways,
but I will give you a factually accurate description of the
profession that you have not heard before: \begin{quote}\textbf{Computer programming is the act of designing complex patterns
of energy that affect the world.}\end{quote} I chose the two clauses in that definition carefully.
Although there are other professions that produce patterns
of energy (such as broadcasting electromagnetic FM waves),
they are not acts of designed energy like computer programming,
where every ultra-microscopic electric, magnetic, or chemical state is a result of human decision. \label{id265852}The composer Edgard Var\`{e}se declared that \label{id265846}\enquote{Music is organized sound.} and I am making an analogous declaration: software is organized energy. \label{id265842}\setcounter{pagenote}{0}\pagenote[id265852]{{\itshape The composer Edgard Var\`{e}se declared that \enquote{Music is organized sound.}}: \protect \cite[]{j:OrganizedSound}.
And though an infinite amount of music can be composed
with a twelve-note scale,
software has reduced this to the logical extreme,
generating its infinite variations from only two notes.
Var\`{e}se also said that \enquote{Our musical alphabet is poor and illogical} \protect \cite[]{b:ClassicEssaysMusic},
which is perhaps also analogous to the situation with software,
or maybe the mere longing of all creators for better tools.}\ignorespaces %%
And though much software operates nearly invisibly,
software affects the world in increasingly direct ways;%
\footnote{\label{FN:id265788}\label{FN:id265811}Turing Award winner Butler Lampson asserts the three historical phases of computers to date are:
modeling the world, connecting people, and engaging with the physical world.
The progression of these phases represents increasingly direct effects on the world.}
even in the early days when software might produce merely a
number that a human would read,
some of those numbers helped create the first atomic bomb,
so the size of software's effect on the world cannot be inferred
from how directly the software manipulates the world.
% removing the following line eliminates the unwanted empty line between paragraphs.
\setcounterref{pagenote}{FN:id265788}\pagenote[FN:id265811]{{\itshape Turing Award winner Butler Lampson asserts the three historical phases of computers}: \cite[]{c:WhatComputersDo}}
\par
\label{id265810}Born quite accidentally from the most obscure and useless mathematics, computers have turned that uselessness on its head;
\label{id265743}if mathematics is an art, \label{id265733}\setcounter{pagenote}{0}\pagenote[id265743]{{\itshape if mathematics is an art}: A position argued most passionately by
Paul Lockhart as a primary factor dooming
the teaching of mathematics in the United States. \protect \cite[]{w:MathematiciansLament}}\ignorespaces %%
\label{id265730}then computer programming is the surprising
translation of art into action.%
\footnote{\label{FN:id265710}Robert Tarjan (another Turing Award winner) chose
computer science over mathematics as a graduate student
because he saw it as \label{FN:id265706}\enquote{a way to do mathematics and see it actually perform in practice.}} \label{id265726}\setcounter{pagenote}{0}\pagenote[id265730]{{\itshape then computer programming is the surprising
translation of art into action.}: made more surprising by its suddenness. \enquote{\textup{[\kern-.05pt...\kern-.2pt]}\xspace{}
the modern notion of computation emerged remarkably suddenly,
and in a most complete form,
in a single paper published by Alan Turing in 1936.} \protect \cite[p.\ 3]{b:ProbablyApproximatelyCorrect}}\ignorespaces %%
Mathematics has been called \label{id265702}\enquote{the science of patterns,}\setcounter{pagenote}{0}\pagenote[id265702]{{\itshape \enquote{the science of patterns,}}: \cite[p.\ 7]{b:MathGene}} and that intersects with my own definition of
computer programming in the word \label{id265696}\enquote{patterns.} This is correct, since patterns are the common ground shared by
mathematics (on the more descriptive side) and programming \label{id265692}(on the decidedly prescriptive side). \label{id265661}\setcounter{pagenote}{0}\pagenote[id265692]{{\itshape (on the decidedly prescriptive side)}: I use here the definition of \enquote{prescribe} that is
synonymous with \enquote{stipulate} or \enquote{dictate.}}\ignorespaces %%
\setcounterref{pagenote}{FN:id265710}\pagenote[FN:id265706]{{\itshape\enquote{a way to do mathematics and see it actually perform in practice.}}: \cite[]{v:AlgorithmicViewUniverse}}%
\end{document}
不良行为的确切要点是这些行:
from how directly the software manipulates the world.
% removing the following line eliminates the unwanted empty line between paragraphs.
\setcounterref{pagenote}{FN:id265788}\pagenote[FN:id265811]{{\itshape Turing Award winner Butler Lampson asserts the three historical phases of computers}: \cite[]{c:WhatComputersDo}}
\par
不需要的空行最终看起来像这样(即使我包含了真正的参考书目并运行多遍以“真正”构建整本书,也是如此): 我正在运行 Tex Live 2017,并输入“pdflatex book.tex”来获取输出。
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/W32TeX) (preloaded format=pdflatex 2017.7.12)
我可以摆弄很多小东西来解决问题,但我真的不想不断地检查整个文档来查看问题是否出现在新的地方。而且,由于我的 LaTeX 是机器生成的,如果可能的话,我真的很想真正理解这个问题,而不是简单地生成产生它的代码。然而,经过多次修修补补,我被难住了,无法找出问题的原因。
答案1
拿:
from how directly the software manipulates the world.
\setcounterref{pagenote}{FN:id265788}\pagenote[FN:id265811]{{\itshape Turing
Award winner Butler Lampson asserts the three historical phases of computers}:
\cite[]{c:WhatComputersDo}}
\par
在每个换行符处,LaTeX 都会看到一个空格。尤其是第一行和第二行之间有一个空格。此后的指令需要写入辅助文件,因此它们会插入一个“whatsit”节点。因此,第一行末尾的空格是“可丢弃的”,并将在段落末尾被丢弃,但它后面跟着不可丢弃的“whatsit”,因此不能被丢弃。这会导致段落末尾出现一个空格,TeX 有时将其用作断点。(有关更多信息,请参阅练习 14.12 之后的 TeXbook)
可以通过不添加这个空格来避免这种情况,因此每当文本后跟带有 的行时,请在行末尾\pagenote
添加。%
在给定的例子中,这将是
from how directly the software manipulates the world.%
\setcounterref{pagenote}{FN:id265788}\pagenote[FN:id265811]{{\itshape Turing
Award winner Butler Lampson asserts the three historical phases of computers}:
\cite[]{c:WhatComputersDo}}
\par