summaryrefslogtreecommitdiff
path: root/macros/optex/demo/op-slides.tex
blob: d1424b0d91d0a4bce9cf786fb8f5d44182f3fec2 (plain)
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
%% This is part of the OpTeX project, see http://petr.olsak.net/optex

\slides   % OpTeX slides style activated

\catcode`<=13                 % special printing of <text>
\def<#1>{\hbox{$\langle$\it#1\/$\rangle$}}
\everyintt={\catcode`\<=13}

\hyperlinks\Blue\Blue            % hyperlinks are used in the title page
\backgroundpic{op-slides-bg.png} % background picture

\verbchar`                    % inline verbatim
\enquotes                     % English quotes \"..."

\slideshow %------------------------------------------------------------


\tit \OpTeX/ slides

\subtit Petr Olšák\nl petr@olsak.net

\subtit\rm \url{http://petr.olsak.net/optex}

\pg; %------------------------------------------------------------------

\sec Basics

* The the simple document looks like:

\begtt
\slides       % style initialized
%\wideformat  % 16:9
\slideshow    % partially uncovering ideas

\sec First slide
text
\pg;

\sec Second slide
text
\pg.
\endtt

* If `\slideshow` is missing or commented out then
  \"partially uncovering ideas" (see later) are deactivated. It is useful
  for printing.
* The `\slideshow` must be the last command in the declaration part of the
  document.
* By default, the slides have A5 landscape format.
  You can declare `\wideformat`. Then the height is the same
  but width is 263\,mm, i.\,e.~the ratio width:height is 16:9.

\pg; %------------------------------------------------------------------

\sec Title slide

* Title of the document (used at the first slide) is created
  by `\tit Title` (terminated by end of line).
* The `\subtit Author name etc.`\ (terminated by end of line)
  can be used after `\tit` at the first slide.
* You can use `\nl` for a new line in paragraphs or titles.

\sec Default design

* The paragraph texts are ragged right.
* Titles, subtitles, and section titles are centered.
* The `\sec` and `\secc` are printed without numbers.
* No paragraph indentation, a little vertical space between paragraphs.
* The Heros font family (aka Helvetica) is initialized as default.\nl
  Sans-serif FiraMath font for math typesetting is used.\nl
  If `\fontfam[<famname>]` precedes `\slides` then it rewrites default.
* The items in lists are started by a blue square (`\type X` and `\type x` ).

\pg; %------------------------------------------------------------------

\sec One slide (one page)

* Top-level item list is activated by default. The asterisk `*` opens
  new item at the top-level list.
* Nested items lists (second and more level) should be created in
  the `\begitems`\dots`\enditems` environments.
* Each slide (page) must be terminated by `\pg;` command.
* The last slide must be terminated by `\pg.` command or by `\bye`.

\begtt
\sec My ideas

* First idea
* Second idea
  \begitems
  * First sub-idea
  * Second sub-idea
  \enditems
* Final idea
\endtt

* Note: each page is processed in a group, so: put your own definitions
  (if~exist) before `\slideshow` or use `\global` assignment.

\pg; %------------------------------------------------------------------

\sec Partially uncovering ideas

* The control sequence `\pg` must be followed by:\pg+
\begitems
* the character `;` -- normal next page,\pg+
* the character `.` -- the end of the document,\pg+
* the character `+` -- next page keeps the same text
  and a next text is added (usable for partially uncovering of ideas).\pg+
\enditems

* Summary:
\begtt
\pg;    ... next page
\pg.    ... the end of the document
\pg+    ... uncover next text on the same page
\endtt
\pg+

* When `\slideshow` is not declared then `\pg+` is deactivated.\pg+
* The `\pg+` creates a new \"virtual page", so the current paragraph is
  terminated.

\pg; %------------------------------------------------------------------

\sec Example with partially uncovering ideas

The previous page was created by:

\begtt
\sec Partially uncovering ideas

* The control sequence `\pg` must be followed by:\pg+

\begitems
* the character `.` -- normal next page,\pg+
* the character `;` -- the end of the document,\pg+
* the character `+` -- next ... \pg+
\enditems

* Summary
...
* When `\slideshow` is not declared
  then `\pg+` is deactivated.\pg+
* The `\pg+` creates a new \"virtual page",
  so the current paragraph is terminated.
\pg;
\endtt

\pg; %------------------------------------------------------------------

\sec Notes to `\slideshow`

* When `\slideshow` is active then references created by `\ref`
  point to the first uncovering \"virtual" page where the destination is
  and references created by `\pgref` point to the last \"virtual" page.
* If the text overfulls the page (slide) then it follows to the next page without
  saying explicitly `\pg;`. But `\slideshow` cannot work in this case.\pg+
* If `\slideshow` then each part of page between two `\pg`'s or between
  `\slideshow` and the first `\pg` is processed in a local group.
* If not `\slideshow` then the document is not separated to groups.
  This can create different results. So, you can put `\slideopen` command
  instead of `\slideshow`. Then local groups are opened exactly as when
  `\slideshow` is used but `\slideshow` is not activated. Example:

\begtt
\slides
\def\foo...{...} % global definitions.
%\slideshow
\slideopen       % opens group for first page.
... first page
\pg;             % closes group and opens group for second page.
... second page
\pg.             % closes group of the last page.
\endtt

\pg; %------------------------------------------------------------------

\sec More about design

* You can use `\backgroundpic{<image-file>}` for putting an image to the background.
* You can re-declare `\footline` or re-define internal macros for design as
  you wish.
* The TeXGyre Heros font is used as default text font, the FiraMath is used
  for math.
* If you want to use another text font fmaily, use `\fontfam`
  {\em before} `\slides` command.
* If you want to use different math font, use
  `\loadmath{[font]}` before `\fontfam` (if used) and before `\slides`. For example:

\begtt
\loadmath{[Asana-Math]} % Math font: Asana
\fontfam[Termes]        % Text font: Termes
\slides
...
\endtt

* You can put the images or text wherever using `\putimege` or `\puttext`
  macros...

\pg; %------------------------------------------------------------------

\sec Putting images and texts wherever

* `\puttext <right> <up> {<text>}` puts a <text> to the desired place:
  It moves the current point <right> and <up>, puts the <text> and returns
  back, so the typesetting continues from previous position. The parameters
  <right> and <up> are dimensions. For example

\begtt
\puttext 0mm 50mm {\Red HELLO}
\endtt

  \puttext 0mm 50mm {\Red HELLO}
  prints red HELLO, as shown here.\pg+

* `\putpic <right> <up> <width> <height> {<image-file>}`
  puts the image with desired <width> and <height> at the position like
  `\puttext` puts the text.\pg+

  \putpic .8\hsize 20mm 30mm \nospec {op-ring.png}
* The ring above is the result of

\begtt
\putpic .8\hsize 20mm 30mm \nospec {op-ring.png}
\endtt
  %
  used at beginning of this paragraph.\pg+
* Use `\nospec` for <width> or <height> of the image if you don't want to specify both
  dimensions (because you don't want to change the image aspect ratio).

\pg; %------------------------------------------------------------------

\sec Limits of the \code{\\pg+} sequence

* The \code{\\pg+} sequence (partially uncovering ideas) cannot be used inside
  a~group.
* The exception is the nested environment `\begitems...\enditems`.
* The `\pg+` always finalizes the current paragraph.
  It is impossible to hide only a part of the horizontal mode.\pg+

\sec The \code{\\layers}\,...\code{\\endlayers} environment

If you really need something unsupported by `\pg+` then you can use

\begtt \catcode`\<=13
\layers <number>
<layered text>
\endlayers
\endtt

* The `\layers` opens <number> following pages with the same
  surrounding text. The counter `\layernum` is incemented from one to
  <number> . The <layered text> should use `\layernum` including
  conditions like `\ifnum\layernum` or `\ifcase\layernum`.
  See next page...

\pg; %------------------------------------------------------------------

\sec Example of \code{\\layers} environment

The `\slides` style provides a shortcut `\use` and a macro `\pshow` (means
partially show):

\begtt
\def\use#1#2{\ifnum\layernum#1\relax#2\fi}
\def\pshow#1{\use{=#1}\Red \use{<#1}\Transparent \ignorespaces}
\endtt
`\use{=<num>}{<something>}` does <something> only if `\layernum=<num>`.\kern-1em

The `{\pshow<num> <text>}` prints <text> in Red when current layer is equal
to <num> or it prints <text> normally when the current layer is greater than <num>.
The transparent (invisible) text is used in other cases.

The following dance:
\layers 3
{\pshow2 Second text.} {\pshow3 Third text.} {\pshow1 First text.}
\endlayers
\pg+

was generated by

\begtt
\layers 3
{\pshow2 Second text.} {\pshow3 Third text.} {\pshow1 First text.}
\endlayers
\endtt

\pg+
* The <layered text> is treated as a macro parameter. So, you cannot use verbatim
  nor `\sec` titles here. Maximal one `\layers` environment can be per one
  page (terminated by `\pg+` or `\pg;` or `\pg.`).

\pg; %------------------------------------------------------------------

\sec Comparison \OpTeX/ slides with Beamer\fnote{\url{http://www.ctan.org/pkg/beamer}}

The \LaTeX{} package {\bf\Blue Beamer} gives much more features and many themes
are prepared for Beamer, {\bf\Red but}
\pg+
* the user of Beamer is forced to {\em program} his/her document using
  dozens of \code{\\begin{foo}} and \code{\\end{foo}} and many other
  programming constructions,\pg+
* plain \TeX{} gives you a possibility to simply
  {\em write} your document with minimal markup. The result is more compact.
  You can concentrate on the contents of your document, not on the
  programming syntax.\pg+
* User needs to read 250 pages of doc for understanding Beamer,\pg+
* on the other hand, you need to read only eleven
  slides\fnote{this twelfth slide isn't counted}
  and you are ready to use {\bf\Blue\OpTeX/ slides}.

\pg; %------------------------------------------------------------------

\null
\vskip2cm
\centerline{\typosize[35/40]\bf Thanks for your attention}\pg+

\vskip2cm
\centerline{\Blue\typosize[60/70]\bf Questions?}

\pg. %----------------------------- THE END ----------------------------