summaryrefslogtreecommitdiff
path: root/macros/luatex/optex/op-slides.tex
blob: 1787cf3aff4627260b07a7f8fa0b85cde0a410a3 (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
%% This is part of 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{slides-bg.png} % background picture

\activettchar`                % 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 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.
* Paragraph indentation is zero. There is 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.
* The items in lists are started by 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.
* Lats 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 at 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

* When `\slideshow` is active then you cannot reference sections by 
  hyperlinked `\ref`. Only `\pgref` works (and goes to the last layer
  of the referenced page).
* If the text overfull the page (slide) then it follows to the next page without
  saying explicitly `\pg;`. But `\slideshow` cannot work in such case.\pg+

\sec More about design

* You can use `\backgroundpic{<image-file>}` for putting an image to the backgroud.
* You can re-declare `\footline` or re-define internal macros for design as 
  you wish.
* 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.

  \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 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 <layered text> should include conditions like
  `\ifnum\layernum...` or `\ifcase\layernum`. 
  It is printed <number> times to more slide pages (layers) with the same
  surrounding text. 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

The `{\pshow<num> <text>}` prints <text> in Red when current layer is equal
to <num> or it prints <text> normally when current layers is greater than <num>.
The transparent (invisible) font 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 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 another
  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 to the contents of your document, not to 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 ten 
  slides\fnote{this eleventh 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 ----------------------------