diff options
author | Karl Berry <karl@freefriends.org> | 2010-09-27 00:42:32 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-09-27 00:42:32 +0000 |
commit | b8f7c3e06dcf0481a2f50e396adb10609eda43f1 (patch) | |
tree | 517f0565ad955910d13c8c9318ae3666282226d8 /Master/texmf-dist/doc/generic/lecturer/ltr-steps.tex | |
parent | 8c65eb5b73f80e0fcaa70910c1011adfa024d106 (diff) |
lecturer (26sep10)
git-svn-id: svn://tug.org/texlive/trunk@19909 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/generic/lecturer/ltr-steps.tex')
-rw-r--r-- | Master/texmf-dist/doc/generic/lecturer/ltr-steps.tex | 202 |
1 files changed, 202 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/lecturer/ltr-steps.tex b/Master/texmf-dist/doc/generic/lecturer/ltr-steps.tex new file mode 100644 index 00000000000..eb2424aadcc --- /dev/null +++ b/Master/texmf-dist/doc/generic/lecturer/ltr-steps.tex @@ -0,0 +1,202 @@ +% This file is part of the Lecturer package. +% Paul Isambert -- July 2010. +% +% ATTRIBUTES +% +\def\ltr@step_restrictions{% + vskip hskip everyvstep everyhstep left right + transition handout visible group color font on off pdftitle } +\ltr@boolean_attr{step:handout} +\ltr@boolean_attr{step:visible} +\ltr@boolean_attr{step:group} +\ltr@setattribute step:handout;=true +\defactiveparameter step {% + \ltr@delete_empty{#1:font}% + }% + +\def\ltr@step_clear{% + \ifltr@step_open + \ltr@ifattribute ltr@inner_step:font; + {\ltr@usevalueor ltr@inner_slide:font;{\ltr@usevalue job:font;}}{}% + \ltr@ifvalue ltr@inner_step:group; = true + {\endgroup}{}% + \ltr@passvalueand{\reverse\iffemptystring}ltr@inner_step:color; + {{\pdfcolorstack0 pop}}{}% + \pdfliteral direct {EMC}% + \ltr@setattribute ltr@inner_step:meta; = step + \passexpanded{\ltr@attribute_deletion{ltr@inner_step}}\ltr@step_restrictions + \fi + } +\passexpandednobraces{\restrictparameter step ltr@inner_step:}\ltr@step_restrictions\par +\ltr@boolean_attr{ltr@inner_step:handout} +\ltr@boolean_attr{ltr@inner_step:visible} +\ltr@boolean_attr{ltr@inner_step:group} + +\long\def\setstep#1#2\par{% + \ltr@setstep_do{#2}{#1}% + }% +\newfor\ltr@setstep_do{1}#2{% + \ltr@ifattribute {ltr@\commandtoname#2@inner_step}:meta; + {\setparameter{ltr@\commandtoname#2@inner_step}:} + {\ltr@setstep_new{#2}}% + #1\par + } +\def\ltr@setstep_new#1{% + \def#1{% + \ltr@step_clear + \ltr@setattribute ltr@inner_step:meta;={ltr@\commandtoname#1@inner_step} + \ltr@step_do}% + \passexpandednobraces{\restrictparameter {ltr@\commandtoname#1@inner_step}:}\ltr@step_restrictions\par + \ltr@boolean_attr{{ltr@\commandtoname#1@inner_step}:visible}% + \ltr@boolean_attr{{ltr@\commandtoname#1@inner_step}:handout}% + \ltr@boolean_attr{{ltr@\commandtoname#1@inner_step}:group}% + \defactiveparameter{ltr@\commandtoname#1@inner_step}{% + \ltr@delete_empty{##1:font}% + }% + \setparameter{ltr@\commandtoname#1@inner_step}: + meta = step + } +\setparameter ltr@inner_step: + meta = step + +% +% +% +% +% +% The \step command. +% +\newif\ifltr@step_open +\newcount\ltr@steps_count +\newcount\ltr@activesteps_count +\def\step{% + % Close the current step, if any. + \ltr@step_clear + \ltr@step_do + } +% Steps created with \newstep goes there directly. +\def\ltr@step_do{% + \global\ltr@step_opentrue + \ifnextnospace[{\ltr@step_create}{\ltr@step_create[]}% + } + +\newif\ifltr@step_standalone +% +% For the options. +% +\newif\ifltr@step_named +\def\ltr@stepcheck_useatom#1{% + \ltr@step_namedtrue + \reverse\iffcs{ltr@step_objnum:#1_\the\slideno} + {\pdfobj reserveobjnum% + \xdefcs{ltr@step_objnum:#1_\the\slideno}{\the\pdflastobj\spacecs}}% + \global\lettocs\ltr@step_current{ltr@step_objnum:#1_\the\slideno}% + } +\def\ltr@stepcheck_usepair#1#2{} +% +\def\ltr@step_useatom#1{% + \ifstring{#1}{here} + {\ltr@error{You can't name a step `here', it's a keyword}} + {\def\ltr@step_ref{#1}% + \iffemptycommand\ltr@step_pdftitle{\def\ltr@step_pdftitle{#1}}}% + } +\def\ltr@step_usepair#1#2{% + \ifstring{#1}{on} + {\ltr@step_standalonefalse\ltr@step_onoff{on}{#2 }} + {\ifstring{#1}{off} + {\ltr@step_onoff{off}{#2 }} + {\ifstring{#1}{pdftitle} + {\def\ltr@step_pdftitle{#2}} + {\ltr@setattribute ltr@inner_step:#1;={#2} }}}% + } +\def\ltr@step_usepair#1#2{% + \ifstring{#1}{pdftitle} + {\def\ltr@step_pdftitle{#2}} + {\ltr@setattribute ltr@inner_step:#1;={#2} }% + } +\def\ltr@step_onoff#1#2{% + \reverse\iffemptystring{#2} + {\ltr@step_onoffloop{#1}{#2 }}% + } +\newfornoempty\ltr@step_onoffloop{1}#2 {% + \ifstring{#2}{here}{\ltr@step_standalonetrue}{% + \ifcs{ltr@step_#2:#1} + {\global\eaddrightcs} + {\xdefcs} + {ltr@step_#2:#1}{\ltr@step_current 0 R }}% + % Add the object to ltr@step_OCG:on/off + } +\def\ltr@step_current{} +\def\ltr@step_create[#1]{% + \global\advance\ltr@steps_count1 + \ltr@step_namedfalse + \ltr@option_launchloop{stepcheck}{#1}% + \unless\ifltr@step_named + \pdfobj reserveobjnum + \xdef\ltr@step_current{\the\pdflastobj\spacecs}% + \fi + \def\ltr@step_ref{}\def\ltr@step_pdftitle{}% + \ltr@step_standalonefalse + \ltr@option_launchloop{step}{#1}% + \ltr@delete_empty{ltr@inner_step:font}% + \ltr@passvalueor{\ltr@step_onoff{on}}ltr@inner_step:on;\ltr@step_standalonetrue + \ltr@passvalue{\ltr@step_onoff{off}}ltr@inner_step:off;% + \immediate\pdfobj useobjnum\ltr@step_current {% + << /Type/OCG /Name(% + \ifemptycommand\ltr@step_ref + {\ifemptycommand\ltr@step_pdftitle + {[step \the\ltr@steps_count]} + {\ltr@step_pdftitle}}% + {\ltr@step_pdftitle}) >> + }% + % ... and, if the object has a reference name, it might be referenced, + % so its object number now returns its name. + \reverse\iffemptycommand\ltr@step_ref{\global\letcs{ltr@step_\ltr@step_current:name}\ltr@step_ref}% + % According to the value to the attribute "handout" or "visible" + % this group has base state ON or OFF (see catalog). + \ltr@ifvalue job:mode; = handout + {\ltr@ifvalue ltr@inner_step:handout; = true + {\addvisibleOCG{\ltr@step_current}} + {\addOCG{\ltr@step_current}}} + {\ltr@ifvalue ltr@inner_step:visible; = true + {\addvisibleOCG{\ltr@step_current}\ltr@step_standalonefalse} + {\addOCG{\ltr@step_current}}}% + % Link the step to the OCG. + \addproperties{ltr@step_\the\ltr@steps_count:content}{\ltr@step_current}% + % If the step appears by itself, it is added it to the list to + % be chained in the output routine, and its transition is stored, if any. + \ifltr@step_standalone + \global\advance\ltr@activesteps_count1 + \global\eaddright\ltr@page_steplist{\ltr@step_current,}% + \iffcs{ltr@inner_transition:\ltr@usevalueor ltr@inner_step:transition;{ltr@no_value}} + {\xdefcs{ltr@step_\ltr@step_current:transition}{% + \usecs{ltr@inner_transition:\ltr@usevalueor ltr@inner_step:transition;{ltr@no_value}} 0 R}}% + \fi + % The step is opened, and the every...'s released. + \pdfliteral direct {/OC/ltr@step_\the\ltr@steps_count:content BDC}% + \ltr@ifvalue ltr@inner_step:group; = true + {\begingroup}{}% + \ltr@passvalueand{\reverse\iffemptystring}ltr@inner_step:color; + {{\pdfcolorstack0 push {\ltr@passvalue\ltr@color_use ltr@inner_step:color;}}}{}% + \ltr@usevalue ltr@inner_step:font;% + \ifvmode + \ltr@settovalue\vskip ltr@inner_step:vskip;% + \leftskip=0pt \rightskip=0pt plus 1fill\relax + \ltr@ifcasevalue ltr@inner_slide:hpos; + \val ff \rightskip=0pt + \val rr \leftskip=0pt plus 1fill\relax + \val rf \leftskip=0pt plus 1fill\rightskip=0pt + \endval + \ltr@settovalue{\advance\leftskip}ltr@inner_step:left;% + \ltr@settovalue{\advance\rightskip}ltr@inner_step:right;% + \ltr@usevalue ltr@inner_step:everyvstep;% + \else + \ifhmode + \ltr@settovalue\hskip ltr@inner_step:hskip;% + \ltr@usevalue ltr@inner_step:everyhstep;% + \fi + \fi + \ignorespaces + } + +\endinput
\ No newline at end of file |