diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/handout/handout.sty |
Initial commit
Diffstat (limited to 'macros/latex/contrib/handout/handout.sty')
-rw-r--r-- | macros/latex/contrib/handout/handout.sty | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/macros/latex/contrib/handout/handout.sty b/macros/latex/contrib/handout/handout.sty new file mode 100644 index 0000000000..88e407c870 --- /dev/null +++ b/macros/latex/contrib/handout/handout.sty @@ -0,0 +1,157 @@ +%% Copyright 2014… Maïeul Rouquette +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Maïeul Rouquette +% This work consists of the files handout.sty and example and documentation files. + +\ProvidesPackage{handout}[2017/04/21 1.6.0 Handout package] +\RequirePackage{kvoptions,etoolbox,suffix} + +% Options +\DeclareBoolOption[false]{disabled} +\let\disablehandout\handout@disabledtrue +\let\enablehandout\handout@disabledfalse + +\DeclareBoolOption[false]{numbering} +\DeclareBoolOption[false]{sectioning} + +\DeclareBoolOption[true]{printing} + +\DeclareStringOption[.]{dir} + +\ProcessKeyvalOptions* + +% Warning tools +\newcommand{\handout@warning}[1]{\@latex@warning{Handout: #1}} + +% Opening the handout file +\newwrite\@handout +\immediate\openout\@handout=\jobname.handout + + +% The main command, to be used by people +\newcommand{\handout}[1]{% + \ifhandout@disabled\else%Only if not disabled, of course! + \ifhandout@numbering% + \stepcounter{handoutnumber}% + \handoutnumberintxt{\thehandoutnumber}% + \fi% + \ifhandout@printing% + \immediate\write\@handout {\string\handout@input{#1}}% + \fi% + \fi% + \input{\handout@dir/#1}% Add the handout +} + + +% The special commands to be used by people + +\newcommand{\nothandout}[1]{#1} +\newcommand{\onlyhandout}[1]{} +\newcommand{\forhandout}[1]{% + \ifhandout@disabled\else% + \ifhandout@printing% + \immediate\write\@handout{\noexpand #1}% + \fi% + \fi% +} +\WithSuffix\newcommand\forhandout*[1]{% + \ifhandout@disabled\else% + \ifhandout@printing% + \immediate\write\@handout{\unexpanded{#1}}% + \fi% + \fi% +} + +% The command written in the .handout file +\newcommand{\handout@input}[1]{% + \ifdefined\AtEveryHandout% + \AtEveryHandout% + \fi% + \ifhandout@numbering% + \stepcounter{handoutnumber}% + \handoutnumber{\thehandoutnumber}% + \fi% + \input{\handout@dir/#1}% +} +% Output the sectionning commands in the .handout file + +\ifhandout@sectioning%Only if needed by option + + \apptocmd{\@sect}{% + \ifhandout@disabled\else% + \ifhandout@printing% + \immediate\write\@handout{\@backslashchar#1{\unexpanded{#8}}}% + \fi% + \fi% + }{}{\handout@warning{Can't patch sectioning commands}} + +\fi +% Call the handout file at the end, if need + +\AtEndDocument{% + \ifhandout@printing% + \ifhandout@disabled\else + \immediate\closeout\@handout% + \before@handout% + \ifdef{\beforehandout}{\beforehandout}{\handout@warning{No command defined to be run before handout}} + \makeatletter% + \input\jobname.handout% + \makeatother% + \ifdef{\afterhandout}{\afterhandout}{\handout@warning{No command defined to be run after handout}} + \fi% + \fi% +} + +% Standard command before handout +\newcommand{\before@handout}{% + % New page + \newpage% + % Reset counters + \setcounter{page}{1}% + \setcounter{footnote}{0}% + \setcounter{table}{0}% + \setcounter{figure}{0}% + \ifhandout@sectioning% + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \setcounter{subsubsection}{0}% + \fi + \ifhandout@numbering + \setcounter{handoutnumber}{0}% + \fi + % No new data in content or in label or index + \def\addcontentsline##1##2##3{} + \let\label\@gobble + \renewcommand{\index}[2][1]{} + + % Switches onlyhandout and nothandout commands + \renewcommand{\nothandout}[1]{} + \renewcommand{\onlyhandout}[1]{##1} + +} + +\AtBeginDocument{% + \@ifpackageloaded{biblatex}{% + \apptocmd{\before@handout}{\citereset}{}{}% + }{}} + +% Handout numbering + +\ifhandout@numbering + \newcounter{handoutnumber} + \renewcommand{\thehandoutnumber}{\fbox{\arabic{handoutnumber}}} +\fi +\newcommand{\handoutnumberintxt}[1]{\handoutnumber{#1}} +\newcommand{\handoutnumber}[1]{\marginpar{#1}} + + |