
在一本大書中,我常常在段落之間看到一個虛假的空行。共同的因素似乎是一個段落幾乎完全填滿了它的最後一行,並且後面是一些與尾註/腳註相關的說明。
我的 MWE 有點胖,因為這是一種很難重現的行為;改變任何改變確切佈局的東西似乎都會讓問題消失。這是我的乳膠程式碼(這是由 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 都會看到一個空格。特別是第一行和第二行之間有一個空格。此後的指令需要寫入 aux 文件,因此它們插入一個「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