From dddb3ce03f2d2bde094879b3ed56d17d0c7b871d Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 2 Apr 2016 21:43:35 +0000 Subject: bxenclose (2apr16) git-svn-id: svn://tug.org/texlive/trunk@40213 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/bxenclose/LICENSE | 27 +++++ Master/texmf-dist/doc/latex/bxenclose/README.md | 60 ++++++++++ .../texmf-dist/tex/latex/bxenclose/bxenclose.sty | 126 +++++++++++++++++++++ Master/tlpkg/bin/tlpkg-ctan-check | 2 +- Master/tlpkg/tlpsrc/bxenclose.tlpsrc | 0 Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc | 1 + 6 files changed, 215 insertions(+), 1 deletion(-) create mode 100644 Master/texmf-dist/doc/latex/bxenclose/LICENSE create mode 100644 Master/texmf-dist/doc/latex/bxenclose/README.md create mode 100644 Master/texmf-dist/tex/latex/bxenclose/bxenclose.sty create mode 100644 Master/tlpkg/tlpsrc/bxenclose.tlpsrc diff --git a/Master/texmf-dist/doc/latex/bxenclose/LICENSE b/Master/texmf-dist/doc/latex/bxenclose/LICENSE new file mode 100644 index 00000000000..49f803e083e --- /dev/null +++ b/Master/texmf-dist/doc/latex/bxenclose/LICENSE @@ -0,0 +1,27 @@ +$BK\%=%U%H%&%'%"$O(B MIT $B%i%$%;%s%9$N2<$GG[I[$5$l$^$9!#(B +$BCx:n8"$O:n(B ZR$B!K!W$KB0$7$^$9!#(B +$B$^$?K\%=%U%H%&%'%"$OL5J]>Z$G$9!#(B + +This software is distributed under the MIT License. + +The MIT License + +Copyright (c) 2016 Takayuki YATO (aka. "ZR") + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/Master/texmf-dist/doc/latex/bxenclose/README.md b/Master/texmf-dist/doc/latex/bxenclose/README.md new file mode 100644 index 00000000000..e60047f76dd --- /dev/null +++ b/Master/texmf-dist/doc/latex/bxenclose/README.md @@ -0,0 +1,60 @@ +BXenclose Package +================= + +LaTeX: To enclose the document body with some pieces of code + +The package enables authors to designate in the preamble to make the +document body enclosed with the given pieces of code. As is known, +there are already various mechanisms provided by LaTeX kernel or +packages that attach “hooks” at the beginning and end of documents. +This package tries harder to win the race, that is, place the given +code as close to the real document body as possible. + +### System requirement + + * TeX format: LaTeX. + * TeX engine: Anything. + * Dependent packages: None. + +### Installation + + - `*.sty` → $TEXMF/tex/latex/BXenclose + +### License + +This package is distributed under the MIT License. + +The bxenclose Package +--------------------- + +### Package Loading + + \usepackage{bxenclose} + +No options are available. + +### Usage + +This package defines the following single command: + + \enclosebodywith{}{} + +This command makes the document body enclosed with `` and +``. That is, `` is executed immediately before the body +text (probably after other “begin-document hooks” provided by LaTeX +itself and other packages) and `` is executed immediately after +the body text (probably before other “end-document hooks”). + +Note that both `` and `` code are treated as part of the +document body. In particular, `` code cannot contain any +preamble-restricted commands (such as `\listfiles`). + +Revision History +---------------- + + * Version 0.2 〈2016/04/01〉 + - The first public version. + +-------------------- +Takayuki YATO (aka. "ZR") +http://zrbabbler.sp.land.to/ diff --git a/Master/texmf-dist/tex/latex/bxenclose/bxenclose.sty b/Master/texmf-dist/tex/latex/bxenclose/bxenclose.sty new file mode 100644 index 00000000000..75acfa0ce68 --- /dev/null +++ b/Master/texmf-dist/tex/latex/bxenclose/bxenclose.sty @@ -0,0 +1,126 @@ +% bxenclose.sty + +%% package declaration +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{bxenclose}[2016/04/01 v0.2] +\def\bxew@pkgame{bxenclose} + +%--------------------------------------- main + +%% \bxew@begin@body@hook +% Things to be prepended to the document body. +\let\bxew@begin@body@hook\@empty +%% \bxew@end@body@hook +% Things to be appended to the document body. +\let\bxew@end@body@hook\@empty + +% The insertion of \bxew@begin@body@hook is realized by appending +% the token to \document macro. But of course there are dozens of +% packages that do the same thing, and in order to "win the race" +% and put \bxew@begin@body@hook immediately before the actual body +% content, I need to postpone the patching to \document as late as +% possible. Hence comes my tactics, where the patching will be done +% in invocation of "\begin{document}", just before expanding the +% \document macro. + +%%<*> \enclosebodywith{}{} +\@onlypreamble\enclosebodywith +\newcommand\enclosebodywith[2]{% + \begingroup + \ifx\bxew@patch@begin\@undefined\else + \bxew@patch@begin + \fi + \toks@\expandafter{\bxew@begin@body@hook}% + \toks\tw@{#1}% + \xdef\bxew@begin@body@hook{% + \the\toks@\the\toks\tw@}% + \toks@\expandafter{\bxew@end@body@hook}% + \toks\tw@{#2}% + \xdef\bxew@end@body@hook{% + \the\toks\tw@\the\toks@}% + \endgroup +} + +%% \bxew@patch@begin +% Patches to \begin macro. Specifically, it prepends +% "\bxew@begin@hook{#1}" to \begin. +\def\bxew@patch@begin{% + \global\let\bxew@patch@begin\@undefined % one-shot + \begingroup + \toks@\expandafter{\begin{##1}}% + \edef\bxew@tempa{\gdef\noexpand\begin####1{% + \noexpand\bxew@begin@hook{####1}\the\toks@}}% + \bxew@tempa + \endgroup +} + +%% \bxew@unpatch@begin +% Revokes the patch of \bxew@patch@begin. That is, it removes +% "\bxew@begin@hook{#1}" from \begin macro. +\def\bxew@unpatch@begin{% + \global\let\bxew@unpatch@begin\@undefined % one-shot + \begingroup + % check the target + \long\def\bxew@tempa##1\bxew@begin@hook##2##3\bxew@end{% + \def\bxew@tempa{##2}}% + \expandafter\bxew@tempa\begin{}\bxew@begin@hook!\bxew@end + \ifx\bxew@tempa\@empty % if target is there + \long\def\bxew@tempa##1\bxew@begin@hook##2{##1}% + \toks@\expandafter\expandafter\expandafter + {\expandafter\bxew@tempa\begin{##1}}% + \edef\bxew@tempa{\gdef\noexpand\begin####1{\the\toks@}}% + \bxew@tempa + \fi % if not there, then do nothing + \endgroup +} + +%% \bxew@begin@hook{} +% The patch attached to \begin. When "\begin{document}" +% is called, this macro patches to \document, before +% \document is expanded. +\def\bxew@begin@hook#1{% + \begingroup + \def\bxew@tempa{#1}\def\bxew@tempb{document}% + \ifx\bxew@tempa\bxew@tempb % if it is \begin{document} + % just in case unpatching failed + \global\let\bxew@begin@hook\@gobble % neutralize + \bxew@unpatch@begin + \bxew@patch@document + \fi + \endgroup +} + +%% \bxew@patch@document +% Appends something and \bxew@begin@body@hook to \document macro. +\def\bxew@patch@document{% + \begingroup + \global\let\bxew@patch@document\@undefined % one-shot + \g@addto@macro\document{% + \bxew@patch@enddocument + % and \bxew@begin@body@hook will come last + \let\reserved@a\bxew@begin@body@hook + \global\let\bxew@begin@body@hook\@undefined + \reserved@a}% + \endgroup +} + +% Just like \bxew@begin@body@hook, prepending \bxew@end@body@hook +% to \enddocument need to be deferred as much as possible. So I +% decided to patch \enddocument just before executing the +% \bxew@begin@body@hook macro. + +%% \bxew@patch@enddocument +% Prepends \bxew@end@body@hook to \enddocument. +\def\bxew@patch@enddocument{% + \global\let\bxew@patch@enddocument\@undefined % one-shot + \begingroup + \toks@\expandafter{\enddocument}% + \toks\tw@{\bxew@end@body@hook + \global\let\bxew@end@body@hook\@undefined}% + \xdef\enddocument{\the\toks\tw@\the\toks@}% + \endgroup +} + +%--------------------------------------- done +\endinput +%% EOF diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index b3e1187d261..895c38b7fd8 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -113,7 +113,7 @@ my @TLP_working = qw( breakcites breakurl breqn bropd brushscr bullcntr bundledoc burmese bussproofs bxbase bxcjkjatype bxdpx-beamer bxdvidriver - bxpapersize bxpdfver bxeepic bxjscls bytefield + bxpapersize bxpdfver bxeepic bxenclose bxjscls bytefield c90 c-pascal cabin cachepic caladea calcage calctab calculation calculator calligra calligra-type1 calrsfs cals calxxxx-yyyy cancel canoniclayout cantarell diff --git a/Master/tlpkg/tlpsrc/bxenclose.tlpsrc b/Master/tlpkg/tlpsrc/bxenclose.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc index d5bcdcf05b0..d255f42c0c9 100644 --- a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc @@ -99,6 +99,7 @@ depend bullcntr depend bussproofs depend bxdpx-beamer depend bxdvidriver +depend bxenclose depend bxpapersize depend bxpdfver depend calcage -- cgit v1.2.3