Chapter29
Insertions
Insertions areT
E
X’swayofhandlingfloatinginformation.T
E
X’spagebuildercalcula-
teswhatinsertions andhow w many ofthem m willfitonthe page;theseinsertion n items
arethenplacedininsertionboxeswhichare tobehandledbythe outputroutine.
\insert Start an insertionitem.
\newinsert Allocate anew insertion class.
\insertpenalties Total of penalties for split insertions. Inside the output routine,
thenumber ofheld-over insertions.
\floatingpenalty Penalty added when an insertion issplit.
\holdinginserts (T
E
X3 only) If this is positive, insertions are not placed in their
boxes at output time.
\footins Number of thefootnoteinsertion class in plain T
E
X.
\topins Numberof thetopinsertion class.
\topinsert Plain T
E
Xmacro to start atop insert.
\pageinsert Plain T
E
Xmacro to start an insert that will takeup a wholepage.
\midinsert Plain T
E
Xmacro that places its argument if thereisspace, and converts
it into atop insert otherwise.
\endinsert PlainT
E
Xmacrotowindupaninsertionitemthat started with\topinsert,
\midinsert, or \pageinsert.
29.1 Insertionitems
Insertions contain floating information. Handling insertions is astrange interplay bet-
ween the user, T
E
X’s internalworkings,and theoutput routine.First theuser specifies
an insertion, which is a certain amount of vertical material; then T
E
X’s page builder
decides what insertions should go on the current page and puts these insertions in
insertion boxes; finally,theoutput routinehasto do something with theseboxes.
Aninsertion itemlookslike
\insert8-bit number{vertical modematerial}
240
Cut pages from pdf - 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 in pdf reader; delete pages on pdf file
Cut pages from pdf - 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 pages pdf file; delete blank page in pdf online
29.2. Insertion classdeclaration
where the 8-bit number should not be 255, because \box255 is used by T
E
X for
passing thepage to theoutput routine.
Thebracesaroundthevertical modematerial in aninsertionitemcanbeimplicit;they
imply a new level of grouping. The vertical mode material is processed in internal
vertical mode.
Values of \splittopskip, \splitmaxdepth, and \floatingpenalty are relevant
for split insertions (see below); the values that are current just before the end of the
group areused.
Insertion itemscanappear in vertical mode,horizontal mode,and mathmode.For the
latter two modes they have to migrate to the surrounding vertical list (see page 76).
After an insertion itemis put on thevertical list thepage builder isexercised.
29.2 Insertionclassdeclaration
In theplain format the numberfora new insertion class is allocated by \newinsert:
\newinsert\myinsert % new insertion class
which uses\chardef to assign anumber to thecontrol sequence.
Insertion classesareallocated numbering from 254downward.Asbox255isused for
output, this allocation schemeleaves\skip255, \dimen255, and \count255free for
scratch use.
29.3 Insertionparameters
For each insertion class nfourregisters areallocated:
\boxnWhen theoutput routineisactivethisbox containstheinsertionitems
ofclass nthat should be placed on thecurrent page.
\dimenn This is the maximum space allotted for insertions of class n per
page. If thisamount would beexceeded T
E
Xwill split insertions.
\skipn Glueofthissizeis added the first timean insertion item of class n
is added to the current page. This is useful for such phenomena as a rule
separating thefootnotesfromthetext ofthepage.
\countn Each insertion item is a vertical list, so it has a certain height.
However,theeffectiveheight,theamountofinfluenceithason thetext height
of the page, may differ from this real height. The value of \countn is then
1000 times thefactor by which the height should be multiplied to obtain the
effectiveheight.
Considerthefollowingexamples:
Marginal notes do not affect thetext height, so the factor should be0.
Footnotes set in double column mode affect the page by half of their
height: thecount valueshouldby 500.
VictorEijkhout–T
E
XbyTopic
241
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
C#.NET PDF Library - Copy and Paste PDF Pages in C#.NET. Easy to C#.NET Sample Code: Copy and Paste PDF Pages Using C#.NET. C# programming
delete page from pdf file online; delete page from pdf online
VB.NET PDF Page Extract Library: copy, paste, cut PDF pages in vb.
C:\test1.pdf") Dim pdf2 As PDFDocument = New PDFDocument("C:\test2.pdf") Dim pageindexes = New Integer() {1, 2, 4} Dim pages = pdf.DuplicatePage(pageindexes
delete pdf pages acrobat; cut pages out of pdf online
Chapter29. Insertions
Conversely,footnotesset at page width underneath apagein double co-
lumn mode affect both columns, so – provided that the double column
modeisimplemented by applying \vsplitto adouble-height column –
thecount valueshould be 2000.
29.4 Movinginsertionitemsfromthecontributionslist
Themost complicated issuewith insertions is the algorithm that adds insertion items
to themain vertical list, and calculatesbreakpointsif necessary.
T
E
X never changes the \vsize, but it diminishes the \pagegoal by the (effective)
heights of the insertion items that will appear before a page break. Thus the output
routinewill receivea\box255that has height \pagegoal, not necessarily \vsize.
1.
When the first insertion of a certain class n occurs on the current page T
E
X
has to account for the quantity \skipn. This step is executed only if no
earlier insertion item of this class occurs on the vertical list – this includes
insertionsthat weresplit – but \boxnneed not beempty at this time.
If \boxnis not empty, its height plusdepth ismultiplied by \countn/1000
andtheresult issubtractedfrom\pagegoal. Then the\pagegoalisdiminis-
hed by thenatural component of\skipn. Any stretchand shrink of\skipn
areincorporated in \pagestretchand \pageshrink respectively.
2.
Ifthereis asplitinsertion of class non thepage– thiscaseand theprevious
step in the algorithm are mutually exclusive– the\floatingpenaltyis ad-
ded to \insertpenalties. A split insertion isan insertion item for which a
breakpoint has been calculated as it will not fit on thecurrent pagein its en-
tirety.Thusthe insertion currently under consideration will certainly not wind
up on thecurrent page.
3.
After the preliminary action of the two previous points T
E
X will place the
actual insertion item on the main vertical list, at the end of thecurrent con-
tributions. First it will check whethertheitem will fit without being split.
Therearetwo conditionsto be checked:
adding the insertion item (plus all previous insertions of that class) to
\boxnshould notlettheheightplusdepthofthatbox exceed\dimenn,
and
either the effective height of the insertion is negative, or \pagetotal
plus \pagedepth minus \pageshrinkplus the effectivesizeof the in-
sertion should belessthan \pagegoal.
If these conditions are satisfied, \pagegoal is diminished by the effective
size of the insertion item, that is, by the height plus depth, multiplied by
\countn/1000.
4.
Insertions that fail on one of the two conditions in the previous step of the
algorithm will be considered for splitting. T
E
Xwill calculate the size of the
maximal portion to besplit off the insertion item, such that
(a) adding thisportion togetherwith earlierinsertionsof thisclassto\boxn
will not let thesizeof thebox exceed \dimenn, and
242
VictorEijkhout–T
E
XbyTopic
VB.NET PDF copy, paste image library: copy, paste, cut PDF images
VB.NET PDF - Copy, Paste, Cut PDF Image in VB.NET. Copy, paste and cut PDF image while preview without adobe reader component installed.
delete pages pdf document; delete pdf page acrobat
C# PDF copy, paste image Library: copy, paste, cut PDF images in
C#.NET PDF SDK - Copy, Paste, Cut PDF Image in C#.NET. C#.NET Demo Code: Cut Image in PDF Page in C#.NET. PDF image cutting is similar to image deleting.
delete pages from pdf document; delete pages from pdf in reader
29.5. Insertions in theoutput routine
(b) theeffectivesizeofthisportion,addedto\pagetotalplus\pagedepth,
will not exceed \pagegoal. Note that \pageshrink is not taken into
account this time, asit was in theprevious step.
Once this maximal size to be split off has been determined, T
E
Xlocates the
least-cost breakpoint in thecurrentinsertionitemthatwill resultinaboxwith
a height that is equal to this maximal size. The penalty associated with this
breakpoint isadded to \insertpenalties, and \pagegoalisdiminished by
the effectiveheight plusdepth of thebox to besplit off theinsertion item.
29.5 Insertionsintheoutputroutine
When theoutput routinecomes into action – moreprecisely: when T
E
Xstarts proces-
sing thetokensinthe\output token list– all insertionsthatshould beplacedon the
current page have been put in their boxes, and it is the responsibility of the output
routineto put themsomewherein thebox that is going to be shipped out.
The plain T
E
X output routine handles top inserts and footnotes by
packaging thefollowing sequence:
\ifvoid\topins \else \unvbox\topins \fi
\pagebody
\ifvoid\footins \else \unvbox\footins \fi
Unboxing the insertion boxes makes theglue on various parts of the
pagestretch or shrink in auniform manner.
WithT
E
X3theinsertionmechanismhasbeenextendedslightly:theparameter\holdinginserts
can beused to specify that insertionsshould not yet beplaced in their boxes. Thisis
very useful if the output routine wants to recalculate the \vsize, or if the output
routineis called to do other intermediatecalculationsinstead ofejecting apage.
During the output routinetheparameter \insertpenaltiesholds thenumber of in-
sertionitemsthatarebeingheldoverforthenextpage.In theplainT
E
Xoutputroutine
thisisused after thelast page:
\def\dosupereject{\ifnum\insertpenalties>0
% something is being held over
\line{}\kern-\topskip\nobreak\vfill\supereject\fi}
29.6 PlainT
E
Xinsertions
Theplain T
E
Xformathasonly two insertion classes: thefootnotes and thetop inserts.
Themacro\pageinsertgeneratestopinsertsthat arestretched tobeexactly\vsize
high. The\midinsertmacro testswhether thevertical material specified by theuser
fitson thepage; if so,it isplaced there; if not, it is convertedto atop insert.
Footnotes are allowed to be split, but once one has been split no further footnotes
should appear on thecurrent page. This effect isattained by setting
\floatingpenalty=20000
VictorEijkhout–T
E
XbyTopic
243
VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
Page: Insert PDF Pages. |. Home ›› XDoc.PDF ›› VB.NET PDF: Insert PDF Page. Add and Insert Multiple PDF Pages to PDF Document Using VB.
cut pages from pdf online; delete pages from a pdf
C# PDF Page Insert Library: insert pages into PDF file in C#.net
doc2.Save(outPutFilePath); Add and Insert Multiple PDF Pages to PDF Document Using C#. Add and Insert Blank Pages to PDF File in C#.NET.
delete a page from a pdf reader; cut pages out of pdf file
Chapter29. Insertions
The \floatingpenalty is added to \insertpenalties if an insertion follows a
split insertion of thesame class. However, \floatingpenalty>10000 has infinite
cost, so T
E
Xwill takean earlier breakpoint for splittingoff thepagefromthevertical
list.
Top inserts essentially contain only avertical box which holds whatever the userspe-
cified. Thus such an insert cannot be split. However, the \endinsert macro puts a
\penalty100on top of thebox, so theinsertion can be split with an empty part be-
fore thesplit. The effect is that the whole insertion is carried over to thenext page.
As the \floatingpenalty for top inserts is zero, arbitrarily many of these inserts
can be moved forward until thereis apagewith sufficient space.
Furtherexamples of insertion macros can befound in [40].
244
VictorEijkhout–T
E
XbyTopic
How to C#: Basic SDK Concept of XDoc.PDF for .NET
example, you may easily create, load, combine, and split PDF file(s), and add, create, insert, delete, re-order, copy, paste, cut, rotate, and save PDF page(s
delete page from pdf document; delete page in pdf online
VB.NET PDF: Basic SDK Concept of XDoc.PDF
example, you may easily create, load, combine, and split PDF file(s), and add, create, insert, delete, re-order, copy, paste, cut, rotate, and save PDF page(s
delete page from pdf file; delete pages of pdf
Chapter30
FileInput andOutput
Thischaptertreatsthevariouswaysinwhich T
E
Xcan read from and writetoexternal
files.
\input Read aspecified file asT
E
Xinput.
\endinput Terminateinputting thecurrent fileafter thecurrent line.
\pausing Specify that T
E
Xshould pause aftereach linethat is read from afile.
\inputlineno Number of the current input line.
\write Write ageneral text to theterminal or to a file.
\read Read alinefromastreaminto acontrol sequence.
\newread \newwrite Macro forallocating anew input/output stream.
\openin \closein Open/closean input stream.
\openout \closeout Open/closean output stream.
\ifeof Test whethera filehas been fully read,or doesnot exist.
\immediate Prefix to have output operationsexecuted right away.
\escapechar Number of thecharacterthatis used when control sequencesare being
converted into character tokens. IniT
E
Xdefault: 92.
\newlinechar Numberofthecharacterthattriggersanewlinein\writestatements.
30.1 Includingfiles:\inputand\endinput
Large documents can besegmented in T
E
Xby putting partsin separatefiles, and loa-
ding thesewith \input intothemasterfile. Theexact syntaxforfilenamesisimple-
mentation dependent; most of the timea .texfileextension isassumed if no explicit
extension is given. File names can be delimited with a space or with \relax. The
\input command is expandable.
If T
E
Xencounters in an input file the\endinputstatement, it acts asif thefile ends
after the line on which the statement occurs. Any statements on the same line as
\endinput arestill executed. The\endinputstatement isexpandable.
245
Chapter30. File Input and Output
30.2 FileI/O
T
E
Xsupportsinputandoutputstreamsforreadingandwriting filesonelineat atime.
30.2.1 Openingandclosingstreams
T
E
Xsupports up to 16 simultaneousinput and 16 output streams. Theplain T
E
Xma-
cros \newread and \newwrite give the number of an unused stream. This number
is assigned by a \chardef command. Input streams are completely independent of
output streams.
Input streamsareopened by
\openin4-bit numberequalsfilename
and closed by
\closein4-bit number
Output streamsare opened by
\openout4-bit numberequalsfilename
and closed by
\closeout4-bit number
If an output file does not yet exist, it is created by \openout; if it did exist, an
\openoutwill causeit to beoverwritten.
The output operations \openout, \closeout, and \write can all three be prefixed
by \immediate; see below.
30.2.2 Inputwith\read
In addition to the \input command, which reads a whole file, T
E
X has the \read
operation, which reads oneline from afile(or from the user terminal).Thesyntax of
theread command is
\readnumbertocontrol sequence
Theeffect of this statement is that oneinput lineis read from thedesignated stream,
and thecontrol sequenceisdefined asamacrowithout parameters, havingthatlineas
replacement text.
If theinput line isnot balanced with respect to braces, T
E
Xwill read more than one
line,continuing for aslongasisnecessary toget abalanced tokenlist. T
E
Ximplicitly
appends an empty lineto each input stream, so the last \read operation on astream
will always yield asingle\partoken.
Read operations from any stream outsidetherange 0–15 – or streams not associated
with an open file,oron which thefileendhasbeen reached– read from theterminal.
If the stream number is positive the user is prompted with the name of the control
sequencebeing defined by the\read statement.
\read16 to \data
displaysa prompt
246
VictorEijkhout–T
E
XbyTopic
30.3. Whatsits
\data=
and typing ‘my name’ in response makes the read statement equiva-
lent to
\def\data{my name }
Thespaceat theendoftheinput derivesfromthelineend;toprevent
this onecould write
{\endlinechar=-1 \global\read16 to \data}
30.2.3 Outputwith\write
T
E
X’s \writecommand
\writenumbergeneral text
writesa balanced token list to afile which has been opened by \openout, tothelog
file, or to the terminal.
Writeoperations to astream outside 0–15– or to astream that isnot associatedwith
an open file – go to the log file; if the stream number is positive they go to the
terminal aswell asto thelog file.
Thetoken list argument of\write, defined as
general text −→ filler{balanced textright brace
can havean implicitopeningbrace.Thisargument isexpandedas if it weretherepla-
cement text of an \edef, so, for instance, any macros and conditionals appearing are
expanded. No commands areexecuted, however. This expansion occursat thetimeof
shipping out; see below. Until that timethe argument token list isstored in a whatsit
item on thecurrent list. Seefurther Chapter 12 for a discussion of expansion during
writing.
A control sequence output by \write (or \message) is represented with a trailing
space, and using character number\escapecharfor theescapecharacter. TheIniT
E
X
default for this is 92, thecode for thebackslash. Thetrailing spacecan beprevented
by prefixing thecontrol sequencewith \string.
30.3 Whatsits
Thereisan essentialdifferencein executionbetweeninput and output:operationscon-
cerning output (\openout, \closeout, \write) are not executed immediately; in-
stead, they are saved until the box in which they appear is shipped out to the dvi
file.
Writesandtheothertwo output operationsareplaced in ‘whatsit’ itemson whichever
list is currentlybeing built.Theactual operation occurswhen thepart ofthepagethat
has theitem isshipped out to the dvifile. This delayed output is madenecessary by
T
E
X’sasynchronous output routinebehaviour.Seeaworked-outexampleon page134.
An \immediate\write– oranyother\immediateoutput operation –isexecuted on
thespot, and doesnot place awhatsit itemon the current list.
VictorEijkhout–T
E
XbyTopic
247
Chapter30. File Input and Output
Theargument of a\specialcommand (seepage 262)isalso placed in awhatsit.
Whatsit items in leader boxesareignored.
30.4 Assortedremarks
30.4.1 Inspectinginput
T
E
X records the current line number in thecurrent input file in the internal integer
parameter\inputlineno(in T
E
X3).
If theparameter \pausingis positive, T
E
Xshowsevery line that is input on theter-
minal screen, and gives the user the opportunity to insert commands. These can for
instancebe\show commands. Inserted commandsaretreated as if they were directly
in thesourcefile: it is for instancenot necessaryto prefix themwith ‘i’,as would be
necessary when T
E
Xpauses for an error.
30.4.2 Testingforexistenceoffiles
T
E
X is not the friendliest of systems when you ask it to input a non-existing file.
Therefore thefollowing sequenceof commandscan be used to prevent trouble:
\newread\instream \openin\instream= fname.tex
\ifeof\instream \message{File ’fname’ does not exist!}
\else \closein\instream \input fname.tex
\fi
Here an input stream is opened with the given file name. The end-of-file test is also
trueif an input stream does not correspond to a physical file, so if thisconditional is
not true, thefileexists and an \inputcommand can safely be given.
30.4.3 Timingproblems
The synchronization between write operations on the one hand, and opening/closing
operations of files on the other hand, can be a crucial point. Auxiliary files, such as
are used by various formats to implement cross-references, are a good illustration of
this.
Supposethatduring arunofT
E
Xtheauxiliary fileiswritten,andattheendoftherun
it has to beinput again for avariety of purposes (such as seeing whether references
have changed). An \input command is executed right away, so the file must have
been closed with an \immediate\closeout. However, now it becomes possible that
the fileis closed beforeall writesto it havebeen performed. Thefollowing sequence
remediesthis:
\par\vfil\penalty -10000 \immediate\closeout\auxfile
Thefirst threecommandsactivatetheoutput routineinorderto closeoffthelastpage,
so all writeswill indeed havebeenperformed beforethefileisclosed.
248
VictorEijkhout–T
E
XbyTopic
30.4. Assorted remarks
30.4.4 \messageversus\immediate\write16
Messages to theuser can begiven using \messagegeneral text, which writes to the
terminal. Messages are appended to one another; the line is wrapped when the line
length (aT
E
Xcompile-time constant) has been reached. In T
E
X version2, amaximum
of 1000 characters is written per message; this is not a compile-timeconstant, but is
hard-wired into the T
E
Xprogram.
Each messagegiven with\immediate\writestartson anew line;theusercan force
a new line in the message by including the character with number \newlinechar.
Thisparameter also worksin \message.
30.4.5 Writeinsideaverticalbox
Since a write operation winds up on the vertical list in a whatsit, issuing one at the
start of a\vtopwill probably influencetheheight of that box (seeChapter 5). As an
example,
have the \vtop{\write\terminal{Hello!}\hbox{more text}}
dangling from
will have the
moretext
dangling from thebaseline (and when this book is T
E
Xed the
message‘Hello!’ appears on thescreen).
30.4.6 Expansionandspacesin\writeand\message
Both \writeand \messageexpand their argument asif it werethereplacement text
of an \edef.Therefore
\def\a{b}\message{\a}
will writeout ‘b’.
Unexpandablecontrol sequencesaredisplayedwith atrailing space(and prefixedwith
the\escapechar):
\message{\hbox\vbox!}
will writeout ‘\hbox \vbox !’. Undefined control sequencesgivean error here.
Expandable control sequences can bewritten out with somecare:
\message{\noexpand\ifx}
\message{\string\ifx}
{\let\ifx\relax \message{\ifx}}
all writeout ‘\ifx’.
Note,however,thatspacesafter expandablecontrol sequencesareremovedintheinput
processor, which goes into state S aftera control sequence. Therefore
\def\a{b}\def\c{d}
\message{\a \c}
writesout ‘bd’. Inserting aspace can bedoneas follows:
VictorEijkhout–T
E
XbyTopic
249
Documents you may be interested
Documents you may be interested