1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
|
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \normalbaselineskip {Parameter settings <2021-04-13>} % preloaded in format
\_doc -----------------------------
\secc Primitive registers
The primitive registers with the same default value as in plain \TeX/ follow:
\_cod -----------------------------
\_parindent=20pt % indentation of paragraphs
\_pretolerance=100 % parameters used in paragraph breaking algorithm
\_tolerance=200
\_hbadness=1000
\_vbadness=1000
\_doublehyphendemerits=10000
\_finalhyphendemerits=5000
\_adjdemerits=10000
\_uchyph=1
\_defaulthyphenchar=`\-
\_defaultskewchar=-1
\_hfuzz=0.1pt
\_vfuzz=0.1pt
\_overfullrule=5pt
\_linepenalty=10 % penalty between lines inside the paragraph
\_hyphenpenalty=50 % when a word is bro-ken
\_exhyphenpenalty=50 % when the hyphenmark is used explicitly
\_binoppenalty=700 % between binary operators in math
\_relpenalty=500 % between relations in math
\_brokenpenalty=100 % after lines if they end by a broken word.
\_displaywidowpenalty=50 % before last line of paragraph if display math follows
\_predisplaypenalty=10000 % above display math
\_postdisplaypenalty=0 % below display math
\_delimiterfactor=901 % parameter for scaling delimiters
\_delimitershortfall=5pt
\_nulldelimiterspace=1.2pt
%\_scriptspace=0.5pt % \Umathspaceafterscript used in \_setmathdimens, \_setunimathdimens instead
\_maxdepth=4pt
\_splitmaxdepth=\_maxdimen
\_boxmaxdepth=\_maxdimen
\_parskip=0pt plus 1pt
\_abovedisplayskip=12pt plus 3pt minus 9pt
\_abovedisplayshortskip=0pt plus 3pt
\_belowdisplayskip=12pt plus 3pt minus 9pt
\_belowdisplayshortskip=7pt plus 3pt minus 4pt
\_parfillskip=0pt plus 1fil
\_thinmuskip=3mu
\_medmuskip=4mu plus 2mu minus 4mu
\_thickmuskip=5mu plus 5mu
\_doc -----------------------------
Note that `\topskip` and `\splittopskip` are changed when first
`\typosize` sets the main values (default font size and default
`\baselineskip`).
\_cod -----------------------------
\_topskip=10pt % top edge of page-box to first baseline distance
\_splittopskip=10pt
\_doc -----------------------------
\secc Plain \TeX/ registers
Allocate registers that are used just like in plain \TeX/.\nl
\`\smallskipamount`, \`\medskipamount`, \`\bigskipamount`,
\`\normalbaselineskip`, \`\normallineskip`,\nl \`\normallineskiplimit`,
\`\jot`, \`\interdisplaylinepenalty`, \`\interfootnotelinepenalty`.
\_cod -----------------------------
% We also define special registers that function like parameters:
\_newskip\_smallskipamount \_smallskipamount=3pt plus 1pt minus 1pt
\_newskip\_medskipamount \_medskipamount=6pt plus 2pt minus 2pt
\_newskip\_bigskipamount \_bigskipamount=12pt plus 4pt minus 4pt
\_newskip\_normalbaselineskip \_normalbaselineskip=12pt
\_newskip\_normallineskip \_normallineskip=1pt
\_newdimen\_normallineskiplimit \_normallineskiplimit=0pt
\_newdimen\_jot \_jot=3pt
\_newcount\_interdisplaylinepenalty \_interdisplaylinepenalty=100
\_newcount\_interfootnotelinepenalty \_interfootnotelinepenalty=100
\_public \smallskipamount \medskipamount \bigskipamount
\normalbaselineskip \normallineskip \normallineskiplimit
\jot \interdisplaylinepenalty \interfootnotelinepenalty ;
\_doc -----------------------------
Plain \TeX/ macros for setting parameters.
\`\normalbaselines`, \`\frenchspacing`, \`\nonfrenchspacing`.
\_cod -----------------------------
\_def\_normalbaselines{\_lineskip=\_normallineskip
\_baselineskip=\_normalbaselineskip \_lineskiplimit=\_normallineskiplimit}
\_def\_frenchspacing{\_sfcode`\.=1000 \_sfcode`\?=1000 \_sfcode`\!=1000
\_sfcode`\:=1000 \_sfcode`\;=1000 \_sfcode`\,=1000 }
\_def\_nonfrenchspacing{\_sfcode`\.=3000 \_sfcode`\?=3000 \_sfcode`\!=3000
\_sfcode`\:=2000 \_sfcode`\;=1500 \_sfcode`\,=1250 }
\_public \normalbaselines \frenchspacing \nonfrenchspacing ;
\_doc -----------------------------
\secc Different settings than in plain \TeX/
Default \"baseline setting" is for 10\,pt fonts (like in plain \TeX/).
But `\typosize` and `\typoscale` macros re-declare it if another font size is used.
The \^`\nonfrenchspacing` is not set by default because
the author of \OpTeX/ is living in Europe.
If you set `\enlang` hyphenation patterns then \^`\nonfrenchspacing`
is set.
\_cod -----------------------------
\_normalbaselines % baseline setting, 10 pt font size
\_doc -----------------------------
The following primitive registers have different values than in plain \TeX/.
We prohibit orphans, set more information for tracing boxes, set page origin
to the upper left corner of the paper (no at 1\,in, 1\,in coordinates)
and set default page dimensions as A4, not letter.
\_cod -----------------------------
\_emergencystretch=20pt % we want to use third pass of paragraph building algorithm
% we don't need compatibility with old documents
\_clubpenalty=10000 % after first line of paragraph
\_widowpenalty=10000 % before last line of paragraph
\_showboxbreadth=150 % for tracing boxes
\_showboxdepth=7
\_errorcontextlines=15
\_tracinglostchars=2 % missing character warnings on terminal too
\_outputmode=1 % PDF output
\_pdfvorigin=0pt % origin is exactly at upper left corner
\_pdfhorigin=0pt
\_hoffset=25mm % margins are 2.5cm, no 1in
\_voffset=25mm
\_hsize=160mm % 210mm (from A4 size) - 2*25mm (default margins)
\_vsize=244mm % 297mm (from A4 size) - 2*25mm (default margins) -3mm baseline correction
\_pagewidth=210 true mm
\_pageheight=297 true mm
\_doc -----------------------------
If you insist on plain \TeX/ values of these parameters then you can
call the `\plaintexsetting` macro.
\_cod -----------------------------
\_def\_plaintexsetting{%
\_emergencystretch=0pt
\_clubpenalty=150
\_widowpenalty=150
\_pdfvorigin=1in
\_pdfhorigin=1in
\_hoffset=0pt
\_voffset=0pt
\_hsize=6.5in
\_vsize=8.9in
\_pagewidth=8.5 true in
\_pageheight=11 true in
\_nonfrenchspacing
}
\_public \plaintexsetting ;
\_doc -----------------------------
\secc[oparams] \OpTeX/ parameters
The main principle of how to configure \OpTeX/ is not to use only parameters.
A designer can copy macros from \OpTeX/ and re-define them as required.
This is a reason why we don't implement dozens of parameters,
but we keep \OpTeX/ macros relatively simple. Example: do you want
another design of section titles? Copy macros `\_printsec` and
`\_printsecc` from `sections.opm` file to your macro file and re-define them.
Notice for OPmac users: there is an important difference: all "string-like"
parameters are token lists in \OpTeX/ (OPmac uses macros for them). The reason of
this difference: if a user sets parameter by unprefixed (public) control sequence,
an \OpTeX/ macro can read {\em the same data} using a prefixed (private) control sequence.
The \`\picdir` tokens list can include a directory where image files
(loaded by `\inspic`) are saved. Empty `\picdir` (default value) means
that image files are in the current directory (or somewhere in the \TeX/
system where \LuaTeX/ can find them). If you set a non-empty value to
the `\picdir`, then it must end by `/` character, for example
`\picdir={img/}` means that there exists a directory `img` in your
current directory and the image files are stored here.
\_cod -----------------------------
\_newtoks\_picdir
\_public \picdir ;
\_doc -----------------------------
You can control the dimensions of included images by
the parameters \`\picwidth` (which is equivalent to \`\picw`) and
\`\picheight`. By default these parameters are set to zero: the native
dimension of the image is used. If only `\picwidth` has a nonzero value,
then this is the width of the image (height is calculated automatically in
order to respect the aspect of the image). If only `\picheight` has
a nonzero value then the height is given, the width is calculated. If both
parameters are non-zero, the height and width are given and the aspect
ratio of the image is (probably) broken. We recommend setting these
parameters locally in the group where \^`\inspic` is used in order to not
influence the dimensions of other images. But there exist many
situations you need to put the same dimensions to more images,
so you can set this parameter only once before more \^`\inspic` macros.\nl
More parameters accepted by `\pdfximage` primitive can be set in the
\`\picparams` tokens list. For example `\picparams={page3}`
selects page 3 from included PDF file.
\_cod -----------------------------
\_newdimen\_picwidth \_picwidth=0pt \_let\picw=\_picwidth
\_newdimen\_picheight \_picheight=0pt
\_newtoks\_picparams
\_public \picwidth \picheight \picparams ;
\_doc -----------------------------
\`\kvdict` is dictionary name when \~`\readkv`, \~`\kvx`, \~`\kv`, and \~`\iskv` are
processed. The default is empty.
\_cod -----------------------------
\_newtoks \_kvdict
\_public \kvdict ;
\_doc -----------------------------
The \`\everytt` is the token list used in
\^`\begtt`...\^`\endtt` environment and
in the verbatim group opened by \^`\verbinput` macro. You can include a
code which is processed inside the group after basic settings were done
On the other hand, it is processed before the scanner of verbatim text is started.
Your macros should influence scanner (catcode settings) or printing
process of the verbatim code or both.
The code from the line immediately after \^`\begtt` is processed after
the \^`\everytt`. This code should overwrite \^`\everytt` settings. Use
\^`\everytt` for all verbatim environments in your document and use a code
after \^`\begtt` locally only for this environment.
The \`\everyintt` token list does similar work
but acts in the in-line verbatim
text processed by a pair of \^`\verbchar` characters or by \^`\code``{<text>}`.
You can set `\everyintt={\Red}` for example if you want in-line verbatim
in red color.
\_cod -----------------------------
\_newtoks\_everytt
\_newtoks\_everyintt
\_public \everytt \everyintt ;
\_doc -----------------------------
The \`\ttline` is used
in \^`\begtt`...\^`\endtt` environment or in the code
printed by \^`\verbinput`. If `\ttline` is positive or zero, then the
verbatim code has numbered lines from `\ttline+1`. The `\ttline`
register is re-set to a new value after a code piece is printed, so next
code pieces have numbered lines continuously. If `\ttline=-1`, then
\^`\begtt`...\^`\endtt` lines are without numbers and \^`\verbinput` lines
show the line numbers of inputted file. If `\ttline`\code{<-1}
then no line numbers are printed.
\_cod -----------------------------
\_newcount\_ttline \_ttline=-1 % last line number in \begtt...\endtt
\_public \ttline ;
\_doc -----------------------------
The \`\ttindent` gives default indentation
of verbatim lines printed by \^`\begtt`...\^`\endtt` pair or by
\^`\verbinput`.
\nl
The \`\ttshift` gives the amount of shift of all verbatim lines to the right.
Despite the \^`\ttindent`, it does not shift the line numbers, only
the text.
\nl
The \`\iindent` gives default indentations used in the table of contents,
captions, lists, bib references,
\nl
It is strongly recommended to re-set this value if you set `\parindent`
to another value than plain \TeX/ default 20pt. A well-typeset
document should have the same dimension for all indentations, so
you should say `\ttindent=\parindent` and `\iindent=\parindent`.
\_cod -----------------------------
\_newdimen\_ttindent \_ttindent=\_parindent % indentation in verbatim
\_newdimen\_ttshift
\_newdimen\_iindent \_iindent=\_parindent
\_public \ttindent \ttshift \iindent ;
\_doc -----------------------------
The tabulator `^^I` has its category code like space: it behaves as a
space in normal text. This is a common plain \TeX/ setting.
But in the multiline verbatim environment it
is active and expands to the `\hskip<dimen>` where `<dimen>`
is the width of \`\tabspaces` spaces.
Default `\tabspaces=3` means
that tabulator behaves like three spaces in multiline verbatim.
\_cod -----------------------------
\_newcount \_tabspaces \_tabspaces=3
\_public \tabspaces ;
\_doc -----------------------------
\`\hicolors` can include a list of \~`\hicolor` commands with
re-declarations of default colors
mentioned in the `\_hicolors<name>` from `hisyntax-<name>.opm` file.
The user can give his/her preferences about colors for
syntax highlighting by this tokens list.
\_cod -----------------------------
\_newtoks\_hicolors
\_public \hicolors ;
\_doc -----------------------------
The default item mark used between \^`\begitems` and \^`\enditems` is the bullet.
The \`\defaultitem` tokens list declares this default item mark.
\nl
The \`\everyitem` tokens list is applied in vertical mode
at the start of each item.
\nl
The \`\everylist` tokens list is applied after the group is opened by \^`\begitems`
\nl
The \`\ilevel` keeps the value of the current nesting level of the items list.
\nl
The \`\olistskipamount` is vertical skip above and below the items list
if `\ilevel=1`.\nl
The \`\ilistskipamount` is vertical skip above and below the items list
if `\ilevel>1`.\nl
The \`\itemskipamount` is vertical skip between list items, but not above the firts
and below the last.
\_cod -----------------------------
\_newtoks\_defaultitem \_defaultitem={$\_bullet$\_enspace}
\_newtoks\_everyitem
\_newtoks\_everylist
\_newcount \_ilevel
\_newskip\_olistskipamount \_olistskipamount=\_medskipamount
\_newskip\_ilistskipamount \_ilistskipamount=0pt plus.5\_smallskipamount
\_newskip\_itemskipamount \_itemskipamount=0pt
\_public \defaultitem \everyitem \everylist \ilevel
\olistskipamount \ilistskipamount \itemskipamount ;
\_let \listskipamount = \_olistskipamount % for backward compatibility
\_doc -----------------------------
The \^`\tit` macro includes `\vglue`\`\titskip` above the title of the document.
\_cod -----------------------------
\_newskip\_titskip \_titskip=40pt \_relax % \vglue above title printed by \tit
\_public \titskip ;
\_doc ----------------------------
The \^`\begmulti` and \^`\endmulti` pair creates more columns. The parameter
\`\colsep` declares the space between columns. If $n$ columns are specified
then we have $n-1$ `\colseps` and $n$ columns in total `\hsize`. This
gives the definite result of the width of the columns.
\_cod ----------------------------
\_newdimen\_colsep \_colsep=20pt % space between columns
\_public \colsep ;
\_doc -----------------------------
Each line in the Table of contents is printed in a group.
The \`\everytocline` tokens list is processed here before
the internal `\_tocl:<num>` macro which starts printing the line.
\_cod -----------------------------
\_newtoks \_everytocline
\_public \everytocline ;
\_doc -----------------------------
The \`\bibtexhook` tokens list is used inside the group when `\usebib` command is
processed after style file is loaded and before printing bib-entries.
You can re-define a behavior of the style file here or you can modify the
more declaration for printing (fonts, baselineskip, etc.) or you can
define specific macros used in your `.bib` file.\nl
The \`\biboptions` is used in the `iso690` bib-style for global options,
see section~\ref[isobib].\nl
The \`\bibpart` saves the name of bib-list if there are more bib-lists in
single document, see section~\ref[bib].
\_cod -----------------------------
\_newtoks\_bibtexhook
\_newtoks\_biboptions
\_newtoks\_bibpart
\_public \bibtexhook \biboptions \bibpart ;
\_doc -----------------------------
\`\everycapitonf` is used before printing caption in figures and
\`\everycapitont` is used before printing caption in tables.
\_cod -----------------------------
\_newtoks\_everycaptiont \_newtoks\_everycaptionf
\_public \everycaptiont \everycaptionf ;
\_doc -----------------------------
The \`\everyii` tokens list is used before `\noindent` for each
Index item when printing the Index.
\_cod -----------------------------
\_newtoks\_everyii
\_public \everyii ;
\_doc -----------------------------
The \`\everymnote` is used in the \^`\mnote` group before `\noindent` which
immediately precedes marginal note text.
\nl
The \`\mnotesize` is the horizontal size of the marginal notes.
\nl
The \`\mnoteindent` is horizontal space between body-text and marginal note.
\_cod -----------------------------
\_newtoks\_everymnote
\_newdimen\_mnotesize \_mnotesize=20mm % the width of the mnote paragraph
\_newdimen\_mnoteindent \_mnoteindent=10pt % distance between mnote and text
\_public \everymnote \mnotesize \mnoteindent ;
\_doc -----------------------------
The \^`\table` parameters follow. The \`\thistable` tokens list
register should be used for giving an exception for only one `\table`
which follows. It should change locally other parameters of the `\table`.
It is reset to an empty list after the table is printed.
\nl
The \`\everytable` tokens list register is applied in every table.
There is another difference between these two registers.
The `\thistable` is used first, then strut and baselineskip settings are
done, then `\everytable` is applied and then the table is printed.
\nl
\`\tabstrut` configures the height and depth of lines in the table.
You can declare `\tabstrut={}`, then normal baselineskip is used in the
table. This can be used when you don't use horizontal nor vertical
lines in tables.
\nl
\`\tabiteml` is applied before each item,
\`\tabitemr` is applied after each item of the table.
\nl
\`\tablinespace` is additional vertical space between horizontal rules
and the lines of the table.
\nl
\`\hhkern` gives the space between horizontal lines if they are doubled and
\`\vvkern` gives the space between such vertical lines.
\nl
\`\tabskipl` is `\tabskip` used before first column,
\`\tabskipr` is `\tabskip` used after the last column.
\nl
\`\tsize` is virtual unit of the width of paragraph-like table items when
`\table pxto<size>` is used.
\_cod -----------------------------
\_newtoks\_everytable \_newtoks\_thistable
\_newtoks\_tabiteml \_newtoks\_tabitemr \_newtoks\_tabstrut
\_newdimen\_tablinespace \_newdimen\_vvkern \_newdimen\_hhkern \_newdimen\_tsize
\_newskip\_tabskipl \_newskip\_tabskipr
\_everytable={} % code used after settings in \vbox before table processing
\_thistable={} % code used when \vbox starts, is is removed after using it
\_tabstrut={\_strut}
\_tabiteml={\_enspace} % left material in each column
\_tabitemr={\_enspace} % right material in each column
\_tablinespace=2pt % additional vertical space before/after horizontal rules
\_vvkern=1pt % space between double vertical line and used in \frame
\_hhkern=1pt % space between double horizontal line and used in \frame
\_tabskipl=0pt\_relax % \tabskip used before first column
\_tabskipr=0pt\_relax % \tabskip used after the last column
\_public \everytable \thistable \tabiteml \tabitemr \tabstrut \tablinespace
\vvkern \hhkern \tsize \tabskipl \tabskipr ;
\_doc -----------------------------
The \^`\eqalign` macro can be configured by \`\eqlines` and \`\eqstyle`
tokens lists. The default values are set in order these macro behaves
like in Plain \TeX. The \`\eqspace` is horizontal space put
between equation systems if more columns in \^`\eqalign` are used.
\_cod -----------------------------
\_newtoks \_eqlines \_eqlines={\_openup\_jot}
\_newtoks \_eqstyle \_eqstyle={\_strut\_displaystyle}
\_newdimen \_eqspace \_eqspace=20pt
\_public \eqlines \eqstyle \eqspace ;
\_doc -----------------------------
\`\lmfil` is \"left matrix filler" (for `\matrix` columns). The default
value does centering because the right matrix filler is directly set to `\hfil`.
\_cod -----------------------------
\_newtoks \_lmfil \_lmfil={\_hfil}
\_public \lmfil ;
\_doc -----------------------------
The output routine uses token lists \`\headline` and \`\footline` in the
same sense as plain \TeX/ does. If they are non-empty then `\hfil` or `\hss`
must be here because they are used inside `\hbox to\hsize`.
Assume that page-body text can be typeset in different sizes and
different fonts and we don't know in what font context the output routine
is invoked. So, it is strongly recommended to declare fixed variants of
fonts at the beginning of your document. For example `\fontdef\rmfixed{\rm}`,
`\fontdef\itfixed{\it}`. Then use them in headline and footline:
\begtt
\headline={\itfixed Text of headline, section: \firstmark \hss}
\footline={\rmfixed \ifodd\pageno \hfill\fi \folio \hfil}
\endtt
\_cod -----------------------------
\_newtoks\_headline \_headline={}
\_newtoks\_footline \_footline={\_hss\_rmfixed \_folio \_hss}
\_public \headline \footline ;
\_doc -----------------------------
The distance between the `\headline` and the top of the page text
is controlled by the \`\headlinedist` register.
The distance between the bottom of
page-text and `\footline` is \`\footlinedist`.
More precisely: baseline of
headline and baseline of the first line in page-text have distance
`\headlinedist+\topskip`. The baseline of the last line in page-text and
the baseline of the footline have distance `\footlinedist`.
Default values are inspired by plain \TeX/.
\_cod -----------------------------
\_newdimen \_headlinedist \_headlinedist=14pt
\_newdimen \_footlinedist \_footlinedist=24pt
\_public \headlinedist \footlinedist ;
\_doc -----------------------------
The \`\pgbottomskip` is inserted to the page bottom
in the output routine. You can set less tolerance here than
`\raggedbotom` does. By default, no tolerance is given.
\_cod -----------------------------
\_newskip \_pgbottomskip \_pgbottomskip=0pt \_relax
\_public \pgbottomskip ;
\_doc -----------------------------
The \`\nextpages` tokens list can include settings which will be used at
next pages. It is processed at the end of output routine with
`\globaldefs=1` prefix. The `\nextpages` is reset to empty after
processing. Example of usage:
\begtt
\headline={} \nexptages={\headline={\rmfixed \firstmark \hfil}}
\endtt
This example sets current page with empty headline, but next pages have
non-empty headlines.
\_cod -----------------------------
\_newtoks \_nextpages
\_public \nextpages ;
\_doc -----------------------------
The \`\pgbackground` token list can include macros which generate a
vertical list. It is used as page background. The top-left corner of such
`\vbox` is at the top-left corner of the paper. Example creates the
background of all pages yellow:
\begtt
\pgbackground={\Yellow \hrule height 0pt depth\pdfpageheight width\pdfpagewidth}
\endtt
\_cod -----------------------------
\_newtoks \_pgbackground \_pgbackground={} % for page background
\_public \pgbackground ;
\_doc -----------------------------
The parameters used in \^`\inoval` and \^`\incircle` macros
can be re-set by \`\ovalparams`, \`\circleparams` tokens lists.
The default values (documented in the user manual) are set in the macros.
\_cod -----------------------------
\_newtoks \_ovalparams
\_newtoks \_circleparams
%\_ovalparams={\_roundness=2pt \_fcolor=\Yellow \_lcolor=\Red \_lwidth=.5bp
% \_shadow=N \_overlapmargins=N \_hhkern=0pt \_vvkern=0pt }
%\_circleparams={\_ratio=1 \_fcolor=\Yellow \_lcolor=\Red \_lwidth=.5bp
% \_shadow=N \_overlapmargins=N \_hhkern=3pt \_vvkern=3pt}
\_newdimen \_roundness \_roundness=5mm % used in \clippingoval macro
\_public \ovalparams \circleparams \roundness ;
\_doc -----------------------------
\OpTeX/ defines \"Standard \OpTeX/ markup language"
which lists selected commands from chapter~1 and gives their behavior when a
converter from \OpTeX/ document to HTML or Markdown or \LaTeX/ is used.
The structure-oriented commands are selected here, but the commands which
declare typographical appearance (page layout, dimensions, selected font
family) are omitted. More information for such a converter should be
given in \`\cnvinfo``{<data>}`.
\OpTeX/ simply ignores this but the converter can read its configuration
from here. For example, a user can write:
\begtt \catcode`\<=13
\cnvinfo {type=html, <cnv-to-html-data>}
\cnvinfo {type=markdown, <cnv-to-markdown-data>}
\endtt
and the document can be processed by \OpTeX/ to create PDF, or by a
converter to create HTML, or by another converter to create Markdown.
\_cod -----------------------------
\_let\cnvinfo=\_ignoreit
\_endcode %----------------------------------------------------
The behavior of document processing by \OpTeX/ is
controlled by {\em parameters}. The parameters are
\begitems
* primitive registers used in build-in algorithms of \TeX/,
* registers declared and used by \OpTeX/ macros.
\enditems
Both groups of registers have their type: number, dimension, skip, token
list.
The registers are represented by their names (control sequences). If the user
re-defines this control sequence then the appropriate register exists
steadily and build-in algorithms are using it without change. But user
cannot access its value in this case. \OpTeX/ declares two control sequences
for each register: prefixed (private) and unprefixed (public). \OpTeX/ macros use only
prefixed variants of control sequences. The user should use the unprefixed variant
with the same meaning and set or read the values of registers using the
unprefixed variant. If the user re-defines the unprefixed control sequence of
a register then \OpTeX/ macros still work without change.
%There are only a few parameters declared by \OpTeX/ macros. All of them
%are listed in this section. This is the desired feature of the \OpTeX/.
%If you want to do more
%changes which cannot be controlled by parameters listed here then you
%can copy the appropriate \OpTeX/ macro to your macro file and you
%can completely re-define it. The typical examples are `\_printsomething`
%macros which declare the design of the document.
\_endinput
History:
2021-04-13 ... \bibpart added
2021-04-07 ... \biboptions added, bug from iso690 fixed
2020-04-04 ... \tabspaces added
2020-04-03 ... \hicolors added
|