summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2011-08-12 15:31:29 +0000
committerKarl Berry <karl@freefriends.org>2011-08-12 15:31:29 +0000
commit11c484aba65897a075decb96db9796579daa4ecb (patch)
treeb5d3f064323aff478d9164475c28bfec33b09905
parent839b35610887e2f013dd13fb9d78e71417e8eae7 (diff)
beamersubframe 0.2 (11aug11)
git-svn-id: svn://tug.org/texlive/trunk@23510 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/beamersubframe/README42
-rw-r--r--Master/texmf-dist/doc/latex/beamersubframe/beamersubframe-append.pdfbin17540 -> 14955 bytes
-rw-r--r--Master/texmf-dist/doc/latex/beamersubframe/beamersubframe-append.svg369
-rw-r--r--Master/texmf-dist/doc/latex/beamersubframe/beamersubframe-embed.pdfbin17446 -> 15283 bytes
-rw-r--r--Master/texmf-dist/doc/latex/beamersubframe/beamersubframe-embed.svg367
-rw-r--r--Master/texmf-dist/doc/latex/beamersubframe/beamersubframe.pdfbin520899 -> 505027 bytes
-rw-r--r--Master/texmf-dist/doc/latex/beamersubframe/beamersubframe.tex454
-rw-r--r--Master/texmf-dist/doc/latex/beamersubframe/bsf-example.tex150
-rw-r--r--Master/texmf-dist/source/latex/beamersubframe/beamersubframe.dtx2354
-rw-r--r--Master/texmf-dist/source/latex/beamersubframe/beamersubframe.ins67
-rw-r--r--Master/texmf-dist/tex/latex/beamersubframe/beamersubframe.sty515
-rwxr-xr-xMaster/tlpkg/libexec/ctan2tds1
12 files changed, 3389 insertions, 930 deletions
diff --git a/Master/texmf-dist/doc/latex/beamersubframe/README b/Master/texmf-dist/doc/latex/beamersubframe/README
index e661088543b..6fb9795eef7 100644
--- a/Master/texmf-dist/doc/latex/beamersubframe/README
+++ b/Master/texmf-dist/doc/latex/beamersubframe/README
@@ -1,30 +1,42 @@
-Copyright (c) 2004 Mike Kaufmann
+Copyright (c) 2011 Mike Kaufmann
m.km@gmx.de
Licence: LPPL
<http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html>
+
1. What is it
The Beamer SubFrame package provides a method to reorder frames in the
PDF file without reordering the source. Mainly, it is meant to embed or
append frames with details on some subject.
-This is the very first version! It's still considered experimental!
-Everything, including the name and the user interface, may change in
-the future.
+This package is in an early state of development (it's version 0.2).
+It is already useful, but there are some restrictions. And although
+it's not planned, the user interface may change in the future.
+
+
+2. Generating beamersubframe.sty
+Simply run: tex beamersubframe.ins
+
+The file beamersubframe.dtx also contains a small example. You will be asked,
+if you want to generate it.
+
+
+3. Making the Documentation
+To get contents, cross references and index right, run TeX and makeindex
+as follows:
-Although it can only be used with the beamer class, it is not a part
-of the beamer class!
+pdflatex beamersubframe.dtx
+makeindex -s gind.ist beamersubframe.idx
+pdflatex beamersubframe.dtx
+pdflatex beamersubframe.dtx
-2. Example
-The presentation explainig the package also serves as an example.
-Feel free to play around with it.
-3. Files
-00readme this file
-beamersubframe.sty the package
-beamersubframe.tex source of presentation
-beamersubframe.pdf presentation
+4. Files
+README this file
+beamersubframe.dtx
+beamersubframe.ins the package
+beamersubframe.pdf the manual
beamersubframe-append.pdf
-beamersubframe-embed.pdf pictures used in presentation
+beamersubframe-embed.pdf pictures used in manual
beamersubframe-append.svg
beamersubframe-embed.svg source of pictures (inkscape)
diff --git a/Master/texmf-dist/doc/latex/beamersubframe/beamersubframe-append.pdf b/Master/texmf-dist/doc/latex/beamersubframe/beamersubframe-append.pdf
index 37e617abf66..6908e0004bc 100644
--- a/Master/texmf-dist/doc/latex/beamersubframe/beamersubframe-append.pdf
+++ b/Master/texmf-dist/doc/latex/beamersubframe/beamersubframe-append.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/beamersubframe/beamersubframe-append.svg b/Master/texmf-dist/doc/latex/beamersubframe/beamersubframe-append.svg
index 0048cceb5c2..1fff13f5c0e 100644
--- a/Master/texmf-dist/doc/latex/beamersubframe/beamersubframe-append.svg
+++ b/Master/texmf-dist/doc/latex/beamersubframe/beamersubframe-append.svg
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
@@ -13,7 +12,7 @@
height="1052.3622"
id="svg2"
sodipodi:version="0.32"
- inkscape:version="0.48.1 "
+ inkscape:version="0.46"
sodipodi:docname="beamersubframe-append.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.0">
@@ -112,17 +111,17 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
- inkscape:zoom="0.48426804"
- inkscape:cx="617.73918"
- inkscape:cy="604.67055"
+ inkscape:zoom="0.75826447"
+ inkscape:cx="602.23721"
+ inkscape:cy="503.27459"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
gridtolerance="50"
objecttolerance="10000"
guidetolerance="10000"
- inkscape:window-width="1024"
- inkscape:window-height="578"
+ inkscape:window-width="1280"
+ inkscape:window-height="961"
inkscape:window-x="-4"
inkscape:window-y="-3"
inkscape:window-maximized="0">
@@ -177,434 +176,444 @@
id="rect3324"
width="141.73228"
height="106.29921"
- x="141.73228"
- y="141.73227" />
+ x="141.73232"
+ y="106.2992" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3322"
width="141.73228"
height="106.29921"
- x="124.01575"
- y="124.01573" />
+ x="124.01577"
+ y="88.582664" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3320"
width="141.73228"
height="106.29921"
- x="106.29921"
- y="106.29919" />
+ x="106.29923"
+ y="70.866119" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2528"
width="141.73228"
height="106.29921"
- x="88.58268"
- y="88.582657" />
+ x="88.582703"
+ y="53.149586" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3326"
width="141.73228"
height="106.29921"
- x="141.73228"
- y="407.48032" />
+ x="141.73232"
+ y="372.04724" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3328"
width="141.73228"
height="106.29921"
- x="124.01575"
- y="389.76376" />
+ x="124.01577"
+ y="354.33069" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3330"
width="141.73228"
height="106.29921"
- x="106.29921"
- y="372.04724" />
+ x="106.29923"
+ y="336.61417" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3332"
width="141.73228"
height="106.29921"
- x="88.58268"
- y="354.33069" />
+ x="88.582703"
+ y="318.89761" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3334"
width="141.73228"
height="106.29921"
- x="141.7323"
- y="673.22833" />
+ x="141.73233"
+ y="637.79529" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3336"
width="141.73228"
height="106.29921"
- x="124.01575"
- y="655.51178" />
+ x="124.01577"
+ y="620.07874" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3338"
width="141.73228"
height="106.29921"
- x="106.29921"
- y="637.79523" />
+ x="106.29923"
+ y="602.36218" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3340"
width="141.73228"
height="106.29921"
- x="88.582687"
- y="620.07874" />
+ x="88.58271"
+ y="584.64569" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3342"
width="141.73228"
height="106.29921"
- x="584.64569"
- y="283.46454" />
+ x="584.64575"
+ y="372.04721" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3344"
width="141.73228"
height="106.29921"
- x="566.92914"
- y="265.74802" />
+ x="566.9292"
+ y="354.33069" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3346"
width="141.73228"
height="106.29921"
- x="549.21259"
- y="248.03146" />
+ x="549.21265"
+ y="336.61414" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3348"
width="141.73228"
height="106.29921"
- x="531.49609"
- y="230.31494" />
+ x="531.49615"
+ y="318.89761" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3350"
width="141.73228"
height="106.29921"
- x="885.82672"
- y="283.46457" />
+ x="885.82678"
+ y="372.04724" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3352"
width="141.73228"
height="106.29921"
- x="868.11017"
- y="265.74802" />
+ x="868.11023"
+ y="354.33069" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3354"
width="141.73228"
height="106.29921"
- x="850.39368"
- y="248.03148" />
+ x="850.39374"
+ y="336.61414" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3356"
width="141.73228"
height="106.29921"
- x="832.67712"
- y="230.31496" />
+ x="832.67719"
+ y="318.89761" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3366"
width="141.73228"
height="106.29921"
- x="584.64569"
- y="584.64563" />
+ x="584.64581"
+ y="637.79529" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3368"
width="141.73228"
height="106.29921"
- x="566.92914"
- y="566.92914" />
+ x="566.92926"
+ y="620.0788" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3370"
width="141.73228"
height="106.29921"
- x="549.21259"
- y="549.21259" />
+ x="549.21271"
+ y="602.36224" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3372"
width="141.73228"
height="106.29921"
- x="531.49609"
- y="531.49603" />
+ x="531.49622"
+ y="584.64563" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3374"
width="141.73228"
height="106.29921"
- x="885.82666"
- y="584.64569" />
+ x="885.82678"
+ y="637.79535" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3376"
width="141.73228"
height="106.29921"
- x="868.11011"
- y="566.92914" />
+ x="868.11023"
+ y="620.0788" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3378"
width="141.73228"
height="106.29921"
- x="850.39362"
- y="549.21259" />
+ x="850.39374"
+ y="602.36224" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3380"
width="141.73228"
height="106.29921"
- x="832.67706"
- y="531.49603" />
+ x="832.67719"
+ y="584.64563" />
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mstart);stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
- d="M 212.59843,248.03147 C 212.59843,248.03147 212.59843,230.31493 212.59843,265.74801 C 212.59842,301.18109 159.44882,301.18108 159.44882,336.61415 C 159.44882,372.04722 159.44882,354.33069 159.44882,354.33069"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 212.59846,212.5984 C 212.59846,212.5984 212.59846,194.88186 212.59846,230.31494 C 212.59845,265.74802 159.44885,265.74801 159.44885,301.18108 C 159.44885,336.61415 159.44885,318.89762 159.44885,318.89762"
id="path3390"
sodipodi:nodetypes="czzc" />
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mstart);stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
- d="M 212.59843,513.7795 C 212.59843,513.7795 212.59843,496.06296 212.59843,531.49604 C 212.59842,566.92912 159.44882,566.92911 159.44882,602.36218 C 159.44882,637.79525 159.44882,620.07872 159.44882,620.07872"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 212.59846,478.34643 C 212.59846,478.34643 212.59846,460.62989 212.59846,496.06297 C 212.59845,531.49605 159.44885,531.49604 159.44885,566.92911 C 159.44885,602.36218 159.44885,584.64565 159.44885,584.64565"
id="path4434"
sodipodi:nodetypes="czzc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 726.37795,336.61415 C 726.37795,336.61415 708.66141,336.61415 744.09449,336.61415 C 779.52757,336.61414 779.52756,283.46454 814.96063,283.46454 C 850.3937,283.46454 832.67717,283.46454 832.67717,283.46454"
+ d="M 726.37805,425.19683 C 726.37805,425.19683 708.66151,425.19683 744.09459,425.19683 C 779.52767,425.19682 779.52766,372.04722 814.96073,372.04722 C 850.3938,372.04722 832.67727,372.04722 832.67727,372.04722"
id="path4436"
sodipodi:nodetypes="czzc" />
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mstart);stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
- d="M 726.37795,637.79526 C 726.37795,637.79526 708.66141,637.79526 744.09449,637.79526 C 779.52757,637.79525 779.52756,584.64565 814.96063,584.64565 C 850.3937,584.64565 832.67717,584.64565 832.67717,584.64565"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 726.37808,690.94488 C 726.37808,690.94488 708.66154,690.94488 744.09462,690.94488 C 779.5277,690.94487 779.52769,637.79527 814.96076,637.79527 C 850.39383,637.79527 832.6773,637.79527 832.6773,637.79527"
id="path4440"
sodipodi:nodetypes="czzc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#marker20908);marker-end:url(#marker20912);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 1018.7008,380.90549 C 1018.7008,380.90549 1045.2756,380.90549 1080.7087,380.90549 C 1116.1417,380.90549 1116.1417,442.91336 1080.7087,442.91336 C 1045.2757,442.91336 265.74803,442.91336 265.74803,442.91336"
+ d="M 1018.7008,469.48817 C 1018.7008,469.48817 1009.8425,469.48817 1045.2756,469.48817 C 1080.7087,469.48817 1080.7087,513.77951 1045.2756,513.77951 C 1009.8425,513.77951 602.3622,513.77951 531.49606,513.77951 C 460.62992,513.77951 425.19685,407.48029 354.33071,407.48029 C 283.46457,407.48029 265.74803,407.48029 265.74803,407.48029"
id="path4446"
- sodipodi:nodetypes="czzc" />
+ sodipodi:nodetypes="czzzzc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#marker20908);marker-end:url(#marker20912);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 1018.7008,682.08659 C 1018.7008,682.08659 1036.4173,682.08659 1080.7087,682.08659 C 1125,682.08659 1125,744.09447 1080.7087,744.09447 C 1036.4174,744.09447 549.2126,744.09447 478.34646,744.09447 C 407.48031,744.09447 425.19684,708.6614 265.74803,708.6614"
+ d="M 1018.7008,735.23619 C 1018.7008,735.23619 1009.8425,735.2362 1045.2756,735.2362 C 1080.7087,735.2362 1075.772,779.52754 1045.2756,779.52754 C 1014.7791,779.52754 301.1811,779.52754 265.74803,779.52754 C 230.31496,779.52754 177.16535,797.24407 177.16535,850.39368"
id="path4969"
sodipodi:nodetypes="czzzc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#marker20908);marker-end:url(#marker20912);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 239.17323,380.90549 C 283.46457,380.90549 265.74804,380.90549 318.89764,380.90549 C 372.04724,380.90549 372.04725,283.46454 442.91339,283.46454 C 513.77953,283.46454 531.49606,283.46454 531.49606,283.46454"
+ d="M 239.17326,345.47242 C 283.4646,345.47242 265.74807,345.47242 318.89767,345.47242 C 372.04727,345.47242 372.04725,354.33069 442.91339,354.33069 C 513.77953,354.33069 531.49606,354.33069 531.49606,354.33069"
id="path7324"
sodipodi:nodetypes="czzc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#marker20908);marker-end:url(#marker20912);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 239.17323,646.65352 C 239.17323,646.65352 265.74803,646.65352 318.89764,646.65352 C 372.04725,646.65352 389.76378,602.36218 442.91339,602.36218 C 496.063,602.36218 531.49606,602.36218 531.49606,602.36218"
+ d="M 274.6063,735.2362 C 274.6063,735.2362 283.46457,735.2362 336.61417,735.2362 C 389.76378,735.2362 389.76378,655.51179 442.91339,655.51179 C 496.063,655.51179 531.49606,655.51179 531.49606,655.51179"
id="path8380"
sodipodi:nodetypes="czzc" />
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:6,6;stroke-dashoffset:0"
- d="M 1027.5591,336.61415 C 1027.5591,336.61415 992.12607,336.61415 1080.7087,336.61415 C 1169.2913,336.61415 1169.2914,478.34643 1080.7087,478.34643 C 992.12601,478.34643 584.64567,478.34643 496.06299,478.34643 C 407.48031,478.34643 407.48031,566.92911 496.06299,566.92911 C 584.64567,566.92911 531.49606,566.92911 531.49606,566.92911"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:6, 6;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 1027.5591,425.19683 C 1027.5591,425.19683 992.12603,425.19683 1062.9921,425.19683 C 1133.8582,425.19683 1133.8582,531.49604 1062.9921,531.49604 C 992.12593,531.49604 549.2126,531.49604 496.06299,531.49604 C 442.91339,531.49604 442.91339,620.07872 496.06299,620.07872 C 549.2126,620.07872 531.49606,620.07872 531.49606,620.07872"
id="path17489"
sodipodi:nodetypes="czzzzc" />
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:6, 6;stroke-dashoffset:0;font-size:18"
- d="M 194.88189,779.52754 C 194.88189,850.39368 246.49713,850.39368 292.32283,850.39368 C 338.14854,850.39368 389.76378,832.67714 389.76378,779.52754 C 389.76378,726.37793 389.76378,442.91337 389.76378,389.76376 C 389.76378,336.61415 407.48031,318.89762 460.62992,318.89762 C 513.77953,318.89762 531.49606,318.89762 531.49606,318.89762"
+ style="font-size:18px;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:6, 6;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 212.59845,1009.8425 C 212.59843,1045.2756 230.31496,1045.2756 301.1811,1045.2756 C 372.04724,1045.2756 389.76378,1009.8425 389.76378,956.69289 C 389.76378,903.54329 389.76378,513.77951 389.76378,460.6299 C 389.76378,407.48029 407.48031,389.76376 460.62992,389.76376 C 513.77953,389.76376 531.49606,389.76376 531.49606,389.76376"
id="path4883"
sodipodi:nodetypes="czzzzc" />
<text
xml:space="preserve"
style="font-size:18px;font-style:normal;font-weight:bold;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
- x="159.44882"
- y="145.27557"
+ x="159.44885"
+ y="109.84251"
id="text20916"><tspan
sodipodi:role="line"
id="tspan20918"
- x="159.44882"
- y="145.27557">some frame</tspan></text>
+ x="159.44885"
+ y="109.84251">some frame</tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:normal;font-weight:bold;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
- x="159.44882"
- y="411.02359"
+ x="159.44885"
+ y="375.59052"
id="text20920"><tspan
sodipodi:role="line"
id="tspan20922"
- x="159.44882"
- y="411.02359">frame on foo</tspan></text>
+ x="159.44885"
+ y="375.59052">frame on foo</tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:normal;font-weight:bold;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
- x="159.44882"
- y="676.77161"
+ x="159.44885"
+ y="641.33856"
id="text20924"><tspan
sodipodi:role="line"
id="tspan20926"
- x="159.44882"
- y="676.77161">frame on bar</tspan></text>
+ x="159.44885"
+ y="641.33856">frame on bar</tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:normal;font-weight:bold;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
- x="602.36218"
- y="265.74802"
+ x="602.36224"
+ y="354.33069"
id="text20928"><tspan
sodipodi:role="line"
- x="602.36218"
- y="265.74802"
+ x="602.36224"
+ y="354.33069"
id="tspan20934">details on</tspan><tspan
sodipodi:role="line"
- x="602.36218"
- y="288.24802"
+ x="602.36224"
+ y="376.83069"
id="tspan2470">foo</tspan><tspan
sodipodi:role="line"
- x="604.85828"
- y="310.74802"
- id="tspan2472">item x</tspan></text>
+ x="602.36224"
+ y="399.33069"
+ id="tspan2472">item b</tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:normal;font-weight:bold;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
- x="903.54333"
- y="265.74802"
+ x="903.5434"
+ y="354.33069"
id="text20940"><tspan
sodipodi:role="line"
- x="903.54333"
- y="265.74802"
+ x="903.5434"
+ y="354.33069"
id="tspan20946">more details</tspan><tspan
sodipodi:role="line"
- x="903.54333"
- y="288.24802"
+ x="903.5434"
+ y="376.83069"
id="tspan2478">on foo</tspan><tspan
sodipodi:role="line"
- x="906.03943"
- y="310.74802"
- id="tspan2480">item x</tspan></text>
+ x="903.5434"
+ y="399.33069"
+ id="tspan2480">item b</tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:normal;font-weight:bold;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
- x="903.54333"
- y="566.92914"
+ x="903.54346"
+ y="620.0788"
id="text20948"><tspan
sodipodi:role="line"
- x="903.54333"
- y="566.92914"
+ x="903.54346"
+ y="620.0788"
id="tspan20954">more details</tspan><tspan
sodipodi:role="line"
- x="903.54333"
- y="589.42914"
+ x="903.54346"
+ y="642.5788"
id="tspan2494">on bar</tspan><tspan
sodipodi:role="line"
- x="906.03943"
- y="611.92914"
- id="tspan2496">item y</tspan></text>
+ x="903.54346"
+ y="665.0788"
+ id="tspan2496">item z</tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:normal;font-weight:bold;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
- x="602.36218"
- y="566.92914"
+ x="602.3623"
+ y="620.0788"
id="text20956"><tspan
sodipodi:role="line"
- x="602.36218"
- y="566.92914"
+ x="602.3623"
+ y="620.0788"
id="tspan20962">details on</tspan><tspan
sodipodi:role="line"
- x="602.36218"
- y="589.42914"
+ x="602.3623"
+ y="642.5788"
id="tspan2486">bar</tspan><tspan
sodipodi:role="line"
- x="604.85828"
- y="611.92914"
- id="tspan2488">item y</tspan></text>
+ x="602.3623"
+ y="665.0788"
+ id="tspan2488">item z</tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:normal;font-weight:bold;text-align:start;text-anchor:start;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
- x="265.74802"
- y="350.78738"
+ x="255.1181"
+ y="315.35431"
id="text2452"><tspan
sodipodi:role="line"
id="tspan2454"
- x="265.74802"
- y="350.78738">Goto</tspan><tspan
+ x="255.1181"
+ y="315.35431">Goto</tspan><tspan
sodipodi:role="line"
- x="265.74802"
- y="373.28738"
+ x="255.1181"
+ y="337.85431"
id="tspan3268">Details</tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:normal;font-weight:bold;text-align:start;text-anchor:start;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
- x="478.34647"
- y="435.82675"
+ x="531.49603"
+ y="506.6929"
id="text3256"><tspan
sodipodi:role="line"
id="tspan3258"
- x="478.34647"
- y="435.82675">Return from Details</tspan></text>
+ x="531.49603"
+ y="506.6929">Return from Details</tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:normal;font-weight:bold;text-align:start;text-anchor:start;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
- x="478.34647"
- y="737.00787"
+ x="442.91339"
+ y="772.44092"
id="text3260"><tspan
sodipodi:role="line"
id="tspan3262"
- x="478.34647"
- y="737.00787">Return from Details</tspan></text>
+ x="442.91339"
+ y="772.44092">Return from Details</tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:normal;font-weight:bold;text-align:start;text-anchor:start;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
- x="265.74802"
- y="616.5354"
+ x="290.55118"
+ y="705.1181"
id="text3264"><tspan
sodipodi:role="line"
id="tspan3266"
- x="265.74802"
- y="616.5354">Goto</tspan><tspan
+ x="290.55118"
+ y="705.1181">Goto</tspan><tspan
sodipodi:role="line"
- x="265.74802"
- y="639.0354"
+ x="290.55118"
+ y="727.6181"
id="tspan3270">Details</tspan></text>
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#DotL);marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 159.44882,53.149584 L 159.44882,88.582655"
- id="path3272" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#DotL)"
- d="M 1027.5591,637.79525 L 1062.9921,637.79525"
- id="path4627" />
- <text
- xml:space="preserve"
- style="font-size:18px;font-style:normal;font-weight:bold;text-align:start;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
- x="531.49603"
- y="141.73225"
- id="text2498"><tspan
- sodipodi:role="line"
- id="tspan2500"
- x="531.49603"
- y="141.73225">transition with cursor keys</tspan></text>
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect2472"
+ width="141.73228"
+ height="106.29921"
+ x="141.73232"
+ y="903.54327" />
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect2474"
+ width="141.73228"
+ height="106.29921"
+ x="124.01577"
+ y="885.82678" />
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect2476"
+ width="141.73228"
+ height="106.29921"
+ x="106.29922"
+ y="868.11023" />
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect2478"
+ width="141.73228"
+ height="106.29921"
+ x="88.582695"
+ y="850.39368" />
<text
xml:space="preserve"
- style="font-size:18px;font-style:normal;font-weight:bold;text-align:start;text-anchor:start;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
- x="531.49603"
- y="177.16533"
- id="text2502"><tspan
+ style="font-size:18px;font-style:normal;font-weight:bold;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
+ x="159.44885"
+ y="907.08661"
+ id="text2480"><tspan
sodipodi:role="line"
- id="tspan2504"
- x="531.49603"
- y="177.16533">transition with link (button)</tspan></text>
+ id="tspan2482"
+ x="159.44885"
+ y="907.08661">another frame</tspan></text>
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 460.62992,138.18895 L 513.77953,138.18895"
- id="path3312"
- sodipodi:nodetypes="cc" />
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 212.59846,744.09447 C 212.59846,744.09447 212.59846,726.37793 212.59846,761.81101 C 212.59845,797.24409 141.73228,797.24407 141.73228,832.67714 C 141.73228,868.11021 141.73228,850.39368 141.73228,850.39368"
+ id="path2484"
+ sodipodi:nodetypes="czzc" />
<path
- style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#marker20908);marker-end:url(#marker20912);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 460.62992,173.62203 L 513.77953,173.62203"
- id="path3859"
- sodipodi:nodetypes="cc" />
+ style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#marker20908);marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 717.51969,735.2362 C 717.51969,735.2362 708.66142,735.2362 744.09449,735.2362 C 779.52756,735.2362 779.52756,779.52754 744.09449,779.52754"
+ id="path2486"
+ sodipodi:nodetypes="czz" />
</g>
</svg>
diff --git a/Master/texmf-dist/doc/latex/beamersubframe/beamersubframe-embed.pdf b/Master/texmf-dist/doc/latex/beamersubframe/beamersubframe-embed.pdf
index 707930fdacf..8da0f4d8a60 100644
--- a/Master/texmf-dist/doc/latex/beamersubframe/beamersubframe-embed.pdf
+++ b/Master/texmf-dist/doc/latex/beamersubframe/beamersubframe-embed.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/beamersubframe/beamersubframe-embed.svg b/Master/texmf-dist/doc/latex/beamersubframe/beamersubframe-embed.svg
index b534a4ecb86..6a3a8a23e7b 100644
--- a/Master/texmf-dist/doc/latex/beamersubframe/beamersubframe-embed.svg
+++ b/Master/texmf-dist/doc/latex/beamersubframe/beamersubframe-embed.svg
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
@@ -13,7 +12,7 @@
height="1052.3622"
id="svg2"
sodipodi:version="0.32"
- inkscape:version="0.48.1 "
+ inkscape:version="0.46"
sodipodi:docname="beamersubframe-embed.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.0">
@@ -112,17 +111,17 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
- inkscape:zoom="0.50140353"
- inkscape:cx="617.73918"
- inkscape:cy="618.46709"
+ inkscape:zoom="0.75864593"
+ inkscape:cx="613.73366"
+ inkscape:cy="503.52459"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
gridtolerance="50"
objecttolerance="10000"
guidetolerance="10000"
- inkscape:window-width="1024"
- inkscape:window-height="578"
+ inkscape:window-width="1280"
+ inkscape:window-height="961"
inkscape:window-x="-4"
inkscape:window-y="-3"
inkscape:window-maximized="0">
@@ -177,280 +176,280 @@
id="rect3324"
width="141.73228"
height="106.29921"
- x="141.73228"
- y="141.73227" />
+ x="141.73224"
+ y="106.29919" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3322"
width="141.73228"
height="106.29921"
- x="124.01575"
- y="124.01573" />
+ x="124.0157"
+ y="88.582657" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3320"
width="141.73228"
height="106.29921"
- x="106.29921"
- y="106.29919" />
+ x="106.29916"
+ y="70.866112" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2528"
width="141.73228"
height="106.29921"
- x="88.58268"
- y="88.582657" />
+ x="88.582634"
+ y="53.149582" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3326"
width="141.73228"
height="106.29921"
- x="141.73228"
- y="407.48032" />
+ x="141.73224"
+ y="372.04724" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3328"
width="141.73228"
height="106.29921"
- x="124.01575"
- y="389.76376" />
+ x="124.0157"
+ y="354.33069" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3330"
width="141.73228"
height="106.29921"
- x="106.29921"
- y="372.04724" />
+ x="106.29916"
+ y="336.61417" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3332"
width="141.73228"
height="106.29921"
- x="88.58268"
- y="354.33069" />
+ x="88.582634"
+ y="318.89761" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3334"
width="141.73228"
height="106.29921"
- x="141.7323"
- y="673.22833" />
+ x="141.73225"
+ y="637.79529" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3336"
width="141.73228"
height="106.29921"
- x="124.01575"
- y="655.51178" />
+ x="124.0157"
+ y="620.07874" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3338"
width="141.73228"
height="106.29921"
- x="106.29921"
- y="637.79523" />
+ x="106.29916"
+ y="602.36218" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3340"
width="141.73228"
height="106.29921"
- x="88.582687"
- y="620.07874" />
+ x="88.582642"
+ y="584.64569" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3342"
width="141.73228"
height="106.29921"
- x="584.64569"
- y="283.46454" />
+ x="584.64563"
+ y="372.04721" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3344"
width="141.73228"
height="106.29921"
- x="566.92914"
- y="265.74802" />
+ x="566.92908"
+ y="354.33069" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3346"
width="141.73228"
height="106.29921"
- x="549.21259"
- y="248.03146" />
+ x="549.21252"
+ y="336.61414" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3348"
width="141.73228"
height="106.29921"
- x="531.49609"
- y="230.31494" />
+ x="531.49603"
+ y="318.89761" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3350"
width="141.73228"
height="106.29921"
- x="885.82672"
- y="283.46457" />
+ x="885.82666"
+ y="372.04724" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3352"
width="141.73228"
height="106.29921"
- x="868.11017"
- y="265.74802" />
+ x="868.11011"
+ y="354.33069" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3354"
width="141.73228"
height="106.29921"
- x="850.39368"
- y="248.03148" />
+ x="850.39362"
+ y="336.61417" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3356"
width="141.73228"
height="106.29921"
- x="832.67712"
- y="230.31496" />
+ x="832.67706"
+ y="318.89764" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3366"
width="141.73228"
height="106.29921"
- x="584.64569"
- y="584.64563" />
+ x="584.64563"
+ y="637.79529" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3368"
width="141.73228"
height="106.29921"
- x="566.92914"
- y="566.92914" />
+ x="566.92908"
+ y="620.0788" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3370"
width="141.73228"
height="106.29921"
- x="549.21259"
- y="549.21259" />
+ x="549.21252"
+ y="602.36224" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3372"
width="141.73228"
height="106.29921"
- x="531.49609"
- y="531.49603" />
+ x="531.49603"
+ y="584.64563" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3374"
width="141.73228"
height="106.29921"
- x="885.82666"
- y="584.64569" />
+ x="885.8266"
+ y="637.79535" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3376"
width="141.73228"
height="106.29921"
- x="868.11011"
- y="566.92914" />
+ x="868.11005"
+ y="620.0788" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3378"
width="141.73228"
height="106.29921"
- x="850.39362"
- y="549.21259" />
+ x="850.39355"
+ y="602.36224" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3380"
width="141.73228"
height="106.29921"
- x="832.67706"
- y="531.49603" />
+ x="832.677"
+ y="584.64563" />
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mstart);stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
- d="M 212.59843,248.03147 C 212.59843,248.03147 212.59843,230.31493 212.59843,265.74801 C 212.59842,301.18109 159.44882,301.18108 159.44882,336.61415 C 159.44882,372.04722 159.44882,354.33069 159.44882,354.33069"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 212.59839,212.5984 C 212.59839,212.5984 212.59839,194.88186 212.59839,230.31494 C 212.59838,265.74802 159.44878,265.74801 159.44878,301.18108 C 159.44878,336.61415 159.44878,318.89762 159.44878,318.89762"
id="path3390"
sodipodi:nodetypes="czzc" />
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mstart);stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
- d="M 212.59843,513.7795 C 212.59843,513.7795 212.59843,496.06296 212.59843,531.49604 C 212.59842,566.92912 159.44882,566.92911 159.44882,602.36218 C 159.44882,637.79525 159.44882,620.07872 159.44882,620.07872"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 212.59839,478.34643 C 212.59839,478.34643 212.59839,460.62989 212.59839,496.06297 C 212.59838,531.49605 159.44878,531.49604 159.44878,566.92911 C 159.44878,602.36218 159.44878,584.64565 159.44878,584.64565"
id="path4434"
sodipodi:nodetypes="czzc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 726.37796,336.61415 C 726.37796,336.61415 708.66142,336.61415 744.0945,336.61415 C 779.52758,336.61414 779.52757,283.46454 814.96064,283.46454 C 850.39371,283.46454 832.67718,283.46454 832.67718,283.46454"
+ d="M 726.37795,425.19683 C 726.37795,425.19683 708.66141,425.19683 744.09449,425.19683 C 779.52757,425.19682 779.52756,372.04722 814.96063,372.04722 C 850.3937,372.04722 832.67717,372.04722 832.67717,372.04722"
id="path4436"
sodipodi:nodetypes="czzc" />
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mstart);stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
- d="M 726.37795,637.79526 C 726.37795,637.79526 708.66141,637.79526 744.09449,637.79526 C 779.52757,637.79525 779.52756,584.64565 814.96063,584.64565 C 850.3937,584.64565 832.67717,584.64565 832.67717,584.64565"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 726.37794,690.94488 C 726.37794,690.94488 708.6614,690.94488 744.09448,690.94488 C 779.52756,690.94487 779.52755,637.79527 814.96062,637.79527 C 850.39369,637.79527 832.67716,637.79527 832.67716,637.79527"
id="path4440"
sodipodi:nodetypes="czzc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#marker20908);marker-end:url(#marker20912);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 239.1732,469.48816 C 239.1732,469.48816 265.748,460.6299 301.1811,460.6299 C 336.6141,460.6299 336.6141,478.34643 301.1811,478.34643 C 265.7481,478.34643 265.74803,478.34643 265.74803,478.34643"
+ d="M 239.17316,434.05509 C 239.17316,434.05509 265.74796,425.19683 301.18106,425.19683 C 336.61406,425.19683 336.61406,442.91336 301.18106,442.91336 C 265.74806,442.91336 265.74799,442.91336 265.74799,442.91336"
id="path4446"
sodipodi:nodetypes="czzc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 248.0315,425.19683 C 292.32284,425.19683 265.74804,425.19683 318.89764,425.19683 C 372.04724,425.19683 372.04725,283.46454 442.91339,283.46454 C 513.77953,283.46454 531.49606,283.46454 531.49606,283.46454"
+ d="M 248.03146,389.76376 C 248.0315,389.76376 301.18111,389.76376 354.33071,389.76376 C 407.48031,389.76376 389.76378,372.04722 442.91339,372.04722 C 496.063,372.04722 531.49606,372.04722 531.49606,372.04722"
id="path7324"
sodipodi:nodetypes="czzc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1027.5591,336.61415 C 1027.5591,336.61415 992.12607,336.61415 1080.7087,336.61415 C 1169.2913,336.61415 1169.2914,442.91336 1080.7087,442.91336 C 992.12601,442.91336 265.74803,442.91336 265.74803,442.91336"
+ d="M 1027.5592,425.19683 C 1027.5592,425.19683 1027.5593,425.19683 1080.7088,425.19683 C 1133.8583,425.19683 1133.8583,513.77951 1080.7087,513.77951 C 1027.5591,513.77951 602.3622,513.7795 531.49606,513.77951 C 460.62992,513.77951 478.34646,407.48029 407.48031,407.48029 C 336.61416,407.48029 265.74803,407.48029 265.74803,407.48029"
id="path17489"
- sodipodi:nodetypes="czzc" />
+ sodipodi:nodetypes="czzzzc" />
<text
xml:space="preserve"
style="font-size:18px;font-style:normal;font-weight:bold;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
- x="159.44882"
- y="145.27557"
+ x="159.44878"
+ y="109.8425"
id="text20916"><tspan
sodipodi:role="line"
id="tspan20918"
- x="159.44882"
- y="145.27557">some frame</tspan></text>
+ x="159.44878"
+ y="109.8425">some frame</tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:normal;font-weight:bold;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
- x="159.44882"
- y="411.02359"
+ x="159.44878"
+ y="375.59052"
id="text20920"><tspan
sodipodi:role="line"
id="tspan20922"
- x="159.44882"
- y="411.02359">frame on foo</tspan></text>
+ x="159.44878"
+ y="375.59052">frame on foo</tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:normal;font-weight:bold;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
- x="159.44882"
- y="676.77161"
+ x="159.44878"
+ y="641.33856"
id="text20924"><tspan
sodipodi:role="line"
id="tspan20926"
- x="159.44882"
- y="676.77161">frame on bar</tspan></text>
+ x="159.44878"
+ y="641.33856">frame on bar</tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:normal;font-weight:bold;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
- x="602.36218"
- y="265.74802"
+ x="602.36212"
+ y="354.33069"
id="text20928"><tspan
sodipodi:role="line"
- x="602.36218"
- y="265.74802"
+ x="602.36212"
+ y="354.33069"
id="tspan20934">details on</tspan><tspan
sodipodi:role="line"
- x="602.36218"
- y="288.24802"
+ x="602.36212"
+ y="376.83069"
id="tspan2464">foo</tspan><tspan
sodipodi:role="line"
- x="602.36218"
- y="310.74802"
- id="tspan2466">item x</tspan></text>
+ x="602.36212"
+ y="399.33069"
+ id="tspan2466">item b</tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:normal;font-weight:bold;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
@@ -464,129 +463,157 @@
<text
xml:space="preserve"
style="font-size:18px;font-style:normal;font-weight:bold;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
- x="903.54333"
- y="566.92914"
+ x="903.54327"
+ y="620.0788"
id="text20948"><tspan
sodipodi:role="line"
- x="903.54333"
- y="566.92914"
+ x="903.54327"
+ y="620.0788"
id="tspan20954">more details</tspan><tspan
sodipodi:role="line"
- x="903.54333"
- y="589.42914"
+ x="903.54327"
+ y="642.5788"
id="tspan2496">on bar</tspan><tspan
sodipodi:role="line"
- x="903.54333"
- y="611.92914"
- id="tspan2498">item y</tspan></text>
+ x="903.54327"
+ y="665.0788"
+ id="tspan2498">item z</tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:normal;font-weight:bold;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
- x="602.36218"
- y="566.92914"
+ x="602.36212"
+ y="620.0788"
id="text20956"><tspan
sodipodi:role="line"
- x="602.36218"
- y="566.92914"
+ x="602.36212"
+ y="620.0788"
id="tspan20962">details on</tspan><tspan
sodipodi:role="line"
- x="602.36218"
- y="589.42914"
+ x="602.36212"
+ y="642.5788"
id="tspan2488">bar</tspan><tspan
sodipodi:role="line"
- x="604.85828"
- y="611.92914"
- id="tspan2490">item y</tspan></text>
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 248.0315,690.94486 C 292.32284,690.94486 283.46457,690.94486 336.61417,690.94486 C 389.76377,690.94486 407.48032,584.64565 478.34646,584.64565 C 549.2126,584.64565 531.49606,584.64565 531.49606,584.64565"
- id="path25914"
- sodipodi:nodetypes="czzc" />
+ x="602.36212"
+ y="665.0788"
+ id="tspan2490">item z</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1027.5591,637.79525 C 1027.5591,637.79525 992.12606,637.79525 1080.7087,637.79525 C 1169.2913,637.79525 1147.1457,744.09447 1080.7087,744.09447 C 1014.2716,744.09447 673.22835,744.09447 478.34646,744.09447 C 354.33071,744.09447 389.76378,708.6614 265.74803,708.6614"
+ d="M 1027.5591,690.94486 C 1027.5591,690.94486 992.12603,690.94486 1062.9921,690.94486 C 1133.8582,690.94486 1129.4291,797.24407 1062.9921,797.24407 C 996.55503,797.24407 265.74803,797.24407 230.31496,797.24407 C 194.88189,797.24407 177.16535,797.24407 177.16535,850.39368"
id="path26994"
- sodipodi:nodetypes="czzsc" />
+ sodipodi:nodetypes="czzzc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#marker20908);marker-end:url(#marker20912);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 239.1732,735.2362 C 239.1732,735.2362 265.748,726.37794 301.1811,726.37794 C 336.6141,726.37794 336.6141,744.09447 301.1811,744.09447 C 265.7481,744.09447 265.74803,744.09447 265.74803,744.09447"
+ d="M 150.59049,735.2362 C 150.59049,735.2362 150.59055,744.09447 150.59055,761.811 C 150.59055,779.52754 141.73228,779.52753 141.73228,814.9606 C 141.73228,850.39368 141.73228,850.39368 141.73228,850.39368"
id="path26996"
sodipodi:nodetypes="czzc" />
<text
xml:space="preserve"
style="font-size:18px;font-style:normal;font-weight:bold;text-align:start;text-anchor:start;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
- x="301.18109"
- y="496.06296"
+ x="290.55118"
+ y="464.17322"
id="text26998"><tspan
sodipodi:role="line"
id="tspan27000"
- x="301.18109"
- y="496.06296">Skip Details</tspan></text>
+ x="290.55118"
+ y="464.17322">Skip</tspan><tspan
+ sodipodi:role="line"
+ x="290.55118"
+ y="486.67322"
+ id="tspan2485">Details</tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:normal;font-weight:bold;text-align:start;text-anchor:start;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
- x="301.18109"
- y="761.81097"
- id="text27002"><tspan
+ x="-832.67712"
+ y="113.38583"
+ id="text27002"
+ transform="matrix(0,-1,1,0,0,0)"><tspan
sodipodi:role="line"
id="tspan27004"
- x="301.18109"
- y="761.81097">Skip Details</tspan></text>
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#DotL);marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 159.44882,53.149584 L 159.44882,88.582655"
- id="path27012" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#DotL)"
- d="M 212.59843,779.52754 L 212.59843,814.96061"
- id="path28106" />
+ x="-832.67712"
+ y="113.38583">Skip</tspan><tspan
+ sodipodi:role="line"
+ x="-832.67712"
+ y="135.88583"
+ id="tspan2487">Details</tspan></text>
<text
xml:space="preserve"
style="font-size:18px;font-style:normal;font-weight:bold;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
- x="903.54333"
- y="265.74802"
+ x="903.54327"
+ y="354.33069"
id="text2476"><tspan
sodipodi:role="line"
id="tspan2478"
- x="903.54333"
- y="265.74802">more details</tspan><tspan
+ x="903.54327"
+ y="354.33069">more details</tspan><tspan
sodipodi:role="line"
- x="903.54333"
- y="288.24802"
+ x="903.54327"
+ y="376.83069"
id="tspan2480">on foo</tspan><tspan
sodipodi:role="line"
- x="903.54333"
- y="310.74802"
- id="tspan2482">item x</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:18px;font-style:normal;font-weight:bold;text-align:start;text-anchor:start;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
- x="531.49603"
- y="177.16531"
- id="text2504"><tspan
- sodipodi:role="line"
- id="tspan2506"
- x="531.49603"
- y="177.16531">transition with link (button)</tspan></text>
+ x="903.54327"
+ y="399.33069"
+ id="tspan2482">item b</tspan></text>
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect2468"
+ width="141.73228"
+ height="106.29921"
+ x="141.73228"
+ y="903.54327" />
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect2470"
+ width="141.73228"
+ height="106.29921"
+ x="124.01575"
+ y="885.82678" />
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect2472"
+ width="141.73228"
+ height="106.29921"
+ x="106.2992"
+ y="868.11023" />
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect2474"
+ width="141.73228"
+ height="106.29921"
+ x="88.58268"
+ y="850.39368" />
<text
xml:space="preserve"
- style="font-size:18px;font-style:normal;font-weight:bold;text-align:start;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
- x="531.49603"
- y="141.73225"
- id="text2508"><tspan
+ style="font-size:18px;font-style:normal;font-weight:bold;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
+ x="159.44882"
+ y="907.08661"
+ id="text2477"><tspan
sodipodi:role="line"
- id="tspan2510"
- x="531.49603"
- y="141.73225">transition with cursor keys</tspan></text>
+ id="tspan2479"
+ x="159.44882"
+ y="907.08661">another frame</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 460.6299,138.18896 L 513.7795,138.18895"
- id="path2512"
- sodipodi:nodetypes="cc" />
+ d="M 283.46457,690.94486 C 283.46461,690.94486 301.18111,690.94486 354.33071,690.94486 C 407.48031,690.94486 389.76378,637.79525 442.91339,637.79525 C 496.063,637.79525 531.49606,637.79525 531.49606,637.79525"
+ id="path2483"
+ sodipodi:nodetypes="czzc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#marker20908);marker-end:url(#marker20912);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 460.62989,173.62202 L 513.7795,173.62202"
- id="path2514"
- sodipodi:nodetypes="cc" />
+ d="M 717.51966,735.2362 C 717.51969,770.66927 708.66142,779.52754 655.51181,779.52754 C 602.3622,779.52754 301.1811,779.52754 230.31496,779.52754 C 159.44882,779.52754 159.44882,797.24407 159.44882,850.39368"
+ id="path2489"
+ sodipodi:nodetypes="czzc" />
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:bold;text-align:start;text-anchor:start;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
+ x="336.61417"
+ y="772.44092"
+ id="text2491"><tspan
+ sodipodi:role="line"
+ x="336.61417"
+ y="772.44092"
+ id="tspan2495">Skip further Details</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0"
+ d="M 265.74803,1045.2756 L 336.61417,1045.2756"
+ id="path2499" />
</g>
</svg>
diff --git a/Master/texmf-dist/doc/latex/beamersubframe/beamersubframe.pdf b/Master/texmf-dist/doc/latex/beamersubframe/beamersubframe.pdf
index acceb33a574..d5ba6e486d2 100644
--- a/Master/texmf-dist/doc/latex/beamersubframe/beamersubframe.pdf
+++ b/Master/texmf-dist/doc/latex/beamersubframe/beamersubframe.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/beamersubframe/beamersubframe.tex b/Master/texmf-dist/doc/latex/beamersubframe/beamersubframe.tex
deleted file mode 100644
index 826d5601f3a..00000000000
--- a/Master/texmf-dist/doc/latex/beamersubframe/beamersubframe.tex
+++ /dev/null
@@ -1,454 +0,0 @@
-\documentclass{beamer}
-\usepackage{lmodern}
-\usepackage[T1]{fontenc}
-
-\usepackage[append]{beamersubframe}
-
-\setbeamercovered{transparent=50}
-\usetheme{Dresden}
-%\usetheme{Berkeley}
-%\usetheme{Montpellier}
-%\usetheme{Malmoe}
-%\usetheme{AnnArbor}
-\usecolortheme{crane}
-
-
-%-------------------------------------------------------------------------------
-% conditional buttons
-% #1: label for ``skip details''
-% #2: text for ``skip details''
-% #3: label for ``goto details''
-% #4: text for ``goto details''
-\newcommand<>{\beamerlinkdetailbutton}[4]{%
- \ifappend{\uncover#5{\alt#5{\hyperlink{#3}{\beamergotobutton{#4}}}{\beamergotobutton{#4}}}}%
- {\uncover#5{\alt#5{\hyperlink{#1}{\beamerskipbutton{#2}}}{\beamerskipbutton{#2}}}}
-}
-
-% #1: label for ``return from details''
-% #2: text for ``return from details''
-\newcommand<>{\beamerlinkbackbutton}[2]{%
- \ifappend{\uncover#3{\alt#3{\hyperlink{#1}{\beamerreturnbutton{#2}}}{\beamerreturnbutton{#2}}}}{}
-}
-
-\title[Beamer SubFrame]{The Beamer SubFrame Package}
-\subtitle{Reordering frames in the PDF file without reordering the source}
-\author{Mike Kaufmann}
-\institute{\href{mailto:m.km@gmx.de}{\texttt{m.km@gmx.de}}\\~\\
- Version 0.1}
-\date{29.06.2011}
-
-%-------------------------------------------------------------------------------
-\begin{document}
-\begin{frame}
-\maketitle
-\end{frame}
-
-%-------------------------------------------------------------------------------
-%-------------------------------------------------------------------------------
-%-------------------------------------------------------------------------------
-\part{Documentation}
-\section{Introduction}
-\begin{frame}{Introduction}
-\begin{itemize}
-\item can reorder frames in PDF without reordering the source
-\item to embed or append frames with details
-\vspace{2ex}
-\item only one level
-\vspace{2ex}
-\item very first version
-\item not well tested
-\item propably many flaws
-\item therefore \alert{experimental}
-\end{itemize}
-\end{frame}
-
-%-------------------------------------------------------------------------------
-%-------------------------------------------------------------------------------
-\section{Frame Order}
-\subsection{Embedded Details}
-\begin{frame}{Frame Order with Details embedded}
-Order in PDF with details embedded (same as source):
-\begin{itemize}
-\item frame on foo
-\item frame with details on item foo x
-\item frame with more details on item foo x
-\item frame on bar
-\item frame with details on item bar y
-\item frame with more details on item bar y
-\end{itemize}
-\vspace{2ex}
-\beamerlinkdetailbutton{append}{Skip Picture}{embed-pic}{Show Picture}
-\end{frame}
-
-\begin{subframe}[label=embed-pic,plain]{Frame Order with Details embedded}
-\includegraphics[scale=0.3]{beamersubframe-embed.pdf}
-
-\beamerlinkbackbutton{append}{Return from Picture}
-\end{subframe}
-
-%-------------------------------------------------------------------------------
-\subsection{Appended Details}
-\begin{frame}[label=append]{Frame Order with Details appended}
-Order in PDF with details appended (different from source):
-\begin{itemize}
-\item frame on foo
-\item frame on bar
-\item frame with details on item foo x
-\item frame with more details on item foo x
-\item frame with details on item bar y
-\item frame with more details on item bar y
-\end{itemize}
-\vspace{2ex}
-\beamerlinkdetailbutton{depend}{Skip Picture}{append-pic}{Show Picture}
-\end{frame}
-
-\begin{subframe}[label=append-pic,plain]{Frame Order with Details appended}
-\includegraphics[scale=0.3]{beamersubframe-append.pdf}
-
-\beamerlinkbackbutton{depend}{Return from Picture}
-\end{subframe}
-
-%-------------------------------------------------------------------------------
-%-------------------------------------------------------------------------------
-\section{Dependencies}
-\begin{frame}[label=depend]{Dependencies}
-\begin{itemize}
-\item only works with Beamer class
- \begin{itemize}
- \item not loaded otherwhise
- \item error message
- \item disregarding $\to$ \alert{additional errors}
- \end{itemize}
-\vspace{2ex}
-\item needs verbatim
-\end{itemize}
-\end{frame}
-
-%-------------------------------------------------------------------------------
-%-------------------------------------------------------------------------------
-\section{Usage}
-\subsection{Package and Options}
-\begin{frame}[fragile]{Usage -- Package and Options}
-\begin{verbatim}
-\usepackage[...]{beamersubframe}
-\end{verbatim}
-Options:
-\begin{description}
-\item[\texttt{embed }] subframes shown in order of source,
- \texttt{\textbackslash appendsubframes} ignored, default
-\item[\texttt{append}] subframes removed and appended in place of
- \texttt{\textbackslash appendsubframes}
-\end{description}
-\begin{itemize}
-\item options mutually exclusive
-\item if both given $\to$ last one wins
-\end{itemize}
-\end{frame}
-
-%-------------------------------------------------------------------------------
-\subsection{Appending Subframes}
-\begin{frame}{Usage -- Appending Subframes}
-Add \texttt{\textbackslash appendsubframes} before \texttt{\textbackslash end\{document\}}
-
-\vspace{2ex}
-\begin{itemize}
-\item no more subframes allowed after \texttt{\textbackslash appendsubframes}
-\item \texttt{\textbackslash appendsubframes} only allowed once
-\item restrictions not tested by package
-\end{itemize}
-\end{frame}
-
-%-------------------------------------------------------------------------------
-\subsection{Changes of Source}
-\begin{frame}<1>[label=sourcechange]{Usage -- Changes of Source}
-\begin{itemize}
-\item<1-> For frames with details to be embbeded or appended conditionally,
- change to subframe environment (same options as frame environment)
- \beamerlinkdetailbutton<1>{sourcechange<2>}{Skip Source Example}{sourceenv}{Show Source Example}
-\item<2-> Add labels to
- \begin{itemize}
- \item frame to skip or return to
- \item first subframe with details
- \end{itemize}
- \beamerlinkdetailbutton<2>{sourcechange<3>}{Skip Source Example}{sourcelabel}{Show Source Example}
-\item<3-> Add conditional links/buttons to
- \begin{itemize}
- \item frame with details
- \item last subframe with details
- \end{itemize}
- \beamerlinkdetailbutton<3>{conditional}{Skip Source Example}{sourcelink}{Show Source Example}
-\end{itemize}
-\end{frame}
-
-\begin{subframe}[label=sourceenv,fragile]{Source Example}{Changing Environment}
-Change from
-\begin{scriptsize}
-\begin{verbatim}
- \begin{frame} ... options ...
- ... framecontents ...
- \end{frame}
-\end{verbatim}
-\end{scriptsize}
-to
-\begin{scriptsize}
-\begin{verbatim}
- \begin{subframe} ... options ...
- ... framecontents ...
-\end{verbatim}
-\texttt{\hspace{2em}\textbackslash end\{subframe\}}
-\end{scriptsize}
-
-\vspace{1ex}
-\beamerlinkbackbutton{sourcechange<2>}{Return from Source Example}
-\end{subframe}
-
-\againframe<2>{sourcechange}
-
-\begin{subframe}[label=sourcelabel,fragile]{Source Example}{Adding Labels}
-\begin{scriptsize}
-\begin{verbatim}
- \begin{frame}
- ...
-
- \begin{subframe}[label=detailsstart]
- ...
-
- \begin{subframe}
- ...
-
- \begin{frame}[label=skiptohere]
- ...
-\end{verbatim}
-\end{scriptsize}
-\beamerlinkbackbutton{sourcechange<3>}{Return from Source Example}
-\end{subframe}
-
-\againframe<3->{sourcechange}
-
-\begin{subframe}[label=sourcelink,fragile]{Source Example}{Adding Buttons}
-\begin{scriptsize}
-\begin{verbatim}
- \begin{frame}
- ...
- \ifappend{... link to detailsstart ...}%
- {... link to skiptohere ...}
- ...
- \begin{subframe}[label=detailsstart]
- ...
- \begin{subframe}
- ...
- \ifappend{... link to skiptohere ...}{}
- ...
- \begin{frame}[label=skiptohere]
- ...
-\end{verbatim}
-\end{scriptsize}
-\beamerlinkbackbutton{conditional}{Return from Source Example}
-\end{subframe}
-
-%-------------------------------------------------------------------------------
-\subsection{Conditional Execution}
-\begin{frame}<1>[label=conditional,fragile]{Usage -- Conditional Execution}
-Command:
-\begin{scriptsize}
-\begin{verbatim}
-\ifappend{... executed if appended ...}%
- {... executed if embedded ...}
-\end{verbatim}
-\end{scriptsize}
-\begin{itemize}
-\item useful for conditional links or buttons
-\item can be used in own commands
-\end{itemize}
-\end{frame}
-
-
-%-------------------------------------------------------------------------------
-%-------------------------------------------------------------------------------
-\section{Additional Information}
-\subsection{Restrictions}
-\begin{frame}{Restrictions of Beamer SubFrame}
-Additional restrictions to those already mentioned:
-\begin{itemize}
-\item no \texttt{\textbackslash subframe} command
-\item no \texttt{\textbackslash againsubframe} command
-\item appendix not tested
-\item only tested with mode \texttt{beamer}
-\item after errors \texttt{.nav} file has to be erased (sometimes)
-\end{itemize}
-\end{frame}
-
-\begin{frame}{Themes used for Testing}
-\begin{itemize}
-\item Dresden
-\item Berkeley
-\item Montpellier
-\item Malmoe
-\item AnnArbor
-\vspace{2ex}
-\item no options used
-\end{itemize}
-\end{frame}
-
-%-------------------------------------------------------------------------------
-\subsection{Files}
-\begin{frame}{Files generated by Beamer SubFrame}
-\begin{description}
-\item[\texttt{\textbackslash jobname.sfr}]
- contains subframes for appending
-\item[\texttt{\textbackslash jobname.sfp}]
- contains information about subframes used for sidebar and miniframe navigation
-\end{description}
-\end{frame}
-
-%-------------------------------------------------------------------------------
-\subsection{Navigation}
-\begin{frame}{Navigationbar}
-\begin{itemize}
-\item frames and slides in order of PDF file
-\item section and subsection confusing on appended subframes
-\item presentation leads to last frame in PDF
-\item appendix not tested
-\end{itemize}
-
-\vspace{2ex}
-Discussion necessary
-\end{frame}
-
-\begin{frame}{Sidebar and Miniframes}
-\begin{itemize}
-\item number and order of miniframes always as if subframes embedded
-\item highlighting always as if subframes embedded
-\end{itemize}
-\end{frame}
-
-%-------------------------------------------------------------------------------
-\subsection{ToDo}
-\begin{frame}{ToDo}
-\begin{itemize}
-\item proper manual
-\item proper package
-\item package documentation
-\item more testing
-\item fix navigationbar
-\item enabling beamer modes
-\item multiple levels of subframes (?)
-\item \dots
-\end{itemize}
-
-\vspace{2ex}
-But first lets talk about this package.
-\end{frame}
-
-%-------------------------------------------------------------------------------
-%-------------------------------------------------------------------------------
-%-------------------------------------------------------------------------------
-\part{Implementation}
-\section{How it works}
-\subsection{In Embed Mode}
-\begin{frame}
-\frametitle{\texttt{subframe} Environment -- embedded}
-
-\begin{itemize}
-\item parses and stores frist three arguments (if there)
-\item adds \texttt{environmet=subframe} to \texttt{\textit{options}}
-\item calls \texttt{frame} environment with stored arguments
-\end{itemize}
-
-\beamerlinkdetailbutton{appended}{Skip Source}{envsource1}{Goto Source}
-\end{frame}
-
-\begin{subframe}[label=envsource1]
-\frametitle{\texttt{subframe} Environment -- Source (1)}
-(no source here, just for testing)
-\end{subframe}
-
-\begin{subframe}
-\frametitle{\texttt{subframe} Environment -- Source (2)}
-(no source here, just for testing)
-
-\vspace{2ex}
-\beamerlinkbackbutton{appended}{Return from Source}
-\end{subframe}
-
-
-%-------------------------------------------------------------------------------
-\subsection{In Append Mode}
-\begin{frame}[label=appended]
-\frametitle{\texttt{subframe} Environment -- appended}
-
-\begin{itemize}
-\item \texttt{verbatim} environment
-\item writes to \texttt{.sfr} file
- \begin{itemize}
- \item \texttt{\textbackslash beamerrestore}\dots
- \item \texttt{\textbackslash begin\{frame\}} with arguments
- \item contents
- \item \texttt{\textbackslash end\{frame\}}
- \end{itemize}
-\item one file for all subframes
-\end{itemize}
-
-\beamerlinkdetailbutton{appending}{Skip Source}{envsource2}{Goto Source}
-\end{frame}
-
-\begin{subframe}[label=envsource2]
-\frametitle{\texttt{subframe} Environment -- Source (3)}
-(no source here, just for testing)
-\end{subframe}
-
-\begin{subframe}
-\frametitle{\texttt{subframe} Environment -- Source (4)}
-(no source here, just for testing)
-
-\vspace{2ex}
-\beamerlinkbackbutton{appending}{Return from Source}
-\end{subframe}
-
-%-------------------------------------------------------------------------------
-\subsection{Appending Subframes}
-\begin{frame}[label=appending]
-\frametitle{Appending Subframes}
-\begin{itemize}
-\item does nothing in embed mode
-\item in append mode
- \begin{itemize}
- \item closes \texttt{.sfr} file
- \item inputs \texttt{.sfr} file
- \end{itemize}
-\end{itemize}
-
-\beamerlinkdetailbutton{testframe}{Skip Source}{appendsource}{Goto Source}
-\end{frame}
-
-\begin{subframe}[label=appendsource]
-\frametitle{Appending -- Source}
-(no source here, just for testing)
-
-\vspace{2ex}
-\beamerlinkbackbutton{testframe}{Return from Source}
-\end{subframe}
-
-%-------------------------------------------------------------------------------
-%-------------------------------------------------------------------------------
-\section{Just a test section}
-\begin{frame}[label=testframe]
-\frametitle{Just a Test Frame}
-(nothing here, just for testing)
-\end{frame}
-
-%-------------------------------------------------------------------------------
-%-------------------------------------------------------------------------------
-%-------------------------------------------------------------------------------
-\beamerrestore{0}{0}{0}{0}{}{}
-\begin{frame}
-\begin{center}
-Thanks for reading!
-
-\vspace{4ex}
-Thanks in advance for testing and feedback!
-\end{center}
-\end{frame}
-
-\appendsubframes
-\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/beamersubframe/bsf-example.tex b/Master/texmf-dist/doc/latex/beamersubframe/bsf-example.tex
new file mode 100644
index 00000000000..79dd20af927
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/beamersubframe/bsf-example.tex
@@ -0,0 +1,150 @@
+%%
+%% This is file `bsf-example.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% beamersubframe.dtx (with options: `example')
+%%
+%% Copyright (c) 2011 Mike Kaufmann, all rights reserved
+%%
+%% This program is provided under the terms of the
+%% LaTeX Project Public License distributed from CTAN
+%% archives in directory macros/latex/base/lppl.txt.
+%%
+%% Author: Mike Kaufmann
+%% m.km@gmx.de
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%%
+\documentclass{beamer}
+\usepackage{lmodern}
+\usepackage[T1]{fontenc}
+
+\usepackage[append]{beamersubframe}
+
+\newcommand<>{\linkdetail}[4]{%
+ \ifappend{\uncover#5{\hyperlink{#3}{\beamergotobutton{#4}}}}%
+ {\uncover#5{\hyperlink{#1}{\beamerskipbutton{#2}}}}
+}
+\newcommand<>{\returndetail}[2]{%
+\ifappend{\uncover#3{\hyperlink{#1}{\beamerreturnbutton{#2}}}}%
+ {\visible<0>{\beamerreturnbutton{#2}}}
+}
+\newcommand<>{\linkdifftext}[3]{%
+ \ifappend{\uncover#4{\hyperlink{#1}{\beamergotobutton{#3}}}}%
+ {\uncover#4{\hyperlink{#1}{\beamerskipbutton{#2}}}}
+}
+
+\defbeamertemplate*{sidebar left}{bsf test}[1][50]
+{
+ \vfill%
+ \rlap{\hskip0.1cm\hbox{\color{fg!#1!bg}\tiny{\ifsubframe{detail}{main part}}}}%
+ \vskip2pt%
+}
+
+\begin{document}
+\begin{frame}{some frame}
+\begin{itemize}[<+->]
+\item there is foo
+\item foo is good
+\item and there is bar
+\item bar is good too
+\end{itemize}
+\end{frame}
+
+\begin{frame}<1-2>[label=lfoo]{frame on foo}
+\begin{itemize}[<+->]
+\item item a
+\item item b \linkdetail<2>{lfoo<3>}{Skip Details}{ldfoob}{Goto Details}
+\item item c
+\item item d
+\end{itemize}
+\end{frame}
+
+\begin{subframe}[label=ldfoob]{details on foo item b}
+\begin{itemize}[<+->]
+\item item b.1
+\item item b.2
+\item item b.3
+\item item b.4
+\end{itemize}
+\end{subframe}
+
+\begin{subframe}
+\frametitle{more details on foo item b}
+\begin{itemize}[<+->]
+\item item b.5
+\item item b.6
+\item item b.7
+\item item b.8
+\end{itemize}
+
+\vspace{2ex}
+\returndetail<4>{lfoo<3>}{Return from Details}
+\end{subframe}
+
+\againframe<3->{lfoo}
+
+\begin{frame}{frame on bar}
+\begin{itemize}[<+->]
+\item item w
+\item item x
+\item item y
+\item item z \linkdetail<4>{lother}{Skip Details}{ldbarz}{Goto Details}
+\end{itemize}
+\end{frame}
+
+\begin{subframe}[label=ldbarz]
+\frametitle{details on bar item z}
+\begin{itemize}[<+->]
+\item item z.1
+\item item z.2
+\item item z.3
+\item item z.4
+\end{itemize}
+
+\vspace{2ex}
+\linkdifftext<4>{lother}{Skip further Details}{Return from Details}
+\end{subframe}
+
+\begin{subframe}{more details on bar item z}
+\begin{itemize}[<+->]
+\item item z.5
+\item item z.6
+\item item z.7
+\item item z.8
+\end{itemize}
+
+\vspace{2ex}
+\returndetail<4>{lother}{Return from Details}
+\end{subframe}
+
+\begin{frame}[label=lother]{another frame}
+\begin{itemize}[<+->]
+\item conclusion 1
+\item conclusion 2
+\item conclusion 3
+\item conclusion 4
+\end{itemize}
+\end{frame}
+
+\appendsubframes
+\end{document}
+\endinput
+%%
+%% End of file `bsf-example.tex'.
diff --git a/Master/texmf-dist/source/latex/beamersubframe/beamersubframe.dtx b/Master/texmf-dist/source/latex/beamersubframe/beamersubframe.dtx
new file mode 100644
index 00000000000..d6698dd3caf
--- /dev/null
+++ b/Master/texmf-dist/source/latex/beamersubframe/beamersubframe.dtx
@@ -0,0 +1,2354 @@
+% \iffalse meta-comment
+%
+% Package beamersubframe
+% Copyright (c) 2011 Mike Kaufmann, all rights reserved
+%
+% This program is provided under the terms of the
+% LaTeX Project Public License distributed from CTAN
+% archives in directory macros/latex/base/lppl.txt.
+%
+% Author: Mike Kaufmann
+% m.km@gmx.de
+% \fi
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%%
+% \CheckSum{922}
+%
+% \iffalse meta-comment
+%
+%<*package>
+%%
+\def\fileversion{0.2}
+\def\filedate{2011/08/07}
+
+%</package>
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{hypdoc}
+\usepackage{graphicx}
+%\usepackage[pdfborder=0,colorlinks,linkcolor=blue]{hyperref}
+\usepackage[all]{hypcap}
+\setcounter{IndexColumns}{2}
+\EnableCrossrefs
+\CodelineIndex
+%\RecordChanges
+%\OnlyDescription
+\makeatletter
+% new, like ...Env... commands from doc.sty)
+\let\PrintDescribeOpt\PrintDescribeEnv
+\let\PrintOptName\PrintEnvName
+\def\DescribeOpt{\leavevmode\@bsphack\begingroup\MakePrivateLetters
+ \Describe@Opt}
+\def\Describe@Opt#1{\endgroup
+ \marginpar{\raggedleft\PrintDescribeOpt{#1}}%
+ \SpecialOptIndex{#1}\@esphack\ignorespaces}
+\def\SpecialOptIndex#1{\@bsphack
+ \index{#1\actualchar{\protect\ttfamily#1}
+ (option)\encapchar usage}%
+ \index{options:\levelchar#1\actualchar{\protect\ttfamily#1}\encapchar
+ usage}\@esphack}
+% new (like \SpecialEnvIndex from hypdoc.sty)
+\let\HDorg@SpecialOptIndex\SpecialOptIndex
+\renewcommand*\SpecialOptIndex[1]{%
+ \@bsphack
+ \begingroup
+ \HD@target
+ \let\HDorg@encapchar\encapchar
+ \edef\encapchar usage{%
+ \HDorg@encapchar hdclindex{\the\c@HD@hypercount}{usage}%
+ }%
+ \HDorg@SpecialOptIndex{#1}%
+ \endgroup
+ \@esphack
+}
+% redefinition (from doc.sty)
+\def\macro{\begingroup
+ \catcode`\\12
+ \MakePrivateLetters \m@cro@ \z@}
+\def\environment{\begingroup
+ \catcode`\\12
+ \MakePrivateLetters \m@cro@ \@ne}
+% new, environment 'option', like 'environment', but index entries with
+% '(option)'
+\def\option{\begingroup
+ \catcode`\\12
+ \MakePrivateLetters \m@cro@ \tw@}
+% redefinition (from doc.sty)
+\long\def\m@cro@#1#2{\endgroup \topsep\MacroTopsep \trivlist
+ \edef\saved@macroname{\string#2}%
+ \def\makelabel##1{\llap{##1}}%
+ \if@inlabel
+ \let\@tempa\@empty \count@\macro@cnt
+ \loop \ifnum\count@>\z@
+ \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat
+ \edef\makelabel##1{\llap{\vtop to\baselineskip
+ {\@tempa\hbox{##1}\vss}}}%
+ \advance \macro@cnt \@ne
+ \else \macro@cnt\@ne \fi
+ \edef\@tempa{\noexpand\item[%
+ \ifcase #1%
+ \noexpand\PrintMacroName
+ \or
+ \noexpand\PrintEnvName
+ \or
+ \noexpand\PrintOptName
+ \fi
+ {\string#2}]}%
+ \@tempa
+ \global\advance\c@CodelineNo\@ne
+ \ifcase #1%
+ \SpecialMainIndex{#2}\nobreak
+ \DoNotIndex{#2}%
+ \or
+ \SpecialMainEnvIndex{#2}\nobreak
+ \or
+ \SpecialMainOptIndex{#2}\nobreak
+ \fi
+ \global\advance\c@CodelineNo\m@ne
+ \ignorespaces}
+% new
+\let\endoption\endmacro
+\def\SpecialMainOptIndex#1{\@bsphack\special@index{%
+ #1\actualchar
+ {\string\ttfamily\space#1}
+ (option)%
+ \encapchar main}%
+ \special@index{options:\levelchar#1\actualchar{%
+ \string\ttfamily\space#1}\encapchar
+ main}\@esphack}
+\makeatother
+\begin{document}
+\DocInput{beamersubframe.dtx}
+\end{document}
+%</driver>
+%
+%<*package>
+% \fi
+%
+% \DoNotIndex{\^}
+% \DoNotIndex{\@auxout}
+% \DoNotIndex{\@@end,\@empty}
+% \DoNotIndex{\@gobble,\@gobbletwo}
+% \DoNotIndex{\@ifclassloaded,\@ifnextchar,\@ifundefined}
+% \DoNotIndex{\@makeother}
+% \DoNotIndex{\@nameuse}
+% \DoNotIndex{\@tempa,\@tempb,\@tempcnta,\@tempcntb}
+% \DoNotIndex{\@writefile,\@nameuse}
+% \DoNotIndex{\advance,\active,\addtocontents,\addtocounter}
+% \DoNotIndex{\AtBeginDocument,\AtEndDocument}
+% \DoNotIndex{\begin,\begingroup}
+% \DoNotIndex{\beamer@endpageofdocument,\beamer@endpageofframe}
+% \DoNotIndex{\beamer@endpageofpart,\beamer@endpageofsection}
+% \DoNotIndex{\beamer@endpageofsubsection}
+% \DoNotIndex{\beamer@frameendpage,\beamer@framepages,\beamer@framestartpage}
+% \DoNotIndex{\beamer@startpageofpart,\beamer@startpageofsection}
+% \DoNotIndex{\beamer@startpageofsubsection,\beamer@subsectionstartpage}
+% \DoNotIndex{\beamer@partstartpage,\beamer@sectionstartpage}
+% \DoNotIndex{\beamer@ifempty,\beamer@notesactions,\beamer@tempcount}
+% \DoNotIndex{\c@framenumber,\c@page,\c@part}
+% \DoNotIndex{\c@section,\c@subsection,\c@subsectionslide}
+% \DoNotIndex{\catcode,\clearpage,\closeout,\csname}
+% \DoNotIndex{\DeclareOption,\def,\do,\dospecials}
+% \DoNotIndex{\edef,\else,\end,\endgroup,\endcsname,\endinput,\ExecuteOption}
+% \DoNotIndex{\expandafter,\ExecuteOptions}
+% \DoNotIndex{\fi,\filedate,\fileversion}
+% \DoNotIndex{\gdef,\global}
+% \DoNotIndex{\headcommand,\hyperlink}
+% \DoNotIndex{\if@filesw}
+% \DoNotIndex{\if,\ifcase,\ifcat,\ifdim,\ifnum,\ifx,\InputIfFileExists}
+% \DoNotIndex{\immediate,\input}
+% \DoNotIndex{\insertpartheadnumber,\insertsectionhead,\insertsubsectionhead}
+% \DoNotIndex{\insertsectionheadnumber,\insertsubsectionheadnumber}
+% \DoNotIndex{\jobname}
+% \DoNotIndex{\let,\lastsubsection}
+% \DoNotIndex{\MessageBreak}
+% \DoNotIndex{\NeedsTeXFormat,\newcommand,\newcount,\newdimen,\newif}
+% \DoNotIndex{\newenvironment,\newtoks,\newwrite,\noexpand}
+% \DoNotIndex{\openout}
+% \DoNotIndex{\PackageError,\PackageWarning,\PackageInfo}
+% \DoNotIndex{\ProcessOptions,\ProvidesPackage}
+% \DoNotIndex{\protect}
+% \DoNotIndex{\relax,\RequirePackage}
+% \DoNotIndex{\setcounter,\slideentry,\space,\string}
+% \DoNotIndex{\the}
+% \DoNotIndex{\verbatim@,\verbatim@line,\verbatim@processline}
+% \DoNotIndex{\write}
+% \DoNotIndex{\xdef,\z@}
+%
+% \changes{0.1}{2011/06/29}{initial release}
+% \changes{0.2}{2011/08/07}{proper package, manual and documentation}
+% \changes{0.2}{2011/08/07}{appendix tested}
+% \changes{0.2}{2011/08/07}{fixed navigation bar}
+% \changes{0.2}{2011/08/07}{total number of frames not counting appended frames}
+% \changes{0.2}{2011/08/07}{new environment lastframe}
+% \changes{0.2}{2011/08/07}{subslideentry}
+% \changes{0.2}{2011/08/07}{inserttotalframenumberwithsub}
+% \changes{0.2}{2011/08/07}{new option nominiframes}
+% \changes{0.2}{2011/08/07}{defaults for bsf@sub...page... macros}
+% \changes{0.2}{2011/08/07}{checking .sfp file}
+%
+% \newcommand{\BSF}{\textsf{BeamerSubFrame}}
+%
+% \title{The \BSF\ Package\\[1ex]
+% Reordering frames in the PDF file without reordering the source}
+% \author{Mike Kaufmann\\\href{mailto:m.km@gmx.de}{\texttt{m.km@gmx.de}}}
+% \date{\filedate\ (v\fileversion)}
+% ^^A--------------------------------------------------------------------------
+% \maketitle
+% \begin{abstract}
+% The \BSF\ package provides a method to reorder frames in the
+% PDF file without reordering the source. Mainly, it is meant to embed or
+% append frames with details on some subject.
+% \end{abstract}
+%
+% \tableofcontents
+%
+% ^^A--------------------------------------------------------------------------
+% \section{Introduction}
+% \subsection{Why this Package}
+% Of course, usually a presentation is prepared for one occasion.
+% But sometimes a presentation is used more then once, and the audience
+% and/or the available time differs.
+%
+% For me, there are two kinds of audience. The first group are the
+% sales people, who for the most part only want to know the features
+% of a new product I developed. And the second group are the technicians,
+% who want to know everything.
+%
+% So basically, on one time I have to give a presentation in half an hour,
+% covering only the basics. But there might be questions, where I need to
+% show some details. In this case it's nice to have the necessary frames.
+% And an another time, I have to give a presentation in one hour, covering
+% also the details.
+%
+% In both cases, it would be nice to have a presentation, where normally
+% only the cursor keys are needed for navigation, and without the necessity
+% of clicking on links.
+%
+% With Beamer, one would have to create two presentation. One with the
+% frames containing details at the end, and another one with the details
+% between the other frames.
+%
+% Now here the \BSF\ package comes in handy. After some changes to the source
+% of the presentation with the details embedded, both version can be compiled
+% out of the same source. To select the version, only one option must be
+% changed.
+%
+% ^^A---------------------------------------------
+% \subsection{A Warning}
+% This package is in an early state of development (it's version
+% \fileversion). It is already useful, but there are some restrictions (see
+% \autoref{sec:restrictions}). And although it's not planned, the user
+% interface may change in the future.
+%
+% ^^A---------------------------------------------
+% \subsection{Feeback and Testing}
+% Because this package is very new and still under development, any feedback
+% is appreciated. A good location for a discussion would be the newsgroup
+% \texttt{comp.text.tex} (or \texttt{de.comp.text.tex}).
+%
+% And since Beamer offers a lot of features and it is hard to test the
+% \BSF\ package with all of them, it would be nice, if some people would
+% do some additional testing and/or provide some presentation for testing.
+%
+% ^^A---------------------------------------------
+% \subsection{Dependencies}
+% The \BSF\ package can only be used with the Beamer class (article mode
+% is not supported yet).
+%
+% Additionally, it needs the |verbatim| package.
+%
+% ^^A---------------------------------------------
+% \subsection{Legal Stuff}
+% This program is provided under the terms of the
+% \LaTeX\ Project Public License distributed from CTAN
+% archives in directory macros/latex/base/lppl.txt.
+%
+% ^^A--------------------------------------------------------------------------
+% \section{Using the Packages}
+% \subsection{Package Options}
+% The \BSF\ package has three options.
+%
+% \DescribeOpt{embed}
+% The option |embed| is used to put frames with details between the other
+% frames.
+%
+% \DescribeOpt{append}
+% The option |append| is used to remove the frames with details from the other
+% frames and append them at the end of the PDF file.
+%
+% If none of these two options is given, |embed| is used as default. Both
+% options are mutually exclusive. If both are given, the last one wins.
+%
+% \DescribeOpt{nominiframes}
+% In themes with miniframes, there are also frame symbols for appended frames
+% with details by default. If the option |nominiframes| is given, these frame
+% symbols will disappear. This option has only an effect, if the |append| option
+% is given too.
+%
+% ^^A---------------------------------------------
+% \subsection{The \texttt{subframe} Environment}
+% \DescribeEnv{subframe}
+% For frames which should be embedded or appended contitionally (i.e.\ frames
+% with details), the |subframe| environment must be used instead of the |frame|
+% environment. Basically, it works the same way as the |frame| environment,
+% i.e.\ it has the same options and arguments.
+%
+% For typesetting, the |frame| environment is used internally. In embed mode
+% (i.e.\ the |embed| option is given) it inserts the option |environment=subframe|
+% to enable the use of verbatim material in the frames. In append mode the contents
+% of the frame is written to a file. Before the contents, |\begin{frame}|, with
+% all arguments of the |subframe| environment appended, is inserted. And after
+% the contents |\end{frame}| is inserted.
+%
+% For copying the contents, the |verbatim| package is used. So in append mode
+% the |subframe| environment is treated as a |verbatim|
+% environment,\footnote{Because of this, the phrase \texttt{\bslash
+% end\{subframe\}} cannot be used in a \texttt{subframe} environment.} but
+% without typesetting anything.
+%
+% There should be no parts, sections, or subsections only containing subframes,
+% because in append mode, they would have no contents. Since it is not the
+% intention of the \BSF\ package, to move parts, sections, or subsections, this
+% was not even tested.
+%
+% ^^A---------------------------------------------
+% \subsection{Appending Frames}
+% \DescribeMacro\appendsubframes
+% To append the subframes, the macro |\appendsubframes| must be called before
+% |\end{document}|. In embed mode, the command simply does nothing. In append
+% mode it inputs the file written by the |subframe| environments.
+%
+% The command is only allowed once and it can only appear right before
+% |\end{document}|.\footnote{Both restrictions are not tested by the package yet.}
+% Disregarding this may lead to some strange errors.
+%
+% The command can be omitted to remove the subframes from the PDF file in append
+% mode. But links to them will then produce warnigs and will lead somewhere else.
+% In themes with miniframes, the links of the miniframe symbols for subframes
+% will lead to page 1.
+%
+% ^^A---------------------------------------------
+% \subsection{Conditional Execution}
+% \DescribeMacro\ifappend
+% To execute some macros or insert some text according to the mode of the
+% \BSF\ package, the marco |\ifappend| can be used. It has two arguments.
+%
+% \vspace{1ex}
+% |\ifappend{|\meta{material for append mode}|}{|\meta{material for embed mode}|}|
+%
+% \vspace{1ex}
+% \noindent
+% The first argument is inserted only in append mode and the second one only in
+% embed mode.
+%
+% The macro is intended for conditional links in frames and subframes. It can
+% be used in own macros. To do something only in one mode, the argument for the
+% other mode can be left empty.
+%
+% ^^A---------------------------------------------
+% \subsection{The \texttt{lastframe} Environment}
+% \DescribeEnv{lastframe}
+% Normally, a presentation has a last frame, containing something like ``Thanks
+% for listening'' (at least I learned it this way). But using a |frame|
+% environmet, the navigation (sidebar, miniframes, and so on) appears as if the
+% frame belongs to the last (sub)section.
+%
+% Using the |lastframe| environment, the navigation has the same appearance as
+% on the title frame.
+%
+% It has the same options and arguments as the |frame| environment, which is
+% used internally with all given arguments.. To enable the use of verbatim
+% contents, it additionally inserts the option |environment=lastframe|.
+%
+% The |lastframe| environment must be used only for the last frame (before the
+% |\appendsubframes| command), because it sets the counters for parts, sections,
+% and subsections to 0. So after a ``lastframe'', sectioning will not work
+% properly anymore.
+%
+% ^^A---------------------------------------------
+% \subsection{Inserts}
+% \DescribeMacro\inserttotalframenumber
+% Beamers |\inserttotalframenumber| was changed. In append mode it now contains
+% the number of frames without the subframes. In embed mode it contains the
+% number of frames as usual.
+%
+% \DescribeMacro\inserttotalframenumberwithsub
+% Additionally, the insert |\inserttotalframenumberwithsub| is available. It
+% inserts the total number of frames including appended subframes in append mode.
+% It is also defined in embed mode. Then it just contains the total number of
+% frames (so the same as |\inserttotalframenumber|).
+%
+% ^^A---------------------------------------------
+% \subsection{Files written}
+% The \BSF\ package writes two files.
+% \begin{description}
+% \item[\texttt{\bslash jobname.sfr}] contains the contents of all subframes.
+% The package inputs this file before the end of the document with the
+% |\appendsubframes| command. The file is written regardless of |\nofiles|.
+% \item[\texttt{\bslash jobname.sfp}] contains the information necessary for
+% miniframes. It is written indirectly, using the |.aux| file. So if
+% |\nofiles| is used, the |.sfp| file is not written too.
+% \end{description}
+% Both files are only written and used in append mode.
+%
+% ^^A---------------------------------------------
+% \subsection{Warnings and Errors}
+% Currently, there is one warning and one error in the \BSF\ package.
+%
+% When loading the package, it checks, if the Beamer class is loaded. If not,
+% an error message will be displayed and the package is not loaded. Disregarding
+% this error will therefore lead to additional errors.
+%
+% The |.sfp| file is checked at the end of the document. If it is missing,
+% corrupted or incomplete, a warning is given out. In this case some links of
+% miniframe symbols for subframes will lead to page 1. Of course this applies
+% only to themes with miniframes.
+%
+% ^^A---------------------------------------------
+% \subsection{Conditional Execution (2)}
+% \DescribeMacro\ifsubframe
+% This macro is intended to be used in themes, to make things appear differently
+% on normal frames and subframes. This could be used to set some marker on
+% subframes.\footnote{There is an example in the example file, which can be
+% generated from \texttt{beamersubframe.dtx}.} The command works regardless of
+% the mode.
+%
+% \vspace{1ex}
+% |\ifsubframe{|\meta{material for subframes}|}{|\meta{material for normal frames}|}|
+%
+% \vspace{1ex}
+% \noindent
+% The first argument is inserted only in subframes and the second one only in
+% normal frames. An unused argument may be left empty.
+%
+% ^^A---------------------------------------------
+% \subsection{The \texttt{subslideentry}}
+% \label{sec:man-subse}
+% \DescribeMacro\subslideentry
+% This is not a macro for normal users. It may be useful for people who want to
+% write their own theme, willing to do more, then defining and using templates.
+% If you are not one of these people, just skip this section.
+%
+% In append mode, the \BSF\ package writes a |\subslideentry| instead of a
+% |\slideentry| for subframes to the |.nav| file. The |\subslideentry| has the
+% same arguments as the |\slideentry|. By default, it just passes its arguments
+% to |\slideentry|. This way it does the same as |\slideentry|, independent of
+% the used theme. By redefining |\subslideentry|, it is possible to, for example,
+% make miniframes for subframes appear differently form miniframes for normal
+% frames.
+%
+% ^^A--------------------------------------------------------------------------
+% \section{The Look and Feel}
+% \subsection{In Embed Mode}
+% In embed mode, the frames containing details are between the other frames.
+% And navigation (navigation bar, sidebar and so on) behaves the same way, as
+% it would without the \BSF\ package. Of course the highlighting of section
+% and subsection names is the same too.
+%
+% ^^A---------------------------------------------
+% \subsection{In Append Mode}
+% In apend mode, the frames containing details are at the end of the PDF file.
+%
+% The navigation in the main part (the part of the PDF without the details)
+% behaves as if the frames with details are not part of the PDF. And for the
+% total number of frames, the frames with details are not counted (leading to
+% something like ``41 / 29'' for the subframes in themes with a footline like
+% AnnArbor).
+%
+% In themes with miniframes there are also frame symbols for the frames with
+% details. Clicking on the symbols leads to these frames. But if the option
+% |nominiframes| is given, the frame symbols will disappear and the symbol for
+% the normal frame before the frame with details is highlighted on the frame
+% with details.
+%
+% The navigation bar in the appended part (the part of the PDF with frames
+% containing details) behaves as follows
+% \begin{description}
+% \item[slide and frame symbol:] behave as if the appended frames where at the
+% end of the source, so leading to the next or previous slide or frame in
+% the PDF (arrows), or leading to the last or first slide of a frame.
+% \item[section and subsection symbol:] are always leading to the appropriate
+% slides in the main part of the PDF.
+% \item[presentation symbol:] leads to the first frame of the presentation or
+% the last frame of the main part (before a possible appendix).
+% \item[appendix symbol:] leads to the first or last frame of the appendix.
+% \end{description}
+%
+% The links for sections and subsections in the sidebar and others lead to the
+% first slide of the section or subsetion.
+%
+% In the navigation part of appended frames, the section and subsection names
+% are the same and the highlighting is done as if the frames where embedded.
+%
+% ^^A--------------------------------------------------------------------------
+% \section{A practical Approach}
+% \subsection{The Order of Frames}
+% If a presentation contains details on some items, there are two ways to
+% insert them.
+% \begin{enumerate}
+% \item The details can be inserted right after the according item. This is
+% useful, if it is planned to present the details.
+% \item The details can be inserted at the end. This is useful, if it is not
+% planned to present the details, but they might be needed to answer
+% question.
+% \end{enumerate}
+%
+% In both cases, links can be useful. In the first case, these are links to
+% skip the details. And in the second case, these are links to jump to and
+% return from the details.
+%
+% The first case is shown in \autoref{fig:embed} and the second in
+% \autoref{fig:append}. In both pictures the black lines denote the
+% transitions using the cursor keys, and the blue lines the transitions
+% using links. The dashed black lines are transitions by cursor keys, which
+% are normally not needed.
+%
+% \begin{figure}[htb]
+% \includegraphics[width=\textwidth]{beamersubframe-embed.pdf}
+% \caption{Frame Order with Details embedded}\label{fig:embed}
+% \end{figure}
+%
+% \begin{figure}[htb]
+% \includegraphics[width=\textwidth]{beamersubframe-append.pdf}
+% \caption{Frame Order with Details appended}\label{fig:append}
+% \end{figure}
+%
+% Of course, the way the links are arranged in the picuters is only an example.
+% There are hundreds of possibilities. And how the links are arranged the best
+% way, depends on the presentation \emph{and} on the person giving the
+% presentation. For this section, let's consider the links in the pictures
+% the ideal way.
+%
+% To use the \BSF\ package, in the source the frames must be arranged as shown
+% in \autoref{fig:embed}. By default, the frames in the PDF file are arranged
+% the same way. By just using the option |append|, the frames in the PDF file
+% will be arragned as shown in \autoref{fig:append}.
+%
+% ^^A---------------------------------------------
+% \subsection{Basic Changes to the Source}
+% To use the \BSF\ package, a few changes to the source of a presentaion must
+% be applied. In the example below, the left side shows the source before the
+% changes and the right side the source after them.
+%
+% \noindent
+% \begin{minipage}{0.49\textwidth}
+% \footnotesize
+% \begin{verbatim}
+% \begin{frame}{Frame on Foo}
+% material on foo
+% \end{frame}
+%
+% \begin{frame}
+% {Details on Foo Item b}
+% details for item b
+% \end{frame}
+%
+% \begin{frame}{Another Frame}
+% other material
+% \end{frame}
+%
+% \end{document}
+% \end{verbatim}
+% \end{minipage}
+% \hfill
+% \begin{minipage}{0.49\textwidth}
+% \footnotesize
+% \begin{verbatim}
+% \begin{frame}{Frame on Foo}
+% material on foo
+% \end{frame}
+%
+% \begin{subframe}
+% {Details on Foo Item b}
+% details for item b
+% \end{subframe}
+%
+% \begin{frame}{Another Frame}
+% other material
+% \end{frame}
+% \appendsubframes
+% \end{document}
+% \end{verbatim}
+% \end{minipage}
+%
+% Here, the |frame| environment for the frame with details was changed to the
+% |subframe| environment, and the command |\appendsubframes| was inserted
+% before |\end{document}|. This is the minimum of changes necessary.
+%
+% It is not necessary, to change the arguments of subframes. Also, there is no
+% need to change the contents of subframes. Even the |fragile| option (for
+% verbatim material) will work, because the |subframe| environment automatically
+% adds the option |environment=subframe|.
+%
+% ^^A---------------------------------------------
+% \subsection{Conditional Links}
+% \label{sec:clinks}
+% How links are used and arranged, it totally up to the user, because this is
+% highly individual. But nevertheless, links in embed mode should be different
+% from links in append mode. For example, a link on a frame before a subframe
+% (or a group of subframes) with details should skip them in embed mode, while
+% in append mode the same link should lead to the subframe (or the first
+% subframe of the group).
+%
+% Let's stay with the examples shown in \autoref{fig:embed} and
+% \autoref{fig:append}.
+%
+% The link ``Skip Details'' on slide 2 of ``frame on foo'' in embed mode is
+% replaced by a link ``Goto Details'' in append mode. In the first case the
+% destination is slide 3 of ``frame on foo'' and in the second case it is
+% slide 1 of ``details on foo item b''.
+%
+% Let's say, ``frame on foo'' has a label ``lfoo'', given as option |label=lfoo|
+% to the |frame| environment (this is also necessary, if the \BSF\ package is
+% not used). For append mode a label must be added to the subframe ``details
+% on foo item b''. Let's call it ``ldfoob''.
+%
+% For embed mode the link can be realised with
+% \begin{verbatim}
+% \uncover<2>{\hyperlink{lfoo<3>}{\beamerskipbutton{Skip Details}}}
+% \end{verbatim}
+% and for append mode with
+% \begin{verbatim}
+% \uncover<2>{\hyperlink{ldfoob}{\beamergotobutton{Goto Details}}}
+% \end{verbatim}
+%
+% In order to make the link work as expected in both modes, without the need to
+% change the source, |\ifappend| can be used like this:
+% \begin{verbatim}
+% \ifappend{\uncover<2>{\hyperlink{ldfoob}%
+% {\beamergotobutton{Goto Details}}}}%
+% {\uncover<2>{\hyperlink{lfoo<3>}%
+% {\beamerskipbutton{Skip Details}}}}
+% \end{verbatim}
+%
+% The link to return from the frames with details can then be done this way:
+% \begin{verbatim}
+% \ifappend{\uncover<4>{\hyperlink{lfoo<3>}%
+% {\beamerreturnbutton{Return from Details}}}}{}
+% \end{verbatim}
+% This has the disatvantage, that in embed mode there is no link, and therefore
+% the layout will differ between embed mode and append mode. But this can be
+% fixed by adding an invisible button like this:
+% \begin{verbatim}
+% \ifappend{\uncover<4>{\hyperlink{lfoo<3>}
+% {\beamerreturnbutton{Return from Details}}}}%
+% {\visible<0>{\beamerreturnbutton{Return from Details}}}
+% \end{verbatim}
+%
+% Typing all this every time can be a bit exhausting. So let's define some macros.
+%
+% For skipping or going to the details, a macro called |\linkdetail| can be
+% defined as
+% \begin{verbatim}
+% \newcommand<>{\linkdetail}[4]{%
+% \ifappend{\uncover#5{\hyperlink{#3}{\beamergotobutton{#4}}}}%
+% {\uncover#5{\hyperlink{#1}{\beamerskipbutton{#2}}}}
+% }
+% \end{verbatim}
+%
+% The command is overlay-aware and it has four arguments:
+% \begin{description}
+% \item[\texttt{\#1}] is the label for the destination to go to in order to skip
+% the details.
+% \item[\texttt{\#2}] is the text for the link to skip the details.
+% \item[\texttt{\#3}] is the label for the destination to go to in order to jump
+% to the details.
+% \item[\texttt{\#4}] is the text for the link to go to the details.
+% \end{description}
+% Now the link on the frame before the subframe can be written as
+% \begin{verbatim}
+% \linkdetails<2>{lfoo<3>}{Skip Details}{ldfoob}{Goto Details}
+% \end{verbatim}
+%
+% For returning from the details, a macro called |\returndetail| can be
+% defined as
+% \begin{verbatim}
+% \newcommand<>{\returndetail}[2]{%
+% \ifappend{\uncover#3{\hyperlink{#1}{\beamerreturnbutton{#2}}}}%
+% {\visible<0>{\beamerreturnbutton{#2}}}
+% }
+% \end{verbatim}
+%
+% The command is also overlay-aware and it has two arguments:
+% \begin{description}
+% \item[\texttt{\#1}] is the label for the destination to go to in order to return
+% from details.
+% \item[\texttt{\#2}] is the text for the link to return from details.
+% \end{description}
+% And the link on the subframe can be written as
+% \begin{verbatim}
+% \returndetails<4>{lfoo<3>}{Return from Details}
+% \end{verbatim}
+%
+% Of course, these are only examples. How links are done, is up to the user.
+% And therefore, it is also up to the user, how commands like |\linkdetail| and
+% |\returndetail| are defined.
+%
+% Another example: I like my links to be active only on the slide, they are
+% needed. On all other slides, they should be covered and inactive. So I definded
+% the macros a bit different:
+% \begin{verbatim}
+% \newcommand<>{\linkdetail}[4]{%
+% \ifappend{\uncover#5{\alt#5{\hyperlink{#3}{\beamergotobutton{#4}}}%
+% {\beamergotobutton{#4}}}}%
+% {\uncover#5{\alt#5{\hyperlink{#1}{\beamerskipbutton{#2}}}%
+% {\beamerskipbutton{#2}}}}
+% }
+% \newcommand<>{\returndetail}[2]{%
+% \ifappend{\uncover#3{\alt#3{\hyperlink{#1}{\beamerreturnbutton{#2}}}%
+% {\beamerreturnbutton{#2}}}}{}
+% }
+% \end{verbatim}
+%
+% ^^A---------------------------------------------
+% \subsection{An Example}
+% \subsubsection{Without \BSF}
+% As an example, let's realise frames in the order shown in \autoref{fig:embed}
+% and \autoref{fig:append}. To show the difference of the source with and
+% without using the \BSF\ package, first the order shown in \autoref{fig:embed}
+% is realised without \BSF.
+%
+% \begin{verbatim}
+% \documentclass{beamer}
+% \usepackage{lmodern}
+% \usepackage[T1]{fontenc}
+%
+% \begin{document}
+% \begin{frame}{some frame}
+% \begin{itemize}[<+->]
+% \item there is foo
+% \item foo is good
+% \item and there is bar
+% \item bar is good too
+% \end{itemize}
+% \end{frame}
+%
+% \begin{frame}<1-2>[label=lfoo]{frame on foo}
+% \begin{itemize}[<+->]
+% \item item a
+% \item item b \uncover<2>{\hyperlink{lfoo<3>}%
+% {\beamerskipbutton{Skip Details}}}
+% \item item c
+% \item item d
+% \end{itemize}
+% \end{frame}
+%
+% \begin{frame}{details on foo item b}
+% \begin{itemize}[<+->]
+% \item item b.1
+% \item item b.2
+% \item item b.3
+% \item item b.4
+% \end{itemize}
+% \end{frame}
+%
+% \begin{frame}
+% \frametitle{more details on foo item b}
+% \begin{itemize}[<+->]
+% \item item b.5
+% \item item b.6
+% \item item b.7
+% \item item b.8
+% \end{itemize}
+% \end{frame}
+%
+% \againframe<3->{lfoo}
+%
+% \begin{frame}{frame on bar}
+% \begin{itemize}[<+->]
+% \item item w
+% \item item x
+% \item item y
+% \item item z \uncover<4>{\hyperlink{lother}%
+% {\beamerskipbutton{Skip Details}}}
+% \end{itemize}
+% \end{frame}
+%
+% \begin{frame}
+% \frametitle{details on bar item z}
+% \begin{itemize}[<+->]
+% \item item z.1
+% \item item z.2
+% \item item z.3
+% \item item z.4
+% \end{itemize}
+%
+% \vspace{2ex}
+% \uncover<4>{\hyperlink{lother}{\beamerskipbutton{Skip further Details}}}
+% \end{frame}
+%
+% \begin{frame}{more details on bar item z}
+% \begin{itemize}[<+->]
+% \item item z.5
+% \item item z.6
+% \item item z.7
+% \item item z.8
+% \end{itemize}
+% \end{frame}
+%
+% \begin{frame}[label=lother]{another frame}
+% \begin{itemize}[<+->]
+% \item conclusion 1
+% \item conclusion 2
+% \item conclusion 3
+% \item conclusion 4
+% \end{itemize}
+% \end{frame}
+% \end{document}
+% \end{verbatim}
+%
+% ^^A-------------------------
+% \subsubsection{With \BSF}
+% And now the same order of frames, but this time using the \BSF\ package and
+% with some comments.
+% \begin{verbatim}
+% \documentclass{beamer}
+% \usepackage{lmodern}
+% \usepackage[T1]{fontenc}
+% \end{verbatim}
+% Here, the option |embed| has to be changed to |append|, to get the order as
+% shown in \autoref{fig:append}.
+% \begin{verbatim}
+% \usepackage[embed]{beamersubframe}
+% \end{verbatim}
+% The two commands, as explained in \autoref{sec:clinks}.
+% \begin{verbatim}
+% \newcommand<>{\linkdetail}[4]{%
+% \ifappend{\uncover#5{\hyperlink{#3}{\beamergotobutton{#4}}}}%
+% {\uncover#5{\hyperlink{#1}{\beamerskipbutton{#2}}}}
+% }
+% \newcommand<>{\returndetail}[2]{%
+% \ifappend{\uncover#3{\hyperlink{#1}{\beamerreturnbutton{#2}}}}%
+% {\visible<0>{\beamerreturnbutton{#2}}}
+% }
+% \end{verbatim}
+% The next command realises a link with the same destination (argument |#1|) for
+% both modes, but different texts (|#2| for embed mode and |#3| for append mode.
+% \begin{verbatim}
+% \newcommand<>{\linkdifftext}[3]{%
+% \ifappend{\uncover#4{\hyperlink{#1}{\beamergotobutton{#3}}}}%
+% {\uncover#4{\hyperlink{#1}{\beamerskipbutton{#2}}}}
+% }
+% \end{verbatim}
+% The template defined below is an example for the use of |\ifsubframe|. It puts
+% the text ``detail'' in the lower left corner of subframes and ``main part'' in
+% the lower left corner of normal frames. Careful: it replaces a sidebar, so
+% this will not work with themes like Berkeley.
+% \begin{verbatim}
+% \defbeamertemplate*{sidebar left}{bsf test}[1][50]
+% {
+% \vfill%
+% \rlap{\hskip0.1cm\hbox{\color{fg!#1!bg}\tiny{\ifsubframe{detail}{main part}}}}%
+% \vskip2pt%
+% }
+%
+% \begin{document}
+% \begin{frame}{some frame}
+% \begin{itemize}[<+->]
+% \item there is foo
+% \item foo is good
+% \item and there is bar
+% \item bar is good too
+% \end{itemize}
+% \end{frame}
+%
+% \begin{frame}<1-2>[label=lfoo]{frame on foo}
+% \begin{itemize}[<+->]
+% \item item a
+% \end{verbatim}
+% Here, the link was changed.
+% \begin{verbatim}
+% \item item b \linkdetail<2>{lfoo<3>}{Skip Details}{ldfoob}{Goto Details}
+% \item item c
+% \item item d
+% \end{itemize}
+% \end{frame}
+% \end{verbatim}
+% For the next two frames the environment was changed to |subframe|. And for the
+% first, the label |ldfoob| was added.
+% \begin{verbatim}
+% \begin{subframe}[label=ldfoob]{details on foo item b}
+% \begin{itemize}[<+->]
+% \item item b.1
+% \item item b.2
+% \item item b.3
+% \item item b.4
+% \end{itemize}
+% \end{subframe}
+%
+% \begin{subframe}
+% \frametitle{more details on foo item b}
+% \begin{itemize}[<+->]
+% \item item b.5
+% \item item b.6
+% \item item b.7
+% \item item b.8
+% \end{itemize}
+%
+% \vspace{2ex}
+% \end{verbatim}
+% The link to return from details was added. Because there was no link in the
+% version without \BSF\ the layout of the frame is now changed compared to that
+% version. But it doesn't change from one mode to the other, because of the way
+% |\returndetails| was definded.
+% \begin{verbatim}
+% \returndetail<4>{lfoo<3>}{Return from Details}
+% \end{subframe}
+%
+% \againframe<3->{lfoo}
+%
+% \begin{frame}{frame on bar}
+% \begin{itemize}[<+->]
+% \item item w
+% \item item x
+% \item item y
+% \end{verbatim}
+% Again, the link was changed here.
+% \begin{verbatim}
+% \item item z \linkdetail<4>{lother}{Skip Details}{ldbarz}{Goto Details}
+% \end{itemize}
+% \end{frame}
+% \end{verbatim}
+% For the next two frames the environment was changed to |subframe| also. And
+% for the first, the label |ldbarz| was added.
+% \begin{verbatim}
+% \begin{subframe}[label=ldbarz]
+% \frametitle{details on bar item z}
+% \begin{itemize}[<+->]
+% \item item z.1
+% \item item z.2
+% \item item z.3
+% \item item z.4
+% \end{itemize}
+%
+% \vspace{2ex}
+% \end{verbatim}
+% This link was changed, so the text differs between modes. But it would have
+% been possible here, to leave the link unchanged.
+% \begin{verbatim}
+% \linkdifftext<4>{lother}{Skip further Details}{Return from Details}
+% \end{subframe}
+%
+% \begin{subframe}{more details on bar item z}
+% \begin{itemize}[<+->]
+% \item item z.5
+% \item item z.6
+% \item item z.7
+% \item item z.8
+% \end{itemize}
+%
+% \vspace{2ex}
+% \end{verbatim}
+% Again, the link was added here, resulting also in a change off layout compared
+% to the first version.
+% \begin{verbatim}
+% \returndetail<4>{lother}{Return from Details}
+% \end{subframe}
+%
+% \begin{frame}[label=lother]{another frame}
+% \begin{itemize}[<+->]
+% \item conclusion 1
+% \item conclusion 2
+% \item conclusion 3
+% \item conclusion 4
+% \end{itemize}
+% \end{frame}
+% \end{verbatim}
+% And finally, the |\appendsubframes| command was inserted here.
+% \begin{verbatim}
+% \appendsubframes
+% \end{document}
+% \end{verbatim}
+%
+% The source of the second version is available as example file, which can be
+% generated from |beamersubframe.dtx|.
+%
+% ^^A--------------------------------------------------------------------------
+% \section{Restrictions}
+% \label{sec:restrictions}
+% Since this is an early version of the \BSF\ package, there are some
+% restrictions.
+%
+% \begin{itemize}
+% \item The package was only tested with Beamer mode |beamer|. Using other
+% modes may lead to strange errors.
+% \item Supporting material, like notes, is not tested yet.
+% \item Lectures are not tested yet.
+% \item There is no support for subsubsections (not even tested). And it is not
+% planned at all.
+% \item There is no |\subframe| command.
+% \item There is no |\againsubframe| command.
+% \end{itemize}
+%
+% ^^A--------------------------------------------------------------------------
+% \section{Testing}
+% For testing the \BSF\ package the following themes were used:
+% \begin{itemize}
+% \item Dresden
+% \item Darmstadt
+% \item Berkeley
+% \item Montpellier
+% \item Malmoe
+% \item AnnArbor
+% \end{itemize}
+%
+% The themes were used without options. They where choosen to cover all types of
+% navigation possible with the themes delivered with Beamer. If I missed
+% something and this doesn't work, please let me know. If there are other things
+% not working (e.g.\ some inserts), please let me know too. In both cases, a
+% file for testing would be nice.
+%
+% ^^A--------------------------------------------------------------------------
+% \section{ToDo}
+% Although the \BSF\ package is already useful, there are a lot of things left
+% to do:
+% \begin{description}
+% \item[testing] Beamer has a lot of features, an many of them are still
+% not tested.
+% \item[Beamer modes] I have to admit, I didn't even test them.
+% \item[notes] The same here.
+% \item[lectures] And again, not tested.
+% \item[macros] There are commands, which would be nice to have, like
+% |\subframe|, |\againsubframe|, and |\subnote| (to get notes between
+% frames moved too)
+% \item[levels] With multiple levels of subframes, it would be possible, to have
+% details on details (on details on \dots). And then, one could embed the
+% first $n$ levels of details, and append the others.
+% \end{description}
+%
+% The list is not complete. If someone has an item to add, please let me know.
+%
+% ^^A--------------------------------------------------------------------------
+% \StopEventually{\newpage\PrintIndex}
+% ^^A \PrintChanges}
+%
+% ^^A--------------------------------------------------------------------------
+% \newpage
+% \section{The Code}
+% \subsection{The Usual}
+% First the usual things.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{beamersubframe}[\filedate\space
+ v\fileversion\space reordering beamer frames]
+% \end{macrocode}
+%
+% ^^A---------------------------------------------
+% \subsection{Check the Class}
+% Since the \BSF\ package only works with the Beamer class and article mode is
+% not supported yet, check for the Beamer class. If it is not loaded, throw an
+% error message and stop loading the package.
+% \begin{macrocode}
+\@ifclassloaded{beamer}{}{%
+ \PackageError{beamersubframe}{%
+ The package works only with the beamer class,\MessageBreak
+ therefore it is not loaded.
+ }{%
+ The package is not loaded, because it needs the\MessageBreak
+ beamer class. Continuing may lead to additional\MessageBreak
+ errors because of undefined commands.
+ }
+ \endinput
+}
+% \end{macrocode}
+%
+% ^^A---------------------------------------------
+% \subsection{``Variables''}
+% \begin{macro}{\if@bsf@append}
+% First there is the main flag to distinguish between append mode and embed mode.
+% \begin{macrocode}
+\newif\if@bsf@append
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@bsf@miniframes}
+% This flag is true by default. It is set to false by the option |nominiframes|.
+% \begin{macrocode}
+\newif\if@bsf@miniframes
+\@bsf@miniframestrue
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@bsf@subframe}
+% This flag is set to true for subframes in both modes. For normal frames it is
+% false.
+% \begin{macrocode}
+\newif\if@bsf@subframe
+\@bsf@subframefalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@bsf@nosfnum}
+% This flag is used for checking the |.sfp| file.
+% \begin{macrocode}
+\newif\if@bsf@nosfnum
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@bsf@firstline}
+% This flag is needed to write |\begin{frame}| in front of the arguments of a
+% |subframe| environment to the |.sfr| file in append mode.
+% \begin{macrocode}
+\newif\if@bsf@firstline
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@bsf@firstpart}
+% This flag is needed by |\bsfrestorepart| to initialize some macros used as
+% variables instead of writing the |\bsf@partpages| entry to the |.nav| file.
+% \begin{macrocode}
+\newif\if@bsf@firstpart
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@bsf@firstsection}
+% This flag is needed by |\bsfrestoresection| to initialize some macros used as
+% variables instead of writing the |\bsf@sectionpages| entry to the |.nav| file.
+% \begin{macrocode}
+\newif\if@bsf@firstsection
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@bsf@firstsubsection}
+% This flag is needed by |\bsfrestoresubsection| to initialize some macros used
+% as variables instead of writing the |\bsf@subsectionpages| entry to the |.nav|
+% file.
+% \begin{macrocode}
+\newif\if@bsf@firstsubsection
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@bsf@nosubsection}
+% This flag is used by |\bsfrestoresection| and |\bsfrestoresubsection| to
+% determine, if a section contains any subsections.
+% \begin{macrocode}
+\newif\if@bsf@nosubsection
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@bsf@prevnosubsection}
+% This flag contains the final state of |\if@bsf@nosubsection| for the previous
+% section.
+% \begin{macrocode}
+\newif\if@bsf@prevnosubsection
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bsf@frame@param}
+% This token register is used to store the first three arguments of the
+% |subframe| environment in embed mode, after adding the option
+% |environmet=subframe|. The contents is passed to the |frame| environmet as
+% its first three arguments.
+% \begin{macrocode}
+\newtoks\bsf@frame@param
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bsf@sfrout}
+% The stream used to write the |.sfr| file. It holds the contents of all
+% subframes. The file is only written and used in append mode.
+% \begin{macrocode}
+\newwrite\bsf@sfrout
+% \end{macrocode}
+% \end{macro}
+%
+% ^^A---------------------------------------------
+% \subsection{Options and Packages}
+% \begin{option}{embed}
+% The options are rather simple. The option |embed| just sets |\if@bsf@append|
+% to false.
+% \begin{macrocode}
+\DeclareOption{embed}{\@bsf@appendfalse}
+% \end{macrocode}
+% \end{option}
+% \begin{option}{append}
+% And |append| sets |\if@bsf@append| to true.
+% \begin{macrocode}
+\DeclareOption{append}{\@bsf@appendtrue}
+% \end{macrocode}
+% \end{option}
+% \begin{option}{nominiframes}
+% The option |nominiframes| sets |\if@bsf@miniframes| to false.
+% \begin{macrocode}
+\DeclareOption{nominiframes}{\@bsf@miniframesfalse}
+% \end{macrocode}
+% \end{option}
+% The default is set and the options are processed.
+% \begin{macrocode}
+\ExecuteOptions{embed}
+\ProcessOptions*\relax
+% \end{macrocode}
+% And the verbatim package is loaded.
+% \begin{macrocode}
+\RequirePackage{verbatim}
+% \end{macrocode}
+
+% ^^A---------------------------------------------
+% \subsection{Navigation}
+% \subsubsection{Sidebar and Headline}
+% To get the highlighting of sections and subsections on appened subframes as if
+% the frames were embedded, some counters must be restored to the values, they
+% had at the point, the subframe appeared in the source. Additionally, for the
+% headline some inserts must be restored.
+%
+% To achieve this, the |subframe| environment writes a macro with all necessary
+% arguments to the |.sfr| file. This is done for each subframe, before its
+% contents, embedded in a |frame| environmet, is written to the file (see
+% \autoref{sec:code-subframe}).
+%
+% \begin{macro}{\bsfrestore}
+% The macro is called |\bsfrestore|. It is executed, when the |.sfr| file is
+% loaded. It restores the counters for part (|#1|), section (|#2|), and
+% aubsection (|#3|). It also restores the counter subsectionslide (|#4|), which
+% is needed for miniframes.
+%
+% Then |\insertsectionhead| and |\insertsubsectionhead| are restored to their
+% meanings at the point, the subframe appeard in the source. These meanings were
+% stored to the two macros |\bsf@sectionhead|\meta{part}|.|\meta{section} and
+% |\bsf@subsectionhead|\meta{part}|.|\meta{section}|.|\meta{subsection} by the
+% |subframe| environment (see \autoref{sec:code-subframe}).
+%
+% After that, the inserts for the part, section, and subsection numbers are
+% restored.
+%
+% The macro is also used by the |lastframe| environment (see
+% \autoref{sec:code-lastframe}).
+% \begin{macrocode}
+\newcommand{\bsfrestore}[4]{%
+ \setcounter{part}{#1}%
+ \setcounter{section}{#2}%
+ \setcounter{subsection}{#3}%
+ \setcounter{subsectionslide}{#4}%
+ \expandafter\let\expandafter\insertsectionhead
+ \csname bsf@sectionhead\the\c@part.\the\c@section\endcsname
+ \expandafter\let\expandafter\insertsubsectionhead
+ \csname bsf@subsectionhead\the\c@part.\the\c@section.\the\c@subsection\endcsname
+ \def\insertpartheadnumber{#1}%
+ \def\insertsectionheadnumber{#2}%
+ \def\insertsubsectionheadnumber{#3}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% ^^A-------------------------
+% \subsubsection{Miniframes}
+% \label{sec:code-miniframes}
+% To typset miniframes, Beamer writes a |\slideentry| with the necessary
+% arguments to the |.nav| file. Because miniframes should appear, as if the
+% subframes are embedded, the |subframe| environment has to write such an entry
+% at the point, the subframe appears in the source. But instead of a
+% |\slideentry|, \BSF\ writes a |\subslideentry| (see \autoref{sec:man-subse}).
+%
+% Argument |#4| of |\slideentry| contains the start page and the end page of the
+% frame. Unfortunately, for subframes these numbers are unknown, until the
+% |.sfr| file was loaded by |\appendsubframes|.
+%
+% To get around this, for each subframe two macros are used. Their names \linebreak
+% are
+% |\bsf@substartpage|\meta{part}|.|\meta{section}|.|\meta{subsection}|.|\meta{subsectionslide}
+% and \linebreak
+% |\bsf@subendpage|\meta{part}|.|\meta{section}|.|\meta{subsection}|.|\meta{subsectionslide}.
+% Here \meta{part}, \meta{section} and so on are the numbers.
+%
+% Now at the point where the subframe appears in the souce, the |\subslideentry|
+% is written. Instead of the unknown frame numbers, it contains the sequence
+% |{\bsf@usenum{bsf@substartpage...}/\bsf@usenum{bsf@subendpage...}}| as argument
+% |#4|. After a subframe was typeset by loading the |.sfr| file, the necessary
+% information is written to the |.sfp| file. In the next \TeX\ run, when loading
+% the |.sfp| file at the beginning of the document (see \autoref{sec:code-beginend}),
+% these macros are all defined.
+%
+% \begin{macro}{\bsf@subnum}
+% The first macro involved is just a shortcut to get the numbers.
+% \begin{macrocode}
+\def\bsf@subnum{%
+ \the\c@part.\the\c@section.\the\c@subsection.\the\c@subsectionslide
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Beamer uses the macro |\beamer@writeslidentry| to write the |\slideentry| and
+% the |\beamer@framepages| entry (used for the navigation bar) to the |.nav|
+% file. For subframes this is split into two macros.
+%
+% \begin{macro}{\beamer@writeslidentry@miniframes}
+% The |\subslideentry| is written by |\beamer@writeslidentry@miniframes|. The
+% macro is called directly by the |subframe| environment (see
+% \autoref{sec:code-subframe}).
+% \begin{macrocode}
+\def\beamer@writeslidentry@miniframes{%
+ \addtocontents{nav}%
+ {\protect\headcommand{%
+ \protect\subslideentry{\the\c@section}{\the\c@subsection}%
+ {\the\c@subsectionslide}%
+ {\protect\bsf@usenum{bsf@substartpage\bsf@subnum}/%
+ \protect\bsf@usenum{bsf@subendpage\bsf@subnum}}%
+ {\lastsubsection}{\the\c@part}}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\beamer@writeslidentry@navbar}
+% The |\beamer@framepages| entry is written by |\beamer@writeslidentry@navbar|.
+% And it also writes the |\bsfsubframepages| entry to the |.sfp| file.
+%
+% This macro is used to replace |\beamer@writeslidentry|, before the |.sfr| file
+% is loaded. This is done in |\appendsubframes| (see \autoref{sec:code-appendsub}).
+% \begin{macrocode}
+\def\beamer@writeslidentry@navbar{%
+ \expandafter\beamer@ifempty\expandafter{\beamer@framestartpage}{}% does not happen normally
+ {%else
+ \addtocontents{nav}%
+ {\protect\headcommand{%
+ \protect\beamer@framepages{\beamer@framestartpage}{\beamer@frameendpage}}}%
+ \addtocontents{sfp}{%
+ \protect\bsfsubframepages{\the\c@part}{\the\c@section}{\the\c@subsection}%
+ {\the\c@subsectionslide}{\beamer@framestartpage}{\beamer@frameendpage}}%
+ \clearpage\beamer@notesactions%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\subslideentry}
+% The |\subslideentry| is initialized in a way that it does the same as the
+% |\slideentry|. Because |\slideentry| is refedined by some themes, |\let| can
+% not be used here.
+% \begin{macrocode}
+\def\subslideentry{\slideentry}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bsfsubframepages}
+% The |.sfp| file contains one |\bsfsubframepages| entry for each subframe. The
+% arguments are the part number (|#1|), the section number (|#2|), the subsection
+% number (|#3|), the subsectionslide number (|#4|), and the first (|#5|) and the
+% last page of the subframe (|#6|).
+%
+% When the |.sfp| file is loaded, each |\bsfsubframepages| defines two macros
+% |\bsf@substartpage...| and |\bsf@subendpage...| used by the |\subslideentry|.
+% \begin{macrocode}
+\def\bsfsubframepages#1#2#3#4#5#6{%
+ \expandafter\def\csname bsf@substartpage#1.#2.#3.#4\endcsname{#5}%
+ \expandafter\def\csname bsf@subendpage#1.#2.#3.#4\endcsname{#6}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bsf@usenum}
+% The macro |\bsf@usenum|, used in the |\subslideentry|, sets a default in case
+% the |\bsf@substartpage...| and |\bsf@subendpage...| macros are not defined due
+% to a missing, corrupted or incomplete |.sfp| file. Without this, there could
+% be errors which would persist on every subsequent run of \TeX.
+% \begin{macrocode}
+\def\bsf@usenum#1{%
+ \@ifundefined{#1}{1}{\csname #1\endcsname}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bsf@checksfp}
+% In order to warn the user about a missing, corrupted or incomplete |.sfp| file,
+% the file is checked. This is done indirectly by checking, if all
+% |\bsf@substartpage...| and |\bsf@subendpage...| macros in the current |.nav|
+% file are defined.
+%
+% For this all commands in the |.nav| file are executed using Beamers |\dohead|
+% command. Because some of the commands would typeset something, they are
+% disabled and everything is done in a group to keep the changes local.
+%
+% The macro |\bsf@usenum| is also redefined to set the flag |\if@bsf@nosfnum| to
+% true in case one of the checked macros is undefined.
+% \begin{macrocode}
+\def\bsf@checksfp{%
+ \begingroup
+ \@bsf@nosfnumfalse
+ \def\bsf@usenum##1{%
+ \@ifundefined{##1}{\@bsf@nosfnumtrue}{}}
+ \def\slideentry##1##2##3##4##5##6{}%
+ \def\partentry##1##2{}%
+ \def\sectionentry##1##2##3##4##5{}%
+ \def\beamer@subsectionentry##1##2##3##4##5{}%
+ \def\subslideentry##1##2##3##4##5##6{%
+ \bsf@checksfnum(##4)}%
+ \dohead
+ \if@bsf@nosfnum
+ \PackageWarningNoLine{Beamer SubFrame}{%
+ Missing, incomplete or corrupted file\MessageBreak
+ \jobname.sfp! Links for miniframes of\MessageBreak
+ subframes may be wrong. Please run TeX\MessageBreak
+ again}
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bsf@checksfnum}
+% The macro |\bsf@checksfnum| is just used by |\bsf@checksfp| to get rid of the
+% slash in argument |#4| of the |\subslideentry|.
+% \begin{macrocode}
+\def\bsf@checksfnum(#1/#2){#1#2}
+% \end{macrocode}
+% \end{macro}
+%
+% ^^A-------------------------
+% \subsubsection{Navigation Bar}
+% Getting the navigation bar right takes some effort. First lets take a look,
+% what Beamer does to get the necessary information for the navigation bar.
+%
+% \paragraph{How Beamer does it}~\\
+% Beamer writes several different entries to the |.nav| file.
+% \begin{description}
+% \item[\texttt{\bslash beamer@framepages}] with the first and the last page of
+% the frame as arguments. It is written for every frame at its end.
+% \item[\texttt{\bslash beamer@subsectionpages}] with the first and the last
+% page of the subsection as arguments. It is written by the |\subsection|
+% command for the previous subsection, as well as by |\section| and
+% |\part| and the end of the document for the last subsection.
+% \item[\texttt{\bslash beamer@sectionpages}] with the first and the last page
+% of the section as arguments. It is written by the |\section| command for
+% the previous section, as well as by |\part| and the end of the document
+% for the last section.
+% \item[\texttt{\bslash beamer@partpages}] with the first and the last page of
+% the part as arguments. It is written by the |\part| command for the
+% previous part and the end of the document for the last part.
+% \item[\texttt{\bslash beamer@documentpages}] with the last page of the
+% documnet as argument. It is written at the end of the document.
+% \end{description}
+%
+% The macros in the |.nav| file are executed once for every page (i.e.\ slide).
+% By this the entry |\beamer@framepages| sets the macro |\beamer@startpageofframe|
+% to its first argument and |\beamer@endpageofframe| to its second argument, but
+% only if the current page is $\ge$ than the first argument and $\le$ than the
+% second one. Similar macros are set the same way by the other entries.
+%
+% The frame icon is then typeset in a way, that
+% \begin{itemize}
+% \item the left arrow points to page |\beamer@startpageofframe| $-1$,
+% \item the left part of the frame symbol points to page |\beamer@startpageofframe|,
+% \item the right part of the frame symbol points to page |\beamer@endpageofframe|,
+% \item and the right arrow points to page |\beamer@endpageofframe| $+1$.
+% \end{itemize}
+% The arrows are limited 1 or |\beamer@endpageofdocument| respectively. The icons
+% for subsections and sections are typeset in a similar way.
+%
+% The right part of the presentation symbol or (if there is an appendix) of the
+% appendix symbol will point to page |\beamer@endpageofdocument|.
+
+% \paragraph{How \BSF\ does it}~\\
+% The frame icon should point to the previous or next frame or subframe in the
+% PDF file. This is simply achieved by writing the |\beamer@framepages| entry
+% with |\beamer@writeslidentry@navbar| (see \autoref{sec:code-miniframes}) for
+% every subframe.
+%
+% The section icon should point to the first and last page of the section the
+% subframe belongs to in the main part. For this, the first page of the first
+% and the last page of the last subframe of a section is needed also. The
+% information is stored in two steps.
+% \begin{enumerate}
+% \item A macro |\bsfrestoresection| is written to the |.sfr| file for each
+% section. Its arguments are the number of the previous section and the
+% first page of the section just started.
+% \item When loading the |.sfr| file, the first |\bsfrestoresection| entry
+% initializes some makros (used as variables). All subsequent entries
+% write a |\bsf@sectionpages| entry to the |.nav| file, which has the
+% necessary pages as arguments.
+% \end{enumerate}
+% For parts and subsections corresponding entries are written to the files. And
+% for the last part, section, and subsection |\bsf@...pages| entries are written
+% after appending the subframes.
+%
+% The |\beamer@...pages| entries written by Beamer at the end of the document
+% would mix up the links of the navigation bar. It is not possible to prevent
+% writing these entries. Instead they are disabled after appending the subframes.
+% Since they would stay disabled for all pages after the first, they are
+% reenabled at the beginning of the |.nav| file. Also, these entries have to be
+% written before appending the subframes, in order to make the navigation bar
+% work correctly for the last section and subsection in the main part.
+%
+% Since this is also done for the |\beamer@documentpages| entry, the right
+% arrows of the section and subsection icons are limited to the last page of the
+% main part, i.e.\ the page before the first subframe. The same applies to the
+% right part of the presentation or appendix symbol.
+%
+% Unfortunately, this would apply to the right arrows of the slide icon and the
+% frame icon too. Therefore the package writes a |\bsf@documentpages| entry to
+% the |.nav| file after appending the subframes. Additionally, two macros of
+% Beamer are redefined to use this information, instead of the information of
+% the |\beamer@documentpages| entry.
+%
+% \paragraph{The Macros}~\\
+% Lets start with the two redefined macros. The originals are defined in
+% \textsf{beamerbasenavigation.sty}.
+%
+% \begin{macro}{\hyperlinkslidenext}
+% The new definition of |\hyperlinkslidenext| uses |\bsf@nextpage| instead of
+% |\beamer@nextpage|.
+% \begin{macrocode}
+\def\hyperlinkslidenext{%
+ \bsf@nextpage\c@page%
+ \hyperlink{Navigation\the\beamer@tempcount}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hyperlinkframestartnext}
+% The new definition of |\hyperlinkframestartnext| also uses |\bsf@nextpage|
+% instead of |\beamer@nextpage|.
+% \begin{macrocode}
+\def\hyperlinkframestartnext{%
+ \bsf@nextpage\beamer@endpageofframe%
+ \hyperlink{Navigation\the\beamer@tempcount}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bsf@nextpage}
+% The macro |\bsf@nextpage| works like |\beamer@nextpage| (from
+% \textsf{beamerbasenavigation.sty}), but it uses |\bsf@endpageofdocument| as
+% the last page for links, instead of |\beamer@endpageofdocument|.
+% \begin{macrocode}
+\def\bsf@nextpage#1{%
+ \beamer@tempcount=#1%
+ \advance\beamer@tempcount by1\relax%
+ \ifnum\beamer@tempcount>\bsf@endpageofdocument%
+ \beamer@tempcount=\bsf@endpageofdocument%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bsf@documentpages}
+% The |\bsf@endpageofdocument| is defined by the |\bsf@documentpages| entry of
+% the |.nav| file.
+% \begin{macrocode}
+\def\bsf@documentpages#1{\def\bsf@endpageofdocument{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bsf@endpageofdocument}
+% And |\bsf@endpageofdocument| is initialized to reflect the original.
+% \begin{macrocode}
+\def\bsf@endpageofdocument{\beamer@endpageofdocument}
+% \end{macrocode}
+% \end{macro}
+%
+% To disable and reenable the |\beamer@...pages| entries, first
+% \begin{macro}{\beamer@partpages@orig}
+% the macro |\beamer@partpages|,
+% \begin{macrocode}
+\let\beamer@partpages@orig\beamer@partpages
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\beamer@subsectionpages@orig}
+% the macro |\beamer@subsectionpages|,
+% \begin{macrocode}
+\let\beamer@subsectionpages@orig\beamer@subsectionpages
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\beamer@sectionpages@orig}
+% the macro |\beamer@sectionpages|,
+% \begin{macrocode}
+\let\beamer@sectionpages@orig\beamer@sectionpages
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\beamer@documentpages@orig}
+% and the macro |\beamer@documentpages| are saved.
+% \begin{macrocode}
+\let\beamer@documentpages@orig\beamer@documentpages
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bsf@enablenaventries}
+% The command |\bsf@enablenaventries| restores the original meanings of the
+% |\beamer@...pages| entries. It is written to the |.nav| file at the beginning
+% of the document (see \autoref{sec:code-beginend}).
+% \begin{macrocode}
+\def\bsf@enablenaventries{%
+ \let\beamer@partpages\beamer@partpages@orig
+ \let\beamer@subsectionpages\beamer@subsectionpages@orig
+ \let\beamer@sectionpages\beamer@sectionpages@orig
+ \let\beamer@documentpages\beamer@documentpages@orig
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bsf@disablenaventries}
+% And |\bsf@disablenaventries| disables the entries by letting them gobble their
+% arguments. It is written to the |.nav| file after appending the subframes (see
+% \autoref{sec:code-appendsub}).
+% \begin{macrocode}
+\def\bsf@disablenaventries{%
+ \let\beamer@partpages\@gobbletwo
+ \let\beamer@subsectionpages\@gobbletwo
+ \let\beamer@sectionpages\@gobbletwo
+ \let\beamer@documentpages\@gobble
+}
+% \end{macrocode}
+% \end{macro}
+%
+% In order to write the |\bsfrestore...| entries to the |.sfr| file, the
+% sectioning commands must be extended. First the originals for
+%
+% \begin{macro}{\part@orig}
+% the macro |\part|,
+% \begin{macrocode}
+\let\part@orig\part
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\section@orig}
+% the macro |\section|,
+% \begin{macrocode}
+\let\section@orig\section
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\subsection@orig}
+% and the macro |\subsection| are saved.
+% \begin{macrocode}
+\let\subsection@orig\subsection
+% \end{macrocode}
+% \end{macro}
+% The sectioning macros are only redefined in append mode.
+% \begin{macrocode}
+\if@bsf@append
+% \end{macrocode}
+%
+% \begin{macro}{\part}
+% The new version of |\part| writes the |\bsfrestorepart| entry to the |.sfr|
+% file. The original version is called at the end, so its arguments are of no
+% concern here. But because of that, |\c@part| still contains the number of the
+% previous part. Here, |\c@page| already contains the number of the first page
+% of the new part.
+% \begin{macrocode}
+ \def\part{%
+ \immediate\write\bsf@sfrout{\string\bsfrestorepart{\the\c@part}%
+ {\the\c@page}}%
+ \part@orig
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\section}
+% The new version of |\section| writes the |\bsfrestoresection| entry to the
+% |.sfr| file. Besides that, it works like the new |\part| command.
+% \begin{macrocode}
+ \def\section{%
+ \immediate\write\bsf@sfrout{\string\bsfrestoresection{\the\c@section}%
+ {\the\c@page}}%
+ \section@orig
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\subsection}
+% And the new version of |\subsection| writes the |\bsfrestoresubsection| entry
+% to the |.sfr| file. It also works like the new |\part| command.
+% \begin{macrocode}
+ \def\subsection{%
+ \immediate\write\bsf@sfrout{\string\bsfrestoresubsection{\the\c@subsection}%
+ {\the\c@page}}%
+ \subsection@orig
+ }
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% The |\bsfrestore...| entries are executed, when loading the |.sfr| file.
+% Basically, they write the |\bsf@... pages| entries to the |.nav| file. But
+% the first time, they just initialize some macros used as variables, because
+% at this point only the first page of the first subframe of a part, section
+% or subsection and the first page of the part, section or subsection itself
+% are known.
+%
+% \begin{macro}{\bsfrestorepart}
+% On the first call, |\bsfrestorepart| stores the the first page of the new part
+% (|#2|), the number of the previous part (|#1|), and the number of the first
+% page of the first subframe belonging to the new part (|c@page|).
+% \begin{macrocode}
+\def\bsfrestorepart#1#2{%
+ \if@bsf@firstpart
+ \@bsf@firstpartfalse
+ \def\bsf@partstartpage{#2}%
+ \def\bsf@prevpart{#1}%
+ \edef\bsf@partfirstsubframepage{\the\c@page}%
+ \else
+% \end{macrocode}
+% On all subsequent calls, if there is a new part, the last page of the last
+% subframe belonging to the previous part (in |\@tempcnta|) and the last page
+% of the previous part (in |\@tempcntb|) are calculated.
+% \begin{macrocode}
+ \@tempcnta=\bsf@prevpart\relax
+ \ifnum#1>\@tempcnta
+ \@tempcnta\c@page\advance\@tempcnta -1\relax
+ \@tempcntb=#2\relax\advance\@tempcntb -1\relax
+% \end{macrocode}
+% Then the |\bsf@partpages| entry is written to the |.nav| file. Here
+% |\addtocontents| can not be used, because it doesn't work, if |\bsfrestorepart|
+% appears after the last subframe.
+% \begin{macrocode}
+ \if@filesw
+ \immediate\write\@auxout{\string\@writefile{nav}%
+ {\noexpand\headcommand{%
+ \noexpand\bsf@partpages{\bsf@partfirstsubframepage}%
+ {\the\@tempcnta}{\bsf@partstartpage}{\the\@tempcntb}}}}%
+ \fi
+% \end{macrocode}
+% After that, the ``variables'' are reinitialized.
+% \begin{macrocode}
+ \def\bsf@partstartpage{#2}%
+ \def\bsf@prevpart{#1}%
+ \edef\bsf@partfirstsubframepage{\the\c@page}%
+ \fi
+ \fi
+}
+% \end{macrocode}
+% Two of the ``variables'' must be initialized, in order to make the package
+% work for presentations without sectioning commands.
+% \begin{macrocode}
+\def\bsf@partstartpage{1}%
+\def\bsf@prevpart{0}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bsfrestoresection}
+% The macros |\bsfrestoresection| and |\bsfrestoresubsection| work the same way
+% as |\bsfrestorepart|. But additionally, they must keep track of sections
+% without subsections. For this, the flags |\if@bsf@nosubsection| and
+% |\if@bsf@prevnosubsection| and the macro |\bsf@prevsectionstartpage| are used.
+% \begin{macrocode}
+\def\bsfrestoresection#1#2{%
+ \if@bsf@firstsection
+ \@bsf@firstsectionfalse
+ \def\bsf@prevsectionstartpage{#2}%
+ \@bsf@nosubsectiontrue
+ \@bsf@prevnosubsectionfalse
+ \def\bsf@sectionstartpage{#2}%
+ \def\bsf@prevsection{#1}%
+ \edef\bsf@sectionfirstsubframepage{\the\c@page}%
+ \else
+ \@tempcnta=\bsf@prevsection\relax
+ \ifnum#1>\@tempcnta
+% \end{macrocode}
+% When a new section starts, the start page and the |\if@bsf@nosubsection| flag
+% of the previous section are stored.
+% \begin{macrocode}
+ \edef\bsf@prevsectionstartpage{\bsf@sectionstartpage}%
+ \if@bsf@nosubsection
+ \@bsf@prevnosubsectiontrue
+ \else
+ \@bsf@prevnosubsectionfalse
+ \fi
+% \end{macrocode}
+% The flag |\if@bsf@nosubsection| is set to false, because the new section has
+% no subsections yet.
+% \begin{macrocode}
+ \@bsf@nosubsectiontrue
+% \end{macrocode}
+% And the number of the previous subsection is set to $-1$, because the
+% subsection counter will be reset to 0 on the start of each section.
+% \begin{macrocode}
+ \def\bsf@prevsubsection{-1}%
+ \@tempcnta\c@page\advance\@tempcnta -1\relax
+ \@tempcntb=#2\relax\advance\@tempcntb -1\relax
+ \if@filesw
+ \immediate\write\@auxout{\string\@writefile{nav}%
+ {\noexpand\headcommand{%
+ \noexpand\bsf@sectionpages{\bsf@sectionfirstsubframepage}%
+ {\the\@tempcnta}{\bsf@sectionstartpage}{\the\@tempcntb}}}}%
+ \fi
+ \def\bsf@sectionstartpage{#2}%
+ \def\bsf@prevsection{#1}%
+ \edef\bsf@sectionfirstsubframepage{\the\c@page}%
+ \fi
+ \fi
+}
+\def\bsf@sectionstartpage{1}%
+\def\bsf@prevsection{0}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bsfrestoresubsection}
+% The macro |\bsfrestoresubsection| uses the flags |\if@bsf@nosubsection| and
+% |\if@bsf@prevnosubsection| and the macro |\bsf@prevsectionstartpage| to set
+% the correct range of pages.
+% \begin{macrocode}
+\def\bsfrestoresubsection#1#2{%
+ \if@bsf@firstsubsection
+ \@bsf@firstsubsectionfalse
+ \@bsf@prevnosubsectionfalse
+ \def\bsf@subsectionstartpage{#2}%
+ \def\bsf@prevsubsection{#1}%
+ \edef\bsf@subsectionfirstsubframepage{\the\c@page}%
+ \else
+ \@tempcnta=\bsf@prevsubsection\relax
+ \ifnum#1>\@tempcnta
+ \@tempcnta\c@page\advance\@tempcnta -1\relax
+% \end{macrocode}
+% Since the |\bsf@...pages| entries are written (indirectly) at the point of the
+% next part, section or subsection, the entry for let's say subsection 1.3 would
+% be written at the point of subsection 3.1, if section 2 has no subsections.
+% So if the previous section had no subsection, its start page is used to
+% calculate the last page of the last subsection instead of the start page of
+% this subsection.
+% \begin{macrocode}
+ \if@bsf@prevnosubsection
+ \@tempcntb=\bsf@prevsectionstartpage\relax
+ \else
+ \@tempcntb=#2\relax
+ \fi
+ \advance\@tempcntb -1\relax
+% \end{macrocode}
+% Because |\if@bsf@prevnosubsection| can only be used at the point of the first
+% subsection of a new section, it is set to false.
+% \begin{macrocode}
+ \@bsf@prevnosubsectionfalse
+ \@bsf@nosubsectionfalse
+ \if@filesw
+ \immediate\write\@auxout{\string\@writefile{nav}%
+ {\noexpand\headcommand{%
+ \noexpand\bsf@subsectionpages{\bsf@subsectionfirstsubframepage}%
+ {\the\@tempcnta}{\bsf@subsectionstartpage}{\the\@tempcntb}}}}%
+ \fi
+ \def\bsf@subsectionstartpage{#2}%
+ \def\bsf@prevsubsection{#1}%
+ \edef\bsf@subsectionfirstsubframepage{\the\c@page}%
+ \fi
+ \fi
+}
+\def\bsf@subsectionstartpage{1}%
+\def\bsf@prevsubsection{0}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bsf@partpages}
+% The |\bsf@partpages| macro is similar to the |\beamer@partpages| macro (from
+% \textsf{beamerbasenavigation.sty}). But to decide if the first and the last
+% page of a part are stored in |\beamer@startpageofpart| and |\beamer@endpageofpart|,
+% it uses the first page of the first subframe (|#1|) and the last page of the
+% last subframe (|#2|) belonging to the part.
+%
+% There may be parts with no subframes. In this case, |#1| is greater then |#2|
+% and the first (|#3|) and last page (|#4|) of the part are not stored.
+% \begin{macrocode}
+\def\bsf@partpages#1#2#3#4{%
+ \ifnum\c@page<#1%
+ \else%
+ \ifnum\c@page>#2%
+ \else%
+ \gdef\beamer@startpageofpart{#3}%
+ \gdef\beamer@endpageofpart{#4}%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bsf@sectionpages}
+% The macro |\bsf@sectionpages| works the same way as |\bsf@partpages|.
+% \begin{macrocode}
+\def\bsf@sectionpages#1#2#3#4{%
+ \ifnum\c@page<#1%
+ \else%
+ \ifnum\c@page>#2%
+ \else%
+ \gdef\beamer@startpageofsection{#3}%
+ \gdef\beamer@endpageofsection{#4}%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bsf@subsectionpages}
+% And |\bsf@sectionpages| works the same way as |\bsf@partpages| too.
+% \begin{macrocode}
+\def\bsf@subsectionpages#1#2#3#4{%
+ \ifnum\c@page<#1%
+ \else%
+ \ifnum\c@page>#2%
+ \else%
+ \gdef\beamer@startpageofsubsection{#3}%
+ \gdef\beamer@endpageofsubsection{#4}%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% ^^A-------------------------
+% \subsubsection{Inserts}
+% Beamers |\inserttotalframenumber| is changed by simply writing its definition
+% a second time to the |.nav| file, thus overwriting Beamers original definition.
+% This is done at the end of the document (see \autoref{sec:code-beginend}).
+% The necessary frame number is stored in |\bsf@totalframenumber| before
+% appending the subframes (see \autoref{sec:code-appendsub}).
+% \begin{macro}{\inserttotalframenumberwithsub}
+% The new |\inserttotalframenumberwithsub| is written at the end of the documnet
+% (see \autoref{sec:code-beginend}), regardless of the mode of \BSF, so it's
+% always defined. But to work on the first \TeX\ run, it must be initialized.
+% \begin{macrocode}
+\def\inserttotalframenumberwithsub{\inserttotalframenumber}
+% \end{macrocode}
+% \end{macro}
+%
+% ^^A-------------------------
+% \subsubsection{The \texttt{subframe} environment}
+% \label{sec:code-subframe}
+% \begin{environment}{subframe}
+% The |subframe| environment is defined differently for the two modes. In append
+% mode it is basically a verbatim environment, which writes its contents to the
+% |.sfr| file. Here, the verbatim package is used.
+%
+% Before writing the contents, it writes the |\bsfrestore| entry for the
+% subframe. The latter contains the value of the |subsectionslide| counter as
+% fourth argument, which has to be corrected, if miniframes for subframes should
+% not appear. The counter needs to be incremented, if miniframes should appear
+% for subframes.
+%
+% The |\bsfrestore| entry also has to restore the section and subsection heads.
+% Since they might contain macros and not just the text itself,
+% |\insertsectionhead| and |\insertsubsectionhead| can not be used directly.
+% Their current meaning is stored in macros, which are later used to restore
+% the heads.
+%
+% The first line of the |subframe| environment, which contains the arguments, is
+% treated differently. It is preceded with |\begin{frame}|.
+%
+% At the end of the environment, |\end{frame}| is written to the |.sfr| file.
+% And the |\subslideentry| is written with |\beamer@writeslidentry@miniframes|,
+% but only if miniframes should appear for subframes.
+% \begin{macrocode}
+\if@bsf@append
+ \newenvironment{subframe}{%
+ \@tempcnta\c@subsectionslide
+ \if@bsf@miniframes\else \advance\@tempcnta by -1\fi
+ \expandafter\global\expandafter\let
+ \csname bsf@sectionhead\the\c@part.\the\c@section
+ \endcsname\insertsectionhead
+ \expandafter\global\expandafter\let
+ \csname bsf@subsectionhead\the\c@part.\the\c@section.\the\c@subsection
+ \endcsname\insertsubsectionhead
+ \immediate\write\bsf@sfrout{\string\bsfrestore{\the\c@part}{\the\c@section}%
+ {\the\c@subsection}{\the\@tempcnta}}%
+ \if@bsf@miniframes \addtocounter{subsectionslide}{1}\fi
+ \@bsf@firstlinetrue
+ \let\do\@makeother\dospecials\catcode`\^^M\active
+ \def\verbatim@processline{%
+ \if@bsf@firstline
+ \immediate\write\bsf@sfrout{\string\begin{frame}\the\verbatim@line}%
+ \@bsf@firstlinefalse
+ \else
+ \immediate\write\bsf@sfrout{\the\verbatim@line}%
+ \fi
+ }%
+ \verbatim@}{\immediate\write\bsf@sfrout{\string\end{frame}^^J}%
+ \if@bsf@miniframes \beamer@writeslidentry@miniframes \fi
+ }
+\else
+% \end{macrocode}
+% In embed mode, the |subframe| environment is basically a |frame| environment.
+% Before calling it, |\if@bsf@subframe| is set to true. And after the |frame|
+% environment, |\if@bsf@subframe| is set to false again. This is needed for the
+% |\ifsubframe| command.
+%
+% The main problem here is adding |environment=subframe| to the options. For
+% this, |\bsf@frame| is called with the name of the environment, the optional
+% overlay specification (|#2|), and the first optional argument (|#1|).
+% \begin{macrocode}
+ \newenvironment<>{subframe}[1][]{%
+ \@bsf@subframetrue
+ \bsf@frame{subframe}{#2}{#1}}{\end{frame}\@bsf@subframefalse}
+\fi
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\bsf@frame}
+% The macro |\bsf@frame| initializes the token register |\bsf@frame@param|, sets
+% a default for the second optional argument and then calls |\bsf@@frame|.
+% \begin{macrocode}
+\def\bsf@frame#1#2#3{\bsf@frame@param={}%
+ \@ifnextchar[{\bsf@@frame{#1}{#2}{#3}}{\bsf@@frame{#1}{#2}{#3}[]}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bsf@@frame}
+% The macro |\bsf@@frame| is called with the name of the new frame environment
+% (|#1|), the overlay specification (|#2|), and the first (|#3|) and the second
+% (|#4|) optional argument. It stores the arguments in|\bsf@frame@param|,
+% thereby adding |environment=|\meta{name of the new frame environment} at the
+% appropriate place.
+% \begin{macrocode}
+\def\bsf@@frame#1#2#3[#4]{%
+ \def\@tempa{#3}
+% \end{macrocode}
+% If |#3| is empty, then there are no optional arguments, i.e.\ no default
+% overlay specification and no options. In this case, |#4| is empty too.
+% \begin{macrocode}
+ \ifx\@tempa\@empty
+ \bsf@frame@param={#2[environment=#1]}%
+ \else
+ \def\@tempb{#4}
+% \end{macrocode}
+% If only |#4| is empty, then there is one optional argument. This case is
+% handled by |\bsf@@@frame|.
+% \begin{macrocode}
+ \ifx\@tempb\@empty
+ \bsf@@@frame{#1}{#2}#3\@@end
+% \end{macrocode}
+% Otherwhise, both optional arguments are present.
+% \begin{macrocode}
+ \else
+ \bsf@frame@param={#2[#3][environment=#1,#4]}%
+ \fi
+ \fi
+% \end{macrocode}
+% At the end, |\bsf@frame@| is called with the token register |\bsf@frame@param|
+% already expanded.
+% \begin{macrocode}
+ \expandafter\bsf@frame@\the\bsf@frame@param\@@end
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bsf@@@frame}
+% The macro |\bsf@@@frame| checks, if the only optional argument is a default
+% overlay specification or the list of options. Here |#1| is the name of the new
+% frame environment, |#2| is the overlay specification, |#3| is the first
+% character of the optional argument and |#4| contains all subsequent characters.
+%
+% If |#3| is `|<|', then the optional argument is a default overlay specification.
+% Otherwhise, it is the list of options.
+% \begin{macrocode}
+\def\bsf@@@frame#1#2#3#4\@@end{%
+ \def\@tempa{#3}\def\@tempb{<}%
+ \ifx\@tempa\@tempb\relax
+ \bsf@frame@param={#2[#3#4][environment=#1]}%
+ \else
+ \bsf@frame@param={#2[environment=#1,#3#4]}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bsf@frame@}
+% The macro |\bsf@frame@| calls |\begin{frame}| with its argument, which
+% contains the overlay specification and the default overlay specification if
+% present, and the options, containing at least |environment=...|. This includes
+% angle brackets and brackets.
+% \begin{macrocode}
+\def\bsf@frame@#1\@@end{\begin{frame}#1}
+% \end{macrocode}
+% \end{macro}
+%
+% ^^A-------------------------
+% \subsubsection{The \texttt{lastframe} environment}
+% \label{sec:code-lastframe}
+% \begin{environment}{lastframe}
+% The |lastframe| environment also uses |\bsf@frame| to add |environment=lastframe|
+% to the options before calling the |frame| environment.
+%
+% Before that, it uses |\bsfrestore| to reset all sectioning counters. After
+% this, the counters are in the same state, as they would be for a title frame
+% before all sectioning commands. By this, navigation in the sidebar or headline
+% will appear the same way as on the title page.
+% \begin{macrocode}
+\newenvironment<>{lastframe}[1][]{%
+ \bsfrestore{0}{0}{0}{0}%
+ \bsf@frame{lastframe}{#2}{#1}}{\end{frame}}
+% \end{macrocode}
+% \end{environment}
+%
+% ^^A-------------------------
+% \subsubsection{Appending Subframes}
+% \label{sec:code-appendsub}
+% \begin{macro}{\appendsubframes}
+% The macro |\appendsubframes| does nothing in embed mode. In append mode it
+% first writes |\endinput| to the |.sfr| file and initializes some macros for
+% navigation. The page number of the last frame of the main part is stored in
+% |\bsf@pagebeforesub|, to be used after loading the |.sfr| file.
+% \begin{macrocode}
+\newcommand{\appendsubframes}{%
+ \if@bsf@append
+ \immediate\write\bsf@sfrout{\string\endinput}%
+ \edef\bsf@partfirstsubframepage{\the\c@page}%
+ \edef\bsf@sectionfirstsubframepage{\the\c@page}%
+ \edef\bsf@subsectionfirstsubframepage{\the\c@page}%
+ \@tempcnta\c@page\advance\@tempcnta -1\relax
+ \edef\bsf@pagebeforesub{\the\@tempcnta}%
+% \end{macrocode}
+% For the navigation in the main part, the |\beamer@...pages| entries are
+% written to the |.nav| file.
+% \begin{macrocode}
+ \addtocontents{nav}{\protect\headcommand{%
+ \protect\beamer@partpages{\the\beamer@partstartpage}{\bsf@pagebeforesub}}}%
+ \addtocontents{nav}{\protect\headcommand{%
+ \protect\beamer@subsectionpages{\the\beamer@subsectionstartpage}{\bsf@pagebeforesub}}}%
+ \addtocontents{nav}{\protect\headcommand{%
+ \protect\beamer@sectionpages{\the\beamer@sectionstartpage}{\bsf@pagebeforesub}}}%
+ \addtocontents{nav}{\protect\headcommand{%
+ \protect\beamer@documentpages{\bsf@pagebeforesub}}}%
+% \end{macrocode}
+% The number of the last frame of the main part is stored in |\bsf@totalframenumber|.
+% And |\beamer@writeslidentry| is replaced by |\beamer@writeslidentry@navbar|.
+% \begin{macrocode}
+ \edef\bsf@totalframenumber{\the\c@framenumber}%
+ \let\beamer@writeslidentry\beamer@writeslidentry@navbar
+% \end{macrocode}
+% Before loading the |.sfr| file, it is closed and the flags for the navigation
+% bar are initialized. The flag for |\ifsubframe| is set to true, because from
+% now on there are only subframes.
+% \begin{macrocode}
+ \immediate\closeout\bsf@sfrout
+ \@bsf@firstparttrue
+ \@bsf@firstsectiontrue
+ \@bsf@firstsubsectiontrue
+ \@bsf@subframetrue
+ \input{\jobname.sfr}
+% \end{macrocode}
+% After all subframes are typeset, the final |\bsf@...pages| entries are written
+% to the |.nav| file.
+% \begin{macrocode}
+ \@tempcnta\c@page\advance\@tempcnta -1\relax
+ \if@filesw
+ \immediate\write\@auxout{\string\@writefile{nav}%
+ {\noexpand\headcommand{\noexpand\bsf@partpages{\bsf@partfirstsubframepage}%
+ {\the\@tempcnta}{\bsf@partstartpage}{\bsf@pagebeforesub}}}}%
+ \immediate\write\@auxout{\string\@writefile{nav}%
+ {\noexpand\headcommand{\noexpand\bsf@sectionpages{\bsf@sectionfirstsubframepage}%
+ {\the\@tempcnta}{\bsf@sectionstartpage}{\bsf@pagebeforesub}}}}%
+ \immediate\write\@auxout{\string\@writefile{nav}%
+ {\noexpand\headcommand{\noexpand\bsf@subsectionpages{\bsf@subsectionfirstsubframepage}%
+ {\the\@tempcnta}{\bsf@subsectionstartpage}{\bsf@pagebeforesub}}}}%
+ \immediate\write\@auxout{\string\@writefile{nav}%
+ {\noexpand\headcommand{\noexpand\bsf@documentpages{\the\@tempcnta}}}}%
+% \end{macrocode}
+% Finally, the command to disable the remaining |\beamer@...pages| entries is
+% written to the |.nav| file.
+% \begin{macrocode}
+ \immediate\write\@auxout{\string\@writefile{nav}%
+ {\noexpand\headcommand{\noexpand\bsf@disablenaventries}}}%
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% ^^A-------------------------
+% \subsubsection{At Begin and End of the Document}
+% \label{sec:code-beginend}
+% At the beginning of the document, first the |.sfp| file is loaded. The |.sfr|
+% file is only opened in append mode.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \InputIfFileExists{\jobname.sfp}{}{}%
+ \if@bsf@append
+ \immediate\openout\bsf@sfrout\jobname.sfr\relax
+% \end{macrocode}
+% To reenable the |\beamer@...pages| entries after the first page, the command
+% |\bsf@enablenaventries| is written as the first entry to the |.nav| file.
+% \begin{macrocode}
+ \if@filesw
+ \immediate\write\@auxout{\string\@writefile{nav}%
+ {\noexpand\headcommand{\noexpand\bsf@enablenaventries}}}%
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% At the end of the document in append mode first the |.sfp| file is checked.
+% After that |\bsf@totalframenumber| is initialized if necessary, i.e.\ if
+% |\appendsubframes| was omitted in the source.
+% \begin{macrocode}
+\AtEndDocument{%
+ \if@bsf@append
+ \bsf@checksfp
+ \@ifundefined{bsf@totalframenumber}{%
+ \edef\bsf@totalframenumber{\the\c@framenumber}}{}%
+ \if@filesw
+% \end{macrocode}
+% The definition for |\inserttotalframenumber| is written to the |.nav| file a
+% second time, thus overwriting the first definition written by Beamer. Here it
+% contains the number of frames of the main part.
+% \begin{macrocode}
+ \immediate\write\@auxout{\string\@writefile{nav}%
+ {\noexpand\headcommand{%
+ \noexpand\def\noexpand\inserttotalframenumber{\bsf@totalframenumber}}}}
+% \end{macrocode}
+% A stream for the for the |.sfp| file is defined and the file is opened, so
+% \LaTeX\ can write it, when loading the |.aux| file at the end of the document.
+% \begin{macrocode}
+ \newwrite\tf@sfp
+ \immediate\openout\tf@sfp\jobname.sfp\relax
+ \fi
+ \fi
+% \end{macrocode}
+% Regardless of the mode, the definition of |\inserttotalframenumberwithsub| is
+% written to the |.nav| file, so it can be used in themes in both modes.
+% \begin{macrocode}
+ \if@filesw
+ \immediate\write\@auxout{\string\@writefile{nav}%
+ {\noexpand\headcommand{%
+ \noexpand\def\noexpand\inserttotalframenumberwithsub{\the\c@framenumber}}}}
+ \fi
+}
+% \end{macrocode}
+%
+% ^^A-------------------------
+% \subsubsection{Contitional Execution}
+% \begin{macro}{\ifappend}
+% The macro |\ifappend| simply expands to its first argument in append mode and
+% to its second in embed mode.
+% \begin{macrocode}
+\newcommand{\ifappend}[2]{\if@bsf@append #1\else #2\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifsubframe}
+% The macro |\ifsubframes| simply expands to its first argument in subframes and
+% to its second in normal frames.
+% \begin{macrocode}
+\newcommand{\ifsubframe}[2]{\if@bsf@subframe #1\else #2\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \newpage
+% \Finale\endinput
+%</package>
+% ^^A--------------------------------------------------------------------------
+% ^^A Now the source of the example
+%<*example>
+\documentclass{beamer}
+\usepackage{lmodern}
+\usepackage[T1]{fontenc}
+
+\usepackage[append]{beamersubframe}
+
+\newcommand<>{\linkdetail}[4]{%
+ \ifappend{\uncover#5{\hyperlink{#3}{\beamergotobutton{#4}}}}%
+ {\uncover#5{\hyperlink{#1}{\beamerskipbutton{#2}}}}
+}
+\newcommand<>{\returndetail}[2]{%
+\ifappend{\uncover#3{\hyperlink{#1}{\beamerreturnbutton{#2}}}}%
+ {\visible<0>{\beamerreturnbutton{#2}}}
+}
+\newcommand<>{\linkdifftext}[3]{%
+ \ifappend{\uncover#4{\hyperlink{#1}{\beamergotobutton{#3}}}}%
+ {\uncover#4{\hyperlink{#1}{\beamerskipbutton{#2}}}}
+}
+
+\defbeamertemplate*{sidebar left}{bsf test}[1][50]
+{
+ \vfill%
+ \rlap{\hskip0.1cm\hbox{\color{fg!#1!bg}\tiny{\ifsubframe{detail}{main part}}}}%
+ \vskip2pt%
+}
+
+\begin{document}
+\begin{frame}{some frame}
+\begin{itemize}[<+->]
+\item there is foo
+\item foo is good
+\item and there is bar
+\item bar is good too
+\end{itemize}
+\end{frame}
+
+\begin{frame}<1-2>[label=lfoo]{frame on foo}
+\begin{itemize}[<+->]
+\item item a
+\item item b \linkdetail<2>{lfoo<3>}{Skip Details}{ldfoob}{Goto Details}
+\item item c
+\item item d
+\end{itemize}
+\end{frame}
+
+\begin{subframe}[label=ldfoob]{details on foo item b}
+\begin{itemize}[<+->]
+\item item b.1
+\item item b.2
+\item item b.3
+\item item b.4
+\end{itemize}
+\end{subframe}
+
+\begin{subframe}
+\frametitle{more details on foo item b}
+\begin{itemize}[<+->]
+\item item b.5
+\item item b.6
+\item item b.7
+\item item b.8
+\end{itemize}
+
+\vspace{2ex}
+\returndetail<4>{lfoo<3>}{Return from Details}
+\end{subframe}
+
+\againframe<3->{lfoo}
+
+\begin{frame}{frame on bar}
+\begin{itemize}[<+->]
+\item item w
+\item item x
+\item item y
+\item item z \linkdetail<4>{lother}{Skip Details}{ldbarz}{Goto Details}
+\end{itemize}
+\end{frame}
+
+\begin{subframe}[label=ldbarz]
+\frametitle{details on bar item z}
+\begin{itemize}[<+->]
+\item item z.1
+\item item z.2
+\item item z.3
+\item item z.4
+\end{itemize}
+
+\vspace{2ex}
+\linkdifftext<4>{lother}{Skip further Details}{Return from Details}
+\end{subframe}
+
+\begin{subframe}{more details on bar item z}
+\begin{itemize}[<+->]
+\item item z.5
+\item item z.6
+\item item z.7
+\item item z.8
+\end{itemize}
+
+\vspace{2ex}
+\returndetail<4>{lother}{Return from Details}
+\end{subframe}
+
+\begin{frame}[label=lother]{another frame}
+\begin{itemize}[<+->]
+\item conclusion 1
+\item conclusion 2
+\item conclusion 3
+\item conclusion 4
+\end{itemize}
+\end{frame}
+
+\appendsubframes
+\end{document}
+%</example>
diff --git a/Master/texmf-dist/source/latex/beamersubframe/beamersubframe.ins b/Master/texmf-dist/source/latex/beamersubframe/beamersubframe.ins
new file mode 100644
index 00000000000..3aaf0a5737e
--- /dev/null
+++ b/Master/texmf-dist/source/latex/beamersubframe/beamersubframe.ins
@@ -0,0 +1,67 @@
+%%
+%% This file will generate fast loadable files and documentation
+%% driver files from the doc files in this package when run through
+%% LaTeX or TeX.
+%%
+%% Copyright (c) 2011 Mike Kaufmann, all rights reserved
+%%
+%% This program is provided under the terms of the
+%% LaTeX Project Public License distributed from CTAN
+%% archives in directory macros/latex/base/lppl.txt.
+%%
+%% Author: Mike Kaufmann
+%% m.km@gmx.de
+%%
+%% --------------- start of docstrip commands ------------------
+%%
+
+\input docstrip.tex
+
+% some macros for conditional generation of example files
+\newif\ifaskforexample
+\newif\ifgenerateexample
+\generateexampletrue
+\askforexampletrue
+% \generateexample \askforexample then
+% true false generate example
+% true true ask and generate only if answer is y/yes
+% false don' care do not generate
+\def\generateExample#1{%
+ \ifgenerateexample
+ \ifaskforexample
+ \Ask\answer{^^JThere is an example file in \jobname.dtx.^^JGenerate it? [y/n]}
+ \ifx\answer\y \generate{#1}\else
+ \ifx\answer\yes \generate{#1}\fi\fi
+ \else\generate{#1}\fi\fi}
+
+\preamble
+
+Copyright (c) 2011 Mike Kaufmann, all rights reserved
+
+This program is provided under the terms of the
+LaTeX Project Public License distributed from CTAN
+archives in directory macros/latex/base/lppl.txt.
+
+Author: Mike Kaufmann
+ m.km@gmx.de
+
+\endpreamble
+
+\generate{\file{beamersubframe.sty}{\from{beamersubframe.dtx}{package}}}
+\generateExample{\file{bsf-example.tex}{\from{beamersubframe.dtx}{example}}}
+
+\Msg{***********************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* file into a directory searched by TeX:}
+\Msg{*}
+\Msg{* \space\space beamersubframe.sty}
+\Msg{*}
+\Msg{* To produce the documentation run the files ending with}
+\Msg{* `.dtx' through PDFLaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing}
+\Msg{***********************************************************}
+
+
+\endbatchfile
diff --git a/Master/texmf-dist/tex/latex/beamersubframe/beamersubframe.sty b/Master/texmf-dist/tex/latex/beamersubframe/beamersubframe.sty
index 948fc981719..5754bb8e42a 100644
--- a/Master/texmf-dist/tex/latex/beamersubframe/beamersubframe.sty
+++ b/Master/texmf-dist/tex/latex/beamersubframe/beamersubframe.sty
@@ -1,3 +1,12 @@
+%%
+%% This is file `beamersubframe.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% beamersubframe.dtx (with options: `package')
+%%
+%% Copyright (c) 2011 Mike Kaufmann, all rights reserved
%%
%% This program is provided under the terms of the
%% LaTeX Project Public License distributed from CTAN
@@ -6,153 +15,437 @@
%% Author: Mike Kaufmann
%% m.km@gmx.de
%%
-\def\fileversion{0.1}
-\def\filedate{2011/06/29}
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%%
+%%
+\def\fileversion{0.2}
+\def\filedate{2011/08/07}
+
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamersubframe}[\filedate\space
v\fileversion\space reordering beamer frames]
-
-% check for beamer class
\@ifclassloaded{beamer}{}{%
- \PackageError{beamersubframe}{%
- The package works only with the beamer class,\MessageBreak
- therefore it is not loaded.
- }{%
- The package is not loaded, because it needs the\MessageBreak
- beamer class. Continuing may lead to additional\MessageBreak
- errors because of undefined commands.
- }
- \endinput
+ \PackageError{beamersubframe}{%
+ The package works only with the beamer class,\MessageBreak
+ therefore it is not loaded.
+ }{%
+ The package is not loaded, because it needs the\MessageBreak
+ beamer class. Continuing may lead to additional\MessageBreak
+ errors because of undefined commands.
+ }
+ \endinput
}
-
\newif\if@bsf@append
+\newif\if@bsf@miniframes
+\@bsf@miniframestrue
+\newif\if@bsf@subframe
+\@bsf@subframefalse
+\newif\if@bsf@nosfnum
\newif\if@bsf@firstline
-\newtoks\sub@frame@param
-\newwrite\sfr@out
-\newwrite\sfr@sub
-
+\newif\if@bsf@firstpart
+\newif\if@bsf@firstsection
+\newif\if@bsf@firstsubsection
+\newif\if@bsf@nosubsection
+\newif\if@bsf@prevnosubsection
+\newtoks\bsf@frame@param
+\newwrite\bsf@sfrout
\DeclareOption{embed}{\@bsf@appendfalse}
\DeclareOption{append}{\@bsf@appendtrue}
-
+\DeclareOption{nominiframes}{\@bsf@miniframesfalse}
\ExecuteOptions{embed}
\ProcessOptions*\relax
-
\RequirePackage{verbatim}
-\def\beamer@subnum{%
- \the\c@part.\the\c@section.\the\c@subsection.\the\c@subsectionslide
+\newcommand{\bsfrestore}[4]{%
+ \setcounter{part}{#1}%
+ \setcounter{section}{#2}%
+ \setcounter{subsection}{#3}%
+ \setcounter{subsectionslide}{#4}%
+ \expandafter\let\expandafter\insertsectionhead
+ \csname bsf@sectionhead\the\c@part.\the\c@section\endcsname
+ \expandafter\let\expandafter\insertsubsectionhead
+ \csname bsf@subsectionhead\the\c@part.\the\c@section.\the\c@subsection\endcsname
+ \def\insertpartheadnumber{#1}%
+ \def\insertsectionheadnumber{#2}%
+ \def\insertsubsectionheadnumber{#3}%
}
-
-\def\beamersubframepages#1#2#3#4#5#6{%
- \expandafter\def\csname beamer@substartpage#1.#2.#3.#4\endcsname{#5}%
- \expandafter\def\csname beamer@subendpage#1.#2.#3.#4\endcsname{#6}%
+\def\bsf@subnum{%
+ \the\c@part.\the\c@section.\the\c@subsection.\the\c@subsectionslide
}
-
\def\beamer@writeslidentry@miniframes{%
- \addtocontents{nav}%
- {\protect\headcommand{%
- \protect\slideentry{\the\c@section}{\the\c@subsection}{\the\c@subsectionslide}%
- {\protect\@nameuse{beamer@substartpage\beamer@subnum}/%
- \protect\@nameuse{beamer@subendpage\beamer@subnum}}{\lastsubsection}{\the\c@part}}}%
+ \addtocontents{nav}%
+ {\protect\headcommand{%
+ \protect\subslideentry{\the\c@section}{\the\c@subsection}%
+ {\the\c@subsectionslide}%
+ {\protect\bsf@usenum{bsf@substartpage\bsf@subnum}/%
+ \protect\bsf@usenum{bsf@subendpage\bsf@subnum}}%
+ {\lastsubsection}{\the\c@part}}}%
}
-
\def\beamer@writeslidentry@navbar{%
\expandafter\beamer@ifempty\expandafter{\beamer@framestartpage}{}% does not happen normally
{%else
\addtocontents{nav}%
- {\protect\headcommand{%
+ {\protect\headcommand{%
\protect\beamer@framepages{\beamer@framestartpage}{\beamer@frameendpage}}}%
- \immediate\write\sfr@sub{\string\beamersubframepages%
- {\the\c@part}{\the\c@section}{\the\c@subsection}%
- {\the\c@subsectionslide}{\beamer@framestartpage}{\beamer@frameendpage}}%
+ \addtocontents{sfp}{%
+ \protect\bsfsubframepages{\the\c@part}{\the\c@section}{\the\c@subsection}%
+ {\the\c@subsectionslide}{\beamer@framestartpage}{\beamer@frameendpage}}%
\clearpage\beamer@notesactions%
- }
+ }%
}
-\let\beamer@writeslidentry@orig\beamer@writeslidentry
-
-\newcommand{\beamerrestore}[6]{%
- \setcounter{part}{#1}%
- \setcounter{section}{#2}%
- \setcounter{subsection}{#3}%
- \setcounter{subsectionslide}{#4}%
- \def\insertsectionhead{#5}%
- \def\insertsubsectionhead{#6}%
+\def\subslideentry{\slideentry}
+\def\bsfsubframepages#1#2#3#4#5#6{%
+ \expandafter\def\csname bsf@substartpage#1.#2.#3.#4\endcsname{#5}%
+ \expandafter\def\csname bsf@subendpage#1.#2.#3.#4\endcsname{#6}%
+}
+\def\bsf@usenum#1{%
+ \@ifundefined{#1}{1}{\csname #1\endcsname}%
}
+\def\bsf@checksfp{%
+ \begingroup
+ \@bsf@nosfnumfalse
+ \def\bsf@usenum##1{%
+ \@ifundefined{##1}{\@bsf@nosfnumtrue}{}}
+ \def\slideentry##1##2##3##4##5##6{}%
+ \def\partentry##1##2{}%
+ \def\sectionentry##1##2##3##4##5{}%
+ \def\beamer@subsectionentry##1##2##3##4##5{}%
+ \def\subslideentry##1##2##3##4##5##6{%
+ \bsf@checksfnum(##4)}%
+ \dohead
+ \if@bsf@nosfnum
+ \PackageWarningNoLine{Beamer SubFrame}{%
+ Missing, incomplete or corrupted file\MessageBreak
+ \jobname.sfp! Links for miniframes of\MessageBreak
+ subframes may be wrong. Please run TeX\MessageBreak
+ again}
+ \fi
+ \endgroup
+}
+\def\bsf@checksfnum(#1/#2){#1#2}
+\def\hyperlinkslidenext{%
+ \bsf@nextpage\c@page%
+ \hyperlink{Navigation\the\beamer@tempcount}}
+\def\hyperlinkframestartnext{%
+ \bsf@nextpage\beamer@endpageofframe%
+ \hyperlink{Navigation\the\beamer@tempcount}}
+\def\bsf@nextpage#1{%
+ \beamer@tempcount=#1%
+ \advance\beamer@tempcount by1\relax%
+ \ifnum\beamer@tempcount>\bsf@endpageofdocument%
+ \beamer@tempcount=\bsf@endpageofdocument%
+ \fi}
+\def\bsf@documentpages#1{\def\bsf@endpageofdocument{#1}}
+\def\bsf@endpageofdocument{\beamer@endpageofdocument}
+\let\beamer@partpages@orig\beamer@partpages
+\let\beamer@subsectionpages@orig\beamer@subsectionpages
+\let\beamer@sectionpages@orig\beamer@sectionpages
+\let\beamer@documentpages@orig\beamer@documentpages
+\def\bsf@enablenaventries{%
+ \let\beamer@partpages\beamer@partpages@orig
+ \let\beamer@subsectionpages\beamer@subsectionpages@orig
+ \let\beamer@sectionpages\beamer@sectionpages@orig
+ \let\beamer@documentpages\beamer@documentpages@orig
+}
+\def\bsf@disablenaventries{%
+ \let\beamer@partpages\@gobbletwo
+ \let\beamer@subsectionpages\@gobbletwo
+ \let\beamer@sectionpages\@gobbletwo
+ \let\beamer@documentpages\@gobble
+}
+\let\part@orig\part
+\let\section@orig\section
+\let\subsection@orig\subsection
\if@bsf@append
- \newenvironment{subframe}{%
- \immediate\write\sfr@out{\string\beamerrestore{\the\c@part}{\the\c@section}%
- {\the\c@subsection}{\the\c@subsectionslide}{\insertsectionhead}{\lastsubsection}}
- \addtocounter{subsectionslide}{1}%
- \@bsf@firstlinetrue
- \let\do\@makeother\dospecials\catcode`\^^M\active
- \def\verbatim@processline{%
- \if@bsf@firstline
- \immediate\write\sfr@out{\string\begin{frame}\the\verbatim@line}%
- \@bsf@firstlinefalse
- \else
- \immediate\write\sfr@out{\the\verbatim@line}%
- \fi
- }%
- \verbatim@}{\immediate\write\sfr@out{\string\end{frame}^^J}%
- \beamer@writeslidentry@miniframes
- }
+ \def\part{%
+ \immediate\write\bsf@sfrout{\string\bsfrestorepart{\the\c@part}%
+ {\the\c@page}}%
+ \part@orig
+ }
+ \def\section{%
+ \immediate\write\bsf@sfrout{\string\bsfrestoresection{\the\c@section}%
+ {\the\c@page}}%
+ \section@orig
+ }
+ \def\subsection{%
+ \immediate\write\bsf@sfrout{\string\bsfrestoresubsection{\the\c@subsection}%
+ {\the\c@page}}%
+ \subsection@orig
+ }
+\fi
+\def\bsfrestorepart#1#2{%
+ \if@bsf@firstpart
+ \@bsf@firstpartfalse
+ \def\bsf@partstartpage{#2}%
+ \def\bsf@prevpart{#1}%
+ \edef\bsf@partfirstsubframepage{\the\c@page}%
+ \else
+ \@tempcnta=\bsf@prevpart\relax
+ \ifnum#1>\@tempcnta
+ \@tempcnta\c@page\advance\@tempcnta -1\relax
+ \@tempcntb=#2\relax\advance\@tempcntb -1\relax
+ \if@filesw
+ \immediate\write\@auxout{\string\@writefile{nav}%
+ {\noexpand\headcommand{%
+ \noexpand\bsf@partpages{\bsf@partfirstsubframepage}%
+ {\the\@tempcnta}{\bsf@partstartpage}{\the\@tempcntb}}}}%
+ \fi
+ \def\bsf@partstartpage{#2}%
+ \def\bsf@prevpart{#1}%
+ \edef\bsf@partfirstsubframepage{\the\c@page}%
+ \fi
+ \fi
+}
+\def\bsf@partstartpage{1}%
+\def\bsf@prevpart{0}%
+\def\bsfrestoresection#1#2{%
+ \if@bsf@firstsection
+ \@bsf@firstsectionfalse
+ \def\bsf@prevsectionstartpage{#2}%
+ \@bsf@nosubsectiontrue
+ \@bsf@prevnosubsectionfalse
+ \def\bsf@sectionstartpage{#2}%
+ \def\bsf@prevsection{#1}%
+ \edef\bsf@sectionfirstsubframepage{\the\c@page}%
+ \else
+ \@tempcnta=\bsf@prevsection\relax
+ \ifnum#1>\@tempcnta
+ \edef\bsf@prevsectionstartpage{\bsf@sectionstartpage}%
+ \if@bsf@nosubsection
+ \@bsf@prevnosubsectiontrue
+ \else
+ \@bsf@prevnosubsectionfalse
+ \fi
+ \@bsf@nosubsectiontrue
+ \def\bsf@prevsubsection{-1}%
+ \@tempcnta\c@page\advance\@tempcnta -1\relax
+ \@tempcntb=#2\relax\advance\@tempcntb -1\relax
+ \if@filesw
+ \immediate\write\@auxout{\string\@writefile{nav}%
+ {\noexpand\headcommand{%
+ \noexpand\bsf@sectionpages{\bsf@sectionfirstsubframepage}%
+ {\the\@tempcnta}{\bsf@sectionstartpage}{\the\@tempcntb}}}}%
+ \fi
+ \def\bsf@sectionstartpage{#2}%
+ \def\bsf@prevsection{#1}%
+ \edef\bsf@sectionfirstsubframepage{\the\c@page}%
+ \fi
+ \fi
+}
+\def\bsf@sectionstartpage{1}%
+\def\bsf@prevsection{0}%
+\def\bsfrestoresubsection#1#2{%
+ \if@bsf@firstsubsection
+ \@bsf@firstsubsectionfalse
+ \@bsf@prevnosubsectionfalse
+ \def\bsf@subsectionstartpage{#2}%
+ \def\bsf@prevsubsection{#1}%
+ \edef\bsf@subsectionfirstsubframepage{\the\c@page}%
+ \else
+ \@tempcnta=\bsf@prevsubsection\relax
+ \ifnum#1>\@tempcnta
+ \@tempcnta\c@page\advance\@tempcnta -1\relax
+ \if@bsf@prevnosubsection
+ \@tempcntb=\bsf@prevsectionstartpage\relax
+ \else
+ \@tempcntb=#2\relax
+ \fi
+ \advance\@tempcntb -1\relax
+ \@bsf@prevnosubsectionfalse
+ \@bsf@nosubsectionfalse
+ \if@filesw
+ \immediate\write\@auxout{\string\@writefile{nav}%
+ {\noexpand\headcommand{%
+ \noexpand\bsf@subsectionpages{\bsf@subsectionfirstsubframepage}%
+ {\the\@tempcnta}{\bsf@subsectionstartpage}{\the\@tempcntb}}}}%
+ \fi
+ \def\bsf@subsectionstartpage{#2}%
+ \def\bsf@prevsubsection{#1}%
+ \edef\bsf@subsectionfirstsubframepage{\the\c@page}%
+ \fi
+ \fi
+}
+\def\bsf@subsectionstartpage{1}%
+\def\bsf@prevsubsection{0}%
+\def\bsf@partpages#1#2#3#4{%
+ \ifnum\c@page<#1%
+ \else%
+ \ifnum\c@page>#2%
+ \else%
+ \gdef\beamer@startpageofpart{#3}%
+ \gdef\beamer@endpageofpart{#4}%
+ \fi%
+ \fi%
+}
+\def\bsf@sectionpages#1#2#3#4{%
+ \ifnum\c@page<#1%
+ \else%
+ \ifnum\c@page>#2%
+ \else%
+ \gdef\beamer@startpageofsection{#3}%
+ \gdef\beamer@endpageofsection{#4}%
+ \fi%
+ \fi%
+}
+\def\bsf@subsectionpages#1#2#3#4{%
+ \ifnum\c@page<#1%
+ \else%
+ \ifnum\c@page>#2%
+ \else%
+ \gdef\beamer@startpageofsubsection{#3}%
+ \gdef\beamer@endpageofsubsection{#4}%
+ \fi%
+ \fi%
+}
+\def\inserttotalframenumberwithsub{\inserttotalframenumber}
+\if@bsf@append
+ \newenvironment{subframe}{%
+ \@tempcnta\c@subsectionslide
+ \if@bsf@miniframes\else \advance\@tempcnta by -1\fi
+ \expandafter\global\expandafter\let
+ \csname bsf@sectionhead\the\c@part.\the\c@section
+ \endcsname\insertsectionhead
+ \expandafter\global\expandafter\let
+ \csname bsf@subsectionhead\the\c@part.\the\c@section.\the\c@subsection
+ \endcsname\insertsubsectionhead
+ \immediate\write\bsf@sfrout{\string\bsfrestore{\the\c@part}{\the\c@section}%
+ {\the\c@subsection}{\the\@tempcnta}}%
+ \if@bsf@miniframes \addtocounter{subsectionslide}{1}\fi
+ \@bsf@firstlinetrue
+ \let\do\@makeother\dospecials\catcode`\^^M\active
+ \def\verbatim@processline{%
+ \if@bsf@firstline
+ \immediate\write\bsf@sfrout{\string\begin{frame}\the\verbatim@line}%
+ \@bsf@firstlinefalse
+ \else
+ \immediate\write\bsf@sfrout{\the\verbatim@line}%
+ \fi
+ }%
+ \verbatim@}{\immediate\write\bsf@sfrout{\string\end{frame}^^J}%
+ \if@bsf@miniframes \beamer@writeslidentry@miniframes \fi
+ }
\else
- % problem here: adding ``environment=subframe'' to the options
- \def\sub@frame@#1\@@end{\begin{frame}#1}
- \def\sub@@@frame#1#2#3\@@end{% processing for one optional argument
- \def\@tempa{#2}\def\@tempb{<}%
- \ifx\@tempa\@tempb\relax% test for default overlay spec
- \sub@frame@param={#1[#2#3][environment=subframe]}%
- \else
- \sub@frame@param={#1[environment=subframe,#2#3]}%
- \fi
- }
- \def\sub@@frame#1#2[#3]{%
- \def\@tempa{#2}
- \ifx\@tempa\@empty% this means: no default overlay spec and no options
- \sub@frame@param={#1[environment=subframe]}%
- \else
- \def\@tempb{#3}
- \ifx\@tempb\@empty% this means: one optional argument
- \sub@@@frame{#1}#2\@@end
- \else% both, default overlay spec and options present
- \sub@frame@param={#1[#2][environment=subframe,#3]}%
- \fi
- \fi
- \expandafter\sub@frame@\the\sub@frame@param\@@end
- }
- \def\sub@frame#1#2{%
- \@ifnextchar[{\sub@@frame{#1}{#2}}{\sub@@frame{#1}{#2}[]}%
- }
- \newenvironment<>{subframe}[1][]{%
- \sub@frame@param={}%
- \sub@frame{#2}{#1}}{\end{frame}}
+ \newenvironment<>{subframe}[1][]{%
+ \@bsf@subframetrue
+ \bsf@frame{subframe}{#2}{#1}}{\end{frame}\@bsf@subframefalse}
\fi
-
+\def\bsf@frame#1#2#3{\bsf@frame@param={}%
+ \@ifnextchar[{\bsf@@frame{#1}{#2}{#3}}{\bsf@@frame{#1}{#2}{#3}[]}%
+}
+\def\bsf@@frame#1#2#3[#4]{%
+ \def\@tempa{#3}
+ \ifx\@tempa\@empty
+ \bsf@frame@param={#2[environment=#1]}%
+ \else
+ \def\@tempb{#4}
+ \ifx\@tempb\@empty
+ \bsf@@@frame{#1}{#2}#3\@@end
+ \else
+ \bsf@frame@param={#2[#3][environment=#1,#4]}%
+ \fi
+ \fi
+ \expandafter\bsf@frame@\the\bsf@frame@param\@@end
+}
+\def\bsf@@@frame#1#2#3#4\@@end{%
+ \def\@tempa{#3}\def\@tempb{<}%
+ \ifx\@tempa\@tempb\relax
+ \bsf@frame@param={#2[#3#4][environment=#1]}%
+ \else
+ \bsf@frame@param={#2[environment=#1,#3#4]}%
+ \fi
+}
+\def\bsf@frame@#1\@@end{\begin{frame}#1}
+\newenvironment<>{lastframe}[1][]{%
+ \bsfrestore{0}{0}{0}{0}%
+ \bsf@frame{lastframe}{#2}{#1}}{\end{frame}}
\newcommand{\appendsubframes}{%
- \if@bsf@append
- \let\beamer@writeslidentry\beamer@writeslidentry@navbar
- \immediate\closeout\sfr@out
- \input{\jobname.sfr}
-% \immediate\openout\sfr@out\jobname.sfr
- \let\beamer@writeslidentry\beamer@writeslidentry@orig
+ \if@bsf@append
+ \immediate\write\bsf@sfrout{\string\endinput}%
+ \edef\bsf@partfirstsubframepage{\the\c@page}%
+ \edef\bsf@sectionfirstsubframepage{\the\c@page}%
+ \edef\bsf@subsectionfirstsubframepage{\the\c@page}%
+ \@tempcnta\c@page\advance\@tempcnta -1\relax
+ \edef\bsf@pagebeforesub{\the\@tempcnta}%
+ \addtocontents{nav}{\protect\headcommand{%
+ \protect\beamer@partpages{\the\beamer@partstartpage}{\bsf@pagebeforesub}}}%
+ \addtocontents{nav}{\protect\headcommand{%
+ \protect\beamer@subsectionpages{\the\beamer@subsectionstartpage}{\bsf@pagebeforesub}}}%
+ \addtocontents{nav}{\protect\headcommand{%
+ \protect\beamer@sectionpages{\the\beamer@sectionstartpage}{\bsf@pagebeforesub}}}%
+ \addtocontents{nav}{\protect\headcommand{%
+ \protect\beamer@documentpages{\bsf@pagebeforesub}}}%
+ \edef\bsf@totalframenumber{\the\c@framenumber}%
+ \let\beamer@writeslidentry\beamer@writeslidentry@navbar
+ \immediate\closeout\bsf@sfrout
+ \@bsf@firstparttrue
+ \@bsf@firstsectiontrue
+ \@bsf@firstsubsectiontrue
+ \@bsf@subframetrue
+ \input{\jobname.sfr}
+ \@tempcnta\c@page\advance\@tempcnta -1\relax
+ \if@filesw
+ \immediate\write\@auxout{\string\@writefile{nav}%
+ {\noexpand\headcommand{\noexpand\bsf@partpages{\bsf@partfirstsubframepage}%
+ {\the\@tempcnta}{\bsf@partstartpage}{\bsf@pagebeforesub}}}}%
+ \immediate\write\@auxout{\string\@writefile{nav}%
+ {\noexpand\headcommand{\noexpand\bsf@sectionpages{\bsf@sectionfirstsubframepage}%
+ {\the\@tempcnta}{\bsf@sectionstartpage}{\bsf@pagebeforesub}}}}%
+ \immediate\write\@auxout{\string\@writefile{nav}%
+ {\noexpand\headcommand{\noexpand\bsf@subsectionpages{\bsf@subsectionfirstsubframepage}%
+ {\the\@tempcnta}{\bsf@subsectionstartpage}{\bsf@pagebeforesub}}}}%
+ \immediate\write\@auxout{\string\@writefile{nav}%
+ {\noexpand\headcommand{\noexpand\bsf@documentpages{\the\@tempcnta}}}}%
+ \immediate\write\@auxout{\string\@writefile{nav}%
+ {\noexpand\headcommand{\noexpand\bsf@disablenaventries}}}%
\fi
+ \fi
}
-
\AtBeginDocument{%
- \InputIfFileExists{\jobname.sfp}{}{}%
- \if@bsf@append
- \immediate\openout\sfr@out\jobname.sfr\relax
- \immediate\openout\sfr@sub\jobname.sfp\relax
+ \InputIfFileExists{\jobname.sfp}{}{}%
+ \if@bsf@append
+ \immediate\openout\bsf@sfrout\jobname.sfr\relax
+ \if@filesw
+ \immediate\write\@auxout{\string\@writefile{nav}%
+ {\noexpand\headcommand{\noexpand\bsf@enablenaventries}}}%
\fi
+ \fi
}
\AtEndDocument{%
- \if@bsf@append
-% \immediate\closeout\sfr@out
- \immediate\closeout\sfr@sub
+ \if@bsf@append
+ \bsf@checksfp
+ \@ifundefined{bsf@totalframenumber}{%
+ \edef\bsf@totalframenumber{\the\c@framenumber}}{}%
+ \if@filesw
+ \immediate\write\@auxout{\string\@writefile{nav}%
+ {\noexpand\headcommand{%
+ \noexpand\def\noexpand\inserttotalframenumber{\bsf@totalframenumber}}}}
+ \newwrite\tf@sfp
+ \immediate\openout\tf@sfp\jobname.sfp\relax
\fi
+ \fi
+ \if@filesw
+ \immediate\write\@auxout{\string\@writefile{nav}%
+ {\noexpand\headcommand{%
+ \noexpand\def\noexpand\inserttotalframenumberwithsub{\the\c@framenumber}}}}
+ \fi
}
-
-% simple command for user macros
\newcommand{\ifappend}[2]{\if@bsf@append #1\else #2\fi}
+\newcommand{\ifsubframe}[2]{\if@bsf@subframe #1\else #2\fi}
+\endinput
+%%
+%% End of file `beamersubframe.sty'.
diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds
index fc713d80939..66b08ea1d5d 100755
--- a/Master/tlpkg/libexec/ctan2tds
+++ b/Master/tlpkg/libexec/ctan2tds
@@ -1692,6 +1692,7 @@ my $core_latex = "$Master/texmf-dist/tex/latex";
%specialinsrunner = (
'antomega' => 'latex', # requires interaction
'apa6e' => 'latex', # requires interaction
+ 'beamersubframe' => 'latex', # requires interaction
'bosisio' => 'latex -translate-file=empty.tcx', # ^^, no 8-bit
'bullcntr' => 'latex', # requires interaction
'canoniclayout' => 'tex',