Chapter25. Alignment
because the conditionalis evaluated before math mode has beenset up. The solution
is,as inmanyothercases, toinserta\relaxcontrolsequencetostoptheexpansion.
Herethe \relax has tobeinsertedatthestartofthealignmententry.
Ifneither\noalignnor\omit(seebelow)isfound,T
E
Xwillprocessaninputstream
composedoftheu part, , the αtokens (whichare delimitedbyeither&or\span, see
below), andthevpart.
Entries are e delimited by &, , \span, or \cr, but only y if f such a a token n occurs s on n the
same level ofgrouping. . This makes it possible e to have e analignment t as an entryof
anotheralignment.
25.4.2 Alternatespecifications:\omit
The templateline will rarelybe sufficient todescribe all lines ofthe alignment. For
lines where items s should be e set differently the command d \omit t exists: if the first
token in an entry is (or expands s to) ) \omit t the trivial template # # is used d instead of
whatthe template linespecifies.
The following alignmentuses thesametemplate forallcolumns, but
inthe secondcolumnan\omitcommandis given.
\tabskip=1em
\halign{&$<#>$\cr a&\omit (b)&c \cr}
Theoutput of this is
<a> (b) <c>
25.4.3 Spanningacrossmultiplecolumns:\span
Sometimesit isdesirabletohavematerialspanningseveral columns.Themost obvious
exampleisthatofaheadingaboveatable.ForthisT
E
Xprovidesthe\spancommand.
Entries are delimited either by &, by \cr, or by \span. In the last case T
E
X will
omit thetabskip gluethat would normally follow theentry thusdelimited,and it will
typeset thematerial just read plusthefollowing entry in thejoint spaceavailable.
Asan example,
\tabskip=1em
\halign{&#\cr a&b&c&d\cr a&\hrulefill\span\hrulefill&d\cr}
gives
a b c d
a
d
Note that there is no tabskip glue in between the two spanned columns, but there is
tabskip gluebeforethe first column and after thelast.
Using the \omit command this same alignment could havebeen generated as
\halign{&#\cr a&b&c&d\cr a&\hrulefill\span\omit&d\cr}
The \span\omit combination is used in the plain T
E
X macro \multispan: for in-
stance
220
VictorEijkhout–T
E
XbyTopic
Delete pdf pages acrobat - remove PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Provides Users with Mature Document Manipulating Function for Deleting PDF Pages
delete page pdf file; copy pages from pdf to another pdf
Delete pdf pages acrobat - VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Visual Basic Sample Codes to Delete PDF Document Page in .NET
delete blank pages in pdf online; add and remove pages from a pdf
25.4. Thealignment
\multispan4 gives \omit\span\omit\span\omit\span\omit
which spans across three tabs, and removes the templates of four entries. Repeating
theabove exampleonceagain:
\halign{&#\cr a&b&c&d\cr a&\multispan2\hrulefill&d\cr}
The argument of \multispan is a single token, not a number, so in order to span
morethan9columnstheargument should beenclosed inbraces,forinstance\multispan{12}.
Furthermore, aspace after asingle-digit argument will wind up in theoutput.
Fora‘lowbudget’solutiontospanningcolumnsplainT
E
Xhasthemacro\hidewidth,
defined by
\newskip\hideskip \hideskip=-1000pt plus 1fill
\def\hidewidth{\hskip\hideskip}
Putting \hidewidthatthebeginningorend of an alignment entry willmakeitswidth
zero, with thematerial in the entry sticking out totheleft orright respectively.
25.4.4 Rulesinalignments
Horizontal rules insidea horizontal alignment will mostly be across the width of the
alignment.Theeasiest way to attain thisisto use
\noalign{\hrule}
lines insidethealignment. If the alignment iscontained in a vertical box, lines above
and belowthealignment can bespecified with
\vbox{\hrule \halign{...} \hrule}
Themost general way to get horizontal linesin an alignment isto use
\multispann\hrulefill
which can beused to underline arbitrary adjacent columns.
Vertical rulesin alignments takesomemorecare. Since ahorizontal alignment breaks
up into horizontal boxes that will be placed on a vertical list, T
E
X will insert ba-
selineskip glue in between the rows of the alignment. If vertical rules in adjacent
rows are to abut, it is necessary to prevent baselineskip glue, for instance by the
\offinterlineskipmacro.
In orderto ensurethat rows will still beproperly spaced it is then necessary to place
astrut somewhereinthepreamble. A strut is an invisibleobject with acertain height
and depth. Putting that in the preamble guarantees that every line will have at least
that height and depth. In theplain format \strut is defined staticallyas
\vrule height8.5pt depth3.5pt width0pt
so thismust bechanged when otherfontsor sizes areused.
It isagood idea to usea wholecolumnforavertical rule, that is,to write
\vrule#&
in thepreambleandtoleavethecorresponding entryinthealignment empty.Omitting
the vertical rule can then be done by specifying \omit, and thesize of the rule can
VictorEijkhout–T
E
XbyTopic
221
.NET PDF Document Viewing, Annotation, Conversion & Processing
Redact text content, images, whole pages from PDF file. Annotate & Comment. Edit, update, delete PDF annotations from PDF file. Print.
pdf delete page; delete blank pages in pdf files
C# PDF Converter Library SDK to convert PDF to other file formats
manipulate & convert standard PDF documents in .NET class applications independently, without using other external third-party dependencies like Adobe Acrobat.
delete pages from a pdf reader; delete pages in pdf
Chapter25. Alignment
be specified explicitly by putting, for instance, height 15pt in the entry instead of
leaving itempty.Ofcourse,tabskip gluewill nowbespecifiedto theleft and rightof
therule, so someextratabskip assignments may beneeded inthepreamble.
25.4.5 Endofaline:\crand\crcr
Alllinesinanalignment areterminatedby the\crcontrolsequence,includingthelast
line.T
E
Xisnot abletoinferfromaclosingbraceintheα part thatthealignment has
ended,becausean unmatched closing braceisperfectly valid in an alignment entry; it
may match an opening bracein theu part ofthecorresponding preambleentry.
T
E
Xhas aprimitive command \crcr that isequivalent to \cr, but it hasno effect if
it immediately follows a \cr. Consider as an example the definition in plain T
E
Xof
\cases:
\def\cases#1{%
\left\{\,\vcenter{\normalbaselines\m@th
\ialign{ $##\hfil$& \quad##\hfil \crcr #1\crcr}}%
\right.}
Because of the \crcr after the user argument #1, the following two applications of
thismacro
\cases{1&2\cr 3&4} and \cases{1&2\cr 3&4\cr}
both work. In the first case the \crcr in the macro definition ends the last line; in
thesecond casetheuser’s \crends theline, and the\crcrisredundant.
After\cr and after anon-redundant \crcr thetoken parameter \everycrisinser-
ted. This includesthe\crterminating thetemplateline.
25.5 Example:mathalignments
The plain format has several alignment macros that function in math mode. One ex-
ampleis \matrix,defined by
\def\matrix#1{\null\,\vcenter{\normalbaselines\m@th
\ialign{\hfil$##$\hfil && \quad\hfil$##$\hfil\crcr
\mathstrut\crcr
\noalign{\kern-\baselineskip}
#1\crcr
\mathstrut\crcr
\noalign{\kern-\baselineskip}}}\,}
This uses a repeating (starting with &&) second preamble entry; each entry is centred
by an \hfil before and after it, and thereis a\quad of space in between columns.
Tabskip gluewasnotused forthis,becausethereshouldnotbeany glueprecedingor
following thematrix.
Thecombination of a\mathstrutand \kern-\baselineskipabove and below the
matrix increases the vertical size such that two matrices with the same number of
222
VictorEijkhout–T
E
XbyTopic
C# powerpoint - PowerPoint Conversion & Rendering in C#.NET
documents in .NET class applications independently, without using other external third-party dependencies like Adobe Acrobat. PowerPoint to PDF Conversion.
delete pages of pdf preview; delete page from pdf reader
C# Word - Word Conversion in C#.NET
Word documents in .NET class applications independently, without using other external third-party dependencies like Adobe Acrobat. Word to PDF Conversion.
delete pdf pages; add and delete pages in pdf online
25.5. Example: math alignments
rows will have the same height and depth, which would not otherwise be the case
if one of them had subscripts in the last row, but the other not. The \mathstrut
causesinterlinegluetobeinsertedand,becauseithasasizeequalto\baselineskip,
the negative kern will effectively leave only the interline glue, thereby buffering any
differences in thefirst and last line. Only to acertain point, of course: objects bigger
than theopening bracewill still result in adifferent height or depth of thematrix.
Another,more complicated,exampleofan alignmentformath modeis \eqalignno.
\def\eqalignno#1{\begin{disp}l@y \tabskip\centering
\halign to\displaywidth{
\hfil$\@lign\displaystyle{##}$%
-- first column
\tabskip\z@skip
&$\@lign\displaystyle{{}##}$\hfil% -- second column
\tabskip\centering
&\llap{$\@lign##$}%
-- third column
\tabskip\z@skip\crcr
%
end of the preamble
#1\crcr}}
Firstly, the tabskip is set to zero after the equation number, so this number is set
flush with the right margin. Since it is placed by \llap, its effective width is zero.
Secondly, thetabskip between thefirst and second columnsisalso zero,and thetabs-
kip before the first column and after the second is \centering, which is 0pt plus
1000pt minus 1000pt, so the first column and second are jointly centred in the
\hsize. Note that, because of the minus 1000pt, these two columns will happily
go outsidetheleft and right margins,overwriting any equation numbers.
VictorEijkhout–T
E
XbyTopic
223
C# Windows Viewer - Image and Document Conversion & Rendering in
standard image and document in .NET class applications independently, without using other external third-party dependencies like Adobe Acrobat. Convert to PDF.
copy pages from pdf to word; delete page on pdf
VB.NET PDF: How to Create Watermark on PDF Document within
Watermark Creator, users need no external application plugin, like Adobe Acrobat. VB example code to create graphics watermark on multiple PDF pages within the
delete a page from a pdf acrobat; delete pages from pdf reader
Chapter 26
PageShape
This chapter treats some of the parameters that determine the size of the page and
how it appearson paper.
\topskip Minimumdistancebetweenthetopofthepageboxand thebaselineofthe
first box on thepage. Plain T
E
Xdefault: 10pt
\hoffset \voffset Distance by which the page is shifted right/down with respect
to the referencepoint.
\vsize Height ofthepagebox. Plain T
E
Xdefault: 8.9in
\maxdepth Maximum depth of thepagebox. Plain T
E
Xdefault: 4pt
\splitmaxdepth Maximum depth of a box split off by a \vsplit operation. Plain
T
E
Xdefault: \maxdimen
26.1 Thereferencepointforglobalpositioning
It is a T
E
X convention, to which output device drivers must adhere, that the top left
pointofthepageisoneinch fromthepageedges.Unfortunately thismay lead tolots
of trouble, for instance if a printer (or the page description language it uses) takes,
say, thelower left corner as thereferencepoint, and is factory set to USpaper sizes,
but isused with European standard A4 paper.
The page is shifted on the paper if one assigns non-zero values to \hoffset or
\voffset: positive values shift to the right and down respectively.
26.2 \topskip
The \topskip ensures to a certain point that the first baseline of a page will be at
thesamelocationfrompagetopage, eveniffont sizes areswitched betweenpagesor
ifthefirst linehasno ascenders.
Beforethefirstbox on eachpagesomeglueisinserted.Thisgluehasthesamestretch
and shrink as \topskip, but the natural size is thenatural size of \topskip minus
theheight ofthefirst box,or zero ifthis would benegative.
224
C# Excel - Excel Conversion & Rendering in C#.NET
Excel documents in .NET class applications independently, without using other external third-party dependencies like Adobe Acrobat. Excel to PDF Conversion.
delete pages from pdf in preview; delete pages in pdf reader
VB.NET PowerPoint: VB Code to Draw and Create Annotation on PPT
as a kind of compensation for limitations (other documents are compatible, including PDF, TIFF, MS on slide with no more plug-ins needed like Acrobat or Adobe
delete pages pdf preview; add remove pages from pdf
26.3. Page height and depth
PlainT
E
Xsets\topskipto 10pt.Thusthetoplinesofpageswillhavetheirbaselines
at the same place if the top portion of the characters is ten point or less. For the
Computer Modern fonts this condition is satisfied if the font size is less than (about)
13 points; forlargerfontsthebaselineof the top linewill drop.
The height of the page box for a page containing only text (and assuming a zero
\parskip) will bethe \topskip plus anumber of times the \baselineskip. Thus
onecan define amacro to computethe \vsize from thenumberof lineson apage:
\def\HeightInLines#1{\count@=#1\relax
\advance\count@ by -1\relax
\vsize=\baselineskip
\multiply\vsize by \count@
\advance\vsize by \topskip}
Calculating the \vsize thisway will prevent underfull boxesfor text-only pages.
In cases where the page does not start with a line of text (for instance a rule), the
topskip may giveunwanted effects.To prevent these, start the pagewith
\hbox{}\kern-\topskip
followed by what you wanted on top.
Analogous to the \topskip, there is a \splittopskip for pages generated by a
\vsplit operation; seethe next chapter.
26.3 Pageheightanddepth
T
E
X tries to build pages as a \vbox of height \vsize; see also \pagegoal in the
next chapter.
Ifthelastitemonapagehasanexcessivedepth,thatpagewouldbenoticeablylonger
than other pages. To prevent this phenomenon T
E
Xuses \maxdepth asthemaximum
depth of the page box. If adding an item to the page would make the depth exceed
this quantity, then the referencepoint of the pageis moved down to makethe depth
exactly \maxdepth.
The ‘raggedbottom’ effect is obtained in plain T
E
X by giving the \topskip some
finite stretchability: 10pt plus 60pt. Thus the natural height of box 255 can vary
when it reachestheoutput routine. Pages arethen shipped out (moreor less)as
\dimen0=\dp255 \unvbox255
\ifraggedbottom \kern-\dimen0 \vfil \fi
The\vfilcausesthetopskiptobesetat naturalwidth,so theeffectisoneofafixed
top lineand avariable bottomlineof the page.
Before \box255 is unboxed in the plain T
E
X output routine, \boxmaxdepth is set
to \maxdepth so that this box will made under the same assumptions that the page
builder used when putting together \box255.
Thedepthofboxsplitoffby a\vsplitoperationiscontrolledby the\splitmaxdepth
parameter.
VictorEijkhout–T
E
XbyTopic
225
Chapter 27
PageBreaking
This chapter treatsthe ‘pagebuilder’: the partof T
E
Xthat decideswhereto break the
main vertical list into pages. Thepage builder operatesbefore theoutput routine, and
it hands its result in \box255to the output routine.
\vsplit Split of atop part of abox. This is comparablewith page breaking.
\splittopskip Minimumdistancebetweenthetopof whatremainsafter a\vsplit
operation,and thefirst itemin that box. Plain T
E
Xdefault: 10pt
\pagegoal Goal height ofthepagebox. This starts at \vsize,and is diminished by
heightsof insertion items.
\pagetotal Accumulatednatural height of thecurrent page.
\pagedepth Depth ofthecurrent page.
\pagestretch Accumulated zeroth-orderstretch ofthecurrent page.
\pagefilstretch Accumulated first-order stretchof thecurrent page.
\pagefillstretch Accumulated second-order stretch of the current page.
\pagefilllstretch Accumulated third-order stretch ofthecurrent page.
\pageshrink Accumulated shrink ofthecurrent page.
\outputpenalty Value of the penalty at the current page break, or 10000 if the
break wasnot at apenalty.
\interlinepenalty Penalty for breakingapagebetween linesof aparagraph.Plain
T
E
Xdefault: 0
\clubpenalty Additional penalty for breaking a page after the first line of a para-
graph.Plain T
E
Xdefault: 150
\widowpenalty Additional penalty for breaking a page beforethe last line of a pa-
ragraph. Plain T
E
Xdefault: 150
\displaywidowpenalty Additional penalty for breaking a page before the last line
aboveadisplay formula. Plain T
E
Xdefault: 50
\brokenpenalty Additional penaltyforbreakingapageafterahyphenatedline.Plain
T
E
Xdefault: 100
\penalty Placea penalty on thecurrent list.
\lastpenalty Ifthelast item on thelist wasapenalty,thevalue of this.
\unpenalty Remove thelast item of the current list if thiswas apenalty.
226
27.1. Thecurrent pageand therecent contributions
27.1 Thecurrentpageandtherecentcontributions
Themain verticallist of T
E
Xisdivided intwo parts: the‘current page’and thelist of
‘recent contributions’. Any material that isadded to themain vertical list isappended
to the recent contributions; the act of moving the recent contributions to the current
pageisknown as ‘exercising thepagebuilder’.
Every timesomething ismovedtothecurrentpage,T
E
Xcomputesthecostofbreaking
the pageat that point. If it decides that it is past the optimal point, the current page
up to the best break so far is put in \box255 and the remainder of the current page
is moved back on top of the recent contributions. If the page is broken at apenalty,
that value is recorded in \outputpenalty, and apenalty of size10000 is placed on
top of therecent contributions; otherwise, \outputpenalty is set to10000.
If the current page is empty, discardable items that are moved from the recent con-
tributions are discarded. This is the mechanism that lets glue disappear after a page
break and at the top of the first page. When the first non-discardable item is moved
to thecurrent page,the\topskipglueisinserted; see thepreviouschapter.
The workings of the page builder can bemade visible by setting \tracingpages to
somepositivevalue(seeChapter 34).
27.2 Activatingthepagebuilder
Thepagebuilder comes into play in thefollowing circumstances.
Around paragraphs: after the \everypartokens havebeen inserted, and after
the paragraph has been added to thevertical list. See theend of this chapter
for an example.
Arounddisplayformulas:afterthe\everydisplaytokenshavebeen inserted,
and after the display hasbeen added tothelist.
After\parcommands,boxes,insertions,andexplicitpenaltiesinverticalmode.
Afteran output routinehasended.
In these places the page builder moves the recent contributions to the current page.
Note that T
E
X need not be in vertical mode when the page builder is exercised. In
horizontal mode, activating the page builder serves to move preceding vertical glue
(for example,\parskip, \abovedisplayskip) to thepage.
The \end command – which is only allowed in external vertical mode– terminatesa
T
E
Xjob, but only if the main vertical list is empty and \deadcycles=0. If this is
not thecase thecombination
\hbox{}\vfill\penalty−2
30
is appended,which forces theoutput routine to act.
27.3 Pagelengthbookkeeping
Theheightanddepthofthepagebox thatreachestheoutput routinearedeterminedby
\vsize, \topskip, and \maxdepthas described in the previous chapter. T
E
Xplaces
VictorEijkhout–T
E
XbyTopic
227
Chapter27. PageBreaking
the \topskip glue when the first box is placed on the current page; the \vsize
and \maxdepth are read when the first box or insertion occurs on the page. Any
subsequent changes to theseparameterswill not be noticeableuntil thenext page or,
more strictly,until after theoutput routinehasbeen called.
After the first box, rule, or insertion on the current page the \vsize is recorded in
\pagegoal, and its value is not looked at until \output has been active. Changing
\pagegoal does have an effect on the current page. When the page is empty, the
pagegoal is\maxdimen, and \pagetotaliszero.
Accumulateddimensionsandstretchareavailableintheparameters\pagetotal,\pagedepth,
\pagestretch,\pagefilstretch,\pagefillstretch,\pageshrink,and \pagefilllstretch.
They areset by the pagebuilder.Thestretch and shrink parameters areupdated every
timeglueisaddedto thepage.Thedepth parameterbecomeszeroifthelastitemwas
kern or glue.
Theseparametersarespecial dimens; an assignment to any of them isan intimate
assignment, and it is automatically global.
27.4 Breakpoints
27.4.1 Possiblebreakpoints
Pagebreaks can occurat thesamekind of locationswherelinebreakscan occur:
at glue that is preceded by anon-discardableitem;
at a kern that is immediatelyfollowed by glue;
at a penalty.
T
E
X inserts interline glueand various sorts of interline penalties when the lines of a
paragraph areadded to thevertical list,so there will usually be sufficient breakpoints
on thepage.
27.4.2 Breakpointpenalties
If T
E
Xdecides to break a pageat a penalty item, this penalty will, most of the time,
beonethat has been inserted automatically between thelinesof aparagraph.
If the last item on a list (not necessarily a vertical list) is a penalty, the value of
this is recorded in the parameter \lastpenalty. If the item is other than a penalty,
this parameter has the value zero. The last penalty of alist can beremoved with the
command \unpenalty. See Section 5.9.6 foran example.
Hereisalist ofsuch penalties:
\interlinepenalty Penalty for breaking a page between lines of a paragraph. In
plain T
E
Xthisiszero, so no penalty is added in between lines. T
E
Xcan then
find a valid breakpoint at the\baselineskip glue.
228
VictorEijkhout–T
E
XbyTopic
27.4. Breakpoints
\clubpenalty Extra penalty for breaking a page after the first line of a paragraph.
In plain T
E
X this is 150. This amount, and the following penalties, are ad-
ded to the \interlinepenalty, and a penalty of the resulting size is in-
serted after the \hbox containing thefirst line of a paragraph instead of the
\interlinepenalty.
\widowpenalty Extrapenalty forbreaking apagebeforethelast lineof aparagraph.
In plain T
E
Xthisis150.
\displaywidowpenalty Extrapenalty for breaking apagebeforethelast lineabove
adisplay formula. The default valuein plain T
E
Xis50.
\brokenpenalty Extrapenaltyforbreakingapageafterahyphenatedline.Thedefault
valuein plain T
E
Xis 100.
If theresulting penalty is zero, it isnot placed.
Penalties can also be inserted by the user. For instance, the plain format has macros
to encourage(possibly, force) or prohibit pagebreaks:
\def\break{\penalty-10000 }
% force break
\def\nobreak{\penalty10000 }
% prohibit break
\def\goodbreak{\par\penalty-500 } % encourage page break
Also, \vadjust{\penalty ... } is a way of getting penalties in the vertical list.
This can be used to discourage or encourage page breaking after a certain line of a
paragraph.
27.4.3 Breakpointcomputation
Whenever an item is moved to the current page,
T
E
X computes thepenalty p and thebadness b
underfull page
b=10000
feasiblebreakpoints
b<10000
overfull page
b=∞
.
.
.
associated with breaking the page at that place.
From the penalty and the badness the cost c of
breaking iscomputed.
Theplaceofleastcost is remembered,andwhen
the cost is infinite, that is, the page is overfull,
or when thepenalty is p≤−10000, the current
page is broken at the (last remembered) place
of least cost. The broken-off piece is then put
in \box255 and the output routine token list is
inserted. Box 255 is always given a height of
\vsize, regardless ofhow much material it has.
The badness calculation is based on the amount
of stretching or shrinking that is necessary to fit
the page in a box with height \vsize and ma-
ximumdepth \maxdepth.Thiscalculation isthe
same as for line breaking (see Chapter 8). Bad-
ness is a value 0 ≤ b ≤ 10000, except when
pagesare overfull; thenb=∞.
VictorEijkhout–T
E
XbyTopic
229
Documents you may be interested
Documents you may be interested