summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/beamerappendixnote
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/beamerappendixnote')
-rw-r--r--Master/texmf-dist/source/latex/beamerappendixnote/beamerappendixnote.dtx266
-rw-r--r--Master/texmf-dist/source/latex/beamerappendixnote/beamerappendixnote.ins39
2 files changed, 305 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/beamerappendixnote/beamerappendixnote.dtx b/Master/texmf-dist/source/latex/beamerappendixnote/beamerappendixnote.dtx
new file mode 100644
index 00000000000..5c0d72fabbd
--- /dev/null
+++ b/Master/texmf-dist/source/latex/beamerappendixnote/beamerappendixnote.dtx
@@ -0,0 +1,266 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2020 Christoph Semken <christoph.ban@semken.info>
+% -------------------------------------------------------
+%
+% This file 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.
+%
+% \fi
+%
+% \iffalse
+%
+%
+%<*driver>
+\ProvidesFile{beamerappendixnote.dtx}
+%</driver>
+%<package> \ProvidesPackage{beamerappendixnote}
+%<*package>
+ [2020/07/01 v1.2.0 backposition option]
+%</package>
+%<*driver>
+\documentclass{l3doc}
+
+%% Packages
+% This package
+\usepackage{beamerappendixnote}
+% Unicode
+\usepackage{fontspec,unicode-math}
+% Auxiliary
+\usepackage{listings,graphicx,xparse}
+
+%% Layout
+% Font
+\setmainfont{TeX Gyre Pagella}
+% Listings
+\lstset{
+ basicstyle=\ttfamily,
+ columns=fullflexible,
+ keepspaces=true,
+}
+% Links
+\hypersetup{colorlinks,citecolor=blue,linkcolor=blue,urlcolor=blue}
+
+%% Definitions
+\newcommand\fnurl[2]{\href{#1}{#2}\footnote{\url{#1}}}
+\ExplSyntaxOn
+\NewDocumentCommand{\example}{m m o}
+ {
+ \IfNoValueTF{#3}
+ {\lstinputlisting{example-#1.tex}}
+ {\lstinputlisting[linerange=#3]{example-#1.tex}}
+ \int_step_inline:nn {#2}
+ {
+ \includegraphics[page=##1,width=.49\linewidth]{example-#1.pdf}
+ \int_if_even:nT {##1} {\newline}
+ }
+ }
+\ExplSyntaxOff
+
+\begin{document}
+
+\GetFileInfo{beamerappendixnote.dtx}
+
+\title{The \pkg{beamerappendixnote} package}
+
+\author{Christoph Semken%
+ \thanks{E-mail:
+ \href{mailto:christoph.ban@semken.info}
+ {christoph.ban@semken.info}%
+ }%
+}
+
+\date{\fileversion\ --- \filedate}
+
+\maketitle
+
+\begin{documentation}
+
+\noindent Beamer appendix note introduces the \cs{appxnote} command, which puts the note's content on a separate beamer frame, shown by the command \cs{printappxnotes}. It also creates interactive buttons to move back and forth between the two frames.
+
+\example{basic}{2}
+
+\clearpage
+\section{Installation}
+
+The \pkg{beamerappendixnote} package is available on \fnurl{https://ctan.org/pkg/beamerappendixnote}{CTAN}. The easiest way to install it is through a package manager. For help, see the \fnurl{https://miktex.org/howto/miktex-console}{MiKTeX} or \fnurl{https://www.tug.org/texlive/doc/texlive-en/texlive-en.html\#x1-430005}{TeX Live} manual. To build \pkg{beamerappendixnote} from the source code, follow the instructions in the \verb|README.md| file.
+
+\section{Usage}
+
+\begin{function}{\appxnote}
+ \begin{syntax}
+ \cs{appxnote}\oarg{frameoptions}\marg{title}\marg{content}
+ \end{syntax}
+
+ Create a new appendix note. Inserts a \cs{beamergotobutton} to a frame that contains \meta{content}. The appendix frame is created using \cs{printappxnotes}. The button’s text and the title of the appendix frame are both set to \meta{title}. If you specify \meta{frameoptions}, these will be used when creating the beamer frame.
+\end{function}
+
+\begin{function}{\printappxnotes}
+ \begin{syntax}
+ \cs{printappxnotes}
+ \end{syntax}
+
+ Prints appendix notes in the order they are created using \cs{appxnote}. Has to be used after the last appendix note. Uses one frame per note. Inserts a \cs{beamerreturnbutton} button to the frame where \cs{appxnote} was called, followed by the content, separated by a \cs{vfill}.
+\end{function}
+
+
+\section{Advanced usage}
+
+\subsection{Change the back button placement}
+
+To move the back button from the body of the appendix notes into the frame title, load the \pkg{beamerappendixnote} package with the \lstinline{backposition=title} option.
+
+\example{backtop}{2}[2-2]
+
+\subsection{Multi-frame notes}
+
+To create appendix notes spanning multiple frames, set \meta{frameoption} to \lstinline{allowframebreaks}. This works well with the \lstinline{backposition=title} package option, as it makes the back button visible on every frame.
+
+\example{longnote}{4}
+
+
+
+\end{documentation}
+
+
+%\begin{implementation}
+% \section{Implementation}
+% \DocInput{beamerappendixnote.dtx}
+%\end{implementation}
+
+
+\end{document}
+%</driver>
+% \fi
+% \iffalse
+%<*package>
+%<@@=ban>
+% \fi
+%
+% \subsection{Dependencies}
+%
+% \begin{macrocode}
+\RequirePackage{expl3}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\@ifpackagelater {expl3}{2018/04/22} {} {%
+ \PackageError {beamerappendixnote} {Support package expl3 too old}
+ {%
+ You need to update your installation of the bundles 'l3kernel' and
+ 'l3packages'.\MessageBreak
+ Loading~beamerappendixnote~will~abort!%
+ }%
+ \endinput
+}%
+% \end{macrocode}
+%
+% Identify the package and give the over all version information
+% \begin{macrocode}
+\ProvidesExplPackage {beamerappendixnote} {2020/07/01} {1.2.0}
+ {Create notes in appendix frames}
+% \end{macrocode}
+%
+% User level interfaces are all created by \pkg{xparse}.
+% \begin{macrocode}
+\RequirePackage{xparse}
+\RequirePackage{l3keys2e}
+% \end{macrocode}
+%
+% \subsection{Package options}
+% \begin{macrocode}
+\keys_define:nn { beamerappendixnote }
+{
+ backposition .choices:nn = { top, bottom, title } { },
+ backposition .tl_set:N = \g_ban_backposition
+}
+\keys_set:nn { beamerappendixnote }
+{
+ backposition = top
+}
+\ProcessKeysOptions { beamerappendixnote }
+% \end{macrocode}
+%
+% \subsection{Data structures}
+%
+% Initialise sequences used to store notes
+% \begin{macrocode}
+\seq_new:N \g_ban_titles
+\seq_new:N \g_ban_content
+\seq_new:N \g_ban_options
+\cs_generate_variant:Nn \tl_if_eq:nnT { V }
+% \end{macrocode}
+%
+% \subsection{Macros}
+% \begin{macro}{\appxnote}
+% Create a new appendix note (store values) and insert a button
+% Note: using \cs{newcommand} because \cs{NewDocumentCommand} does not support
+% multiple paragraphs
+% \begin{macrocode}
+\newcommand{\appxnote}[3][t]{
+ \seq_gput_right:Nn \g_ban_titles {#2}
+ \seq_gput_right:Nn \g_ban_options {#1}
+ \seq_gput_right:Nn \g_ban_content {#3}
+ \hyperlink{ban-\seq_count:N \g_ban_titles}{\beamergotobutton{#2}}%
+ \label{ban-back-\seq_count:N \g_ban_titles}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_print_func:n}
+% Print an appendix note
+% Args: title, content, label, back label, options
+% \begin{macrocode}
+\cs_set:Npn \print_func:nnnnn #1 #2 #3 #4 #5 {
+ \def\options{#5}
+ \begin{frame}[\expandafter\options]
+ {
+ \tl_if_eq:VnT \g_ban_backposition { title }
+ {
+ \hyperlink{#4}{\beamerreturnbutton{Back}}~
+ }
+ #1
+ }
+ \label{#3}
+
+ \tl_if_eq:VnT \g_ban_backposition { top }
+ {
+ \hyperlink{#4}{\beamerreturnbutton{Back}}
+ \vfill
+ }
+
+ #2
+ \end{frame}
+}
+% Get title, content, label, back label and options
+% Arg: id
+% \begin{macrocode}
+\cs_set:Npn \expand_func:n #1 {
+ \print_func:nnnnn {\seq_item:Nn \g_ban_titles {#1}}
+ {\seq_item:Nn \g_ban_content {#1}}
+ {ban-#1}
+ {ban-back-#1}
+ {\seq_item:Nn \g_ban_options {#1}}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\printappxnotes}
+% Print all appendix notes
+% \begin{macrocode}
+\NewDocumentCommand{\printappxnotes}{}{
+ \int_step_function:nN {\seq_count:N \g_ban_titles} \expand_func:n
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \iffalse
+%</package>
+% \fi
diff --git a/Master/texmf-dist/source/latex/beamerappendixnote/beamerappendixnote.ins b/Master/texmf-dist/source/latex/beamerappendixnote/beamerappendixnote.ins
new file mode 100644
index 00000000000..9ed4a61322c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/beamerappendixnote/beamerappendixnote.ins
@@ -0,0 +1,39 @@
+%% Copyright (C) 2020 by Christoph Semken <christoph.ban@semken.info>
+%%
+%% This file 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.
+%%
+
+\input docstrip.tex
+
+\keepsilent
+\askforoverwritefalse
+
+\usedir{tex/latex/beamerappendixnote}
+
+\preamble
+
+----------------------------------------------------------------
+beamerappendixnote --- insert notes on appendix slides
+Author: Christoph Semken
+E-mail: christoph.ban@semken.info
+License: Released under the LaTeX Project Public License v1.3c or later
+See: http://www.latex-project.org/lppl.txt
+----------------------------------------------------------------
+
+\endpreamble
+
+\generate{
+ \file{beamerappendixnote.sty}{
+ \from{beamerappendixnote.dtx}{package}
+ }
+}
+
+\endbatchfile