summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-11-28 01:34:49 +0000
committerKarl Berry <karl@freefriends.org>2009-11-28 01:34:49 +0000
commit174ebb955a1d029b8cf859d31a933fbf09b89463 (patch)
tree9dc999a2dc034f6d403bd834705ad2be8f3f708b
parent943aad72bf75cc0f512715ca64181c089a32ec11 (diff)
new script bibexport 2.20 (11oct09)
git-svn-id: svn://tug.org/texlive/trunk@16219 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Build/source/texk/texlive/linked_scripts/ChangeLog6
-rw-r--r--Build/source/texk/texlive/linked_scripts/Makefile.am1
-rw-r--r--Build/source/texk/texlive/linked_scripts/Makefile.in1
-rwxr-xr-xBuild/source/texk/texlive/linked_scripts/bibexport/bibexport.sh178
l---------Master/bin/alpha-linux/bibexport1
l---------Master/bin/i386-cygwin/bibexport1
l---------Master/bin/i386-linux/bibexport1
l---------Master/bin/i386-netbsd/bibexport1
l---------Master/bin/i386-solaris/bibexport1
l---------Master/bin/mips-irix/bibexport1
l---------Master/bin/powerpc-aix/bibexport1
l---------Master/bin/powerpc-linux/bibexport1
l---------Master/bin/sparc-linux/bibexport1
l---------Master/bin/sparc-solaris/bibexport1
l---------Master/bin/universal-darwin/bibexport1
l---------Master/bin/x86_64-linux/bibexport1
-rw-r--r--Master/texmf-dist/bibtex/bst/bibexport/expkeys.bst47
-rw-r--r--Master/texmf-dist/bibtex/bst/bibexport/export.bst456
-rw-r--r--Master/texmf-dist/doc/latex/bibexport/README24
-rw-r--r--Master/texmf-dist/doc/latex/bibexport/bibexport.pdfbin0 -> 153962 bytes
-rwxr-xr-xMaster/texmf-dist/scripts/bibexport/bibexport.sh178
-rw-r--r--Master/texmf-dist/source/latex/bibexport/bibexport.dtx1072
-rw-r--r--Master/texmf-dist/source/latex/bibexport/bibexport.ins69
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check2
-rwxr-xr-xMaster/tlpkg/libexec/ctan2tds1
-rw-r--r--Master/tlpkg/tlpsrc/bibexport.tlpsrc0
-rw-r--r--Master/tlpkg/tlpsrc/collection-bibtexextra.tlpsrc1
27 files changed, 2046 insertions, 2 deletions
diff --git a/Build/source/texk/texlive/linked_scripts/ChangeLog b/Build/source/texk/texlive/linked_scripts/ChangeLog
index 7856e8f2cc0..bf0336f491f 100644
--- a/Build/source/texk/texlive/linked_scripts/ChangeLog
+++ b/Build/source/texk/texlive/linked_scripts/ChangeLog
@@ -1,6 +1,10 @@
+2009-11-28 Karl Berry <karl@tug.org>
+
+ * Makefile.am (nobase_dist_script_SCRIPTS): add bibexport.sh.
+
2009-11-26 Karl Berry <karl@tug.org>
- * Makefile.am (nobase_dist_script_SCRIPTS): perltex is now perltex.pl
+ * Makefile.am (nobase_dist_script_SCRIPTS): perltex is now perltex.pl.
2009-11-26 Peter Breitenlohner <peb@mppmu.mpg.de>
diff --git a/Build/source/texk/texlive/linked_scripts/Makefile.am b/Build/source/texk/texlive/linked_scripts/Makefile.am
index f766cab4756..913f41c6032 100644
--- a/Build/source/texk/texlive/linked_scripts/Makefile.am
+++ b/Build/source/texk/texlive/linked_scripts/Makefile.am
@@ -29,6 +29,7 @@ nobase_dist_script_SCRIPTS = \
accfonts/vpl2ovp \
accfonts/vpl2vpl \
bengali/ebong.py \
+ bibexport/bibexport.sh \
cachepic/cachepic.tlu \
context/lua/luatools.lua \
context/lua/mtxrun.lua \
diff --git a/Build/source/texk/texlive/linked_scripts/Makefile.in b/Build/source/texk/texlive/linked_scripts/Makefile.in
index 5a7875c7749..94c58fad1e7 100644
--- a/Build/source/texk/texlive/linked_scripts/Makefile.in
+++ b/Build/source/texk/texlive/linked_scripts/Makefile.in
@@ -178,6 +178,7 @@ nobase_dist_script_SCRIPTS = \
accfonts/vpl2ovp \
accfonts/vpl2vpl \
bengali/ebong.py \
+ bibexport/bibexport.sh \
cachepic/cachepic.tlu \
context/lua/luatools.lua \
context/lua/mtxrun.lua \
diff --git a/Build/source/texk/texlive/linked_scripts/bibexport/bibexport.sh b/Build/source/texk/texlive/linked_scripts/bibexport/bibexport.sh
new file mode 100755
index 00000000000..07ae9bc2d8e
--- /dev/null
+++ b/Build/source/texk/texlive/linked_scripts/bibexport/bibexport.sh
@@ -0,0 +1,178 @@
+#!/bin/sh
+##
+## This is file `bibexport.sh',
+## generated with the docstrip utility.
+##
+## The original source files were:
+##
+## bibexport.dtx (with options: `script')
+##
+## (c) 2005/02/27 Nicolas Markey <markey at lsv dot ens-cachan dot fr>
+## All rights reserved.
+##
+## This work may be distributed and/or modified under the conditions of
+## the LaTeX Project Public License, either version 1.3 of this license
+## or (at your option) any later version. The latest version of the
+## license is in
+##
+## http://www.latex-project.org/lppl.txt
+##
+## and version 1.3 or later is part of all distributions of LaTeX
+## version 2003/12/01 or later.
+##
+## \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 \~}
+##
+function usage()
+{
+echo "bibexport: a tool to extract BibTeX entries out of .bib files.
+usage: $0 [-h|v] [-n] [-b bst] [-a [-e file]...] [-o file] file...
+ -a, --all export the entire .bib files
+ -b, --bst specifies the .bst style file [default: export.bst]
+ -c, --crossref include entries that are crossref'd [default: yes]
+ -e file, --extra file extra .bib files to be used (for crossrefs)
+ -n, --no-crossref don't include crossref'd entries [default: no]
+ -o file write output to file [default: bibexport.bib]
+ -p, --preamble write a preamble at beginning of output
+ -t, --terse operate silently
+ -h, --help print this message and exit
+ -v, --version print version number and exit";
+exit 0;
+}
+VERSION="2.20";
+VDATE="2009/10/11";
+CROSSREF="1";
+FILE="";
+EXT=".aux";
+EXTRA="";
+EXTRABIB="";
+SPACE=" ";
+BST="export";
+TERSE="";
+NOBANNER="true";
+ARGS=$@;
+if [ $# -eq 0 ]; then
+ usage;
+fi
+while [ $# != 0 ]; do
+ case $1 in
+ -a|--all)
+ EXT=""; SPACE="";
+ shift ;;
+ -b|--bst)
+ if [ "`dirname $2`" = "." ]; then
+ DOLLARTWO="`basename $2 .bst`";
+ else
+ DOLLARTWO="`dirname $2`/`basename $2 .bst`";
+ fi
+ BST="${DOLLARTWO}";
+ shift 2;;
+ -e|--extra)
+ if [ "`dirname $2`" = "." ]; then
+ DOLLARTWO="`basename $2 .bib`";
+ else
+ DOLLARTWO="`dirname $2`/`basename $2 .bib`";
+ fi
+ EXTRA="${EXTRA}${DOLLARTWO},";
+ EXTRABIB="${EXTRABIB},${DOLLARTWO}.bib";
+ shift 2;;
+ -o|--output-file)
+ if [ "`dirname $2`" = "." ]; then
+ DOLLARTWO="`basename $2 .bib`";
+ else
+ DOLLARTWO="`dirname $2`/`basename $2 .bib`";
+ fi
+ OUTPUT="${DOLLARTWO}.bib";
+ shift 2 ;;
+ -c|--crossref|--crossrefs|--with-crossref|--with-crossrefs)
+ CREF="1" ;
+ shift ;;
+ -n|--no-crossref|--without-crossref)
+ CREF="20000" ;
+ shift ;;
+ -v|--version)
+ echo "This is bibexport v${VERSION} (released ${VDATE})"; exit 0;;
+ -p|--preamble)
+ NOBANNER="false";
+ shift ;;
+ -t|--terse)
+ TERSE=" -terse ";
+ shift ;;
+ -*)
+ usage;;
+ *)
+ if [ "`dirname $1`" = "." ]; then
+ DOLLARONE="`basename $1 ${EXT}`";
+ else
+ DOLLARONE="`dirname $1`/`basename $1 ${EXT}`";
+ fi
+ FILE="${FILE}${SPACE}${DOLLARONE}${EXT}";
+ if [ -z "${SPACE}" ]; then
+ SPACE=",";
+ fi;
+ shift;;
+ esac
+done
+FINALFILE=${OUTPUT};
+if [ ! "${FINALFILE}" ]; then
+ FINALFILE="bibexport.bib";
+fi
+TMPFILE="bibexp.`date +%s`";
+if [ -z "${EXT}" ]; then
+ if [ -z "${EXTRA}" ]; then
+ cat > ${TMPFILE}.aux <<EOF
+\citation{*}
+\bibdata{${FILE}}
+\bibstyle{${BST}}
+EOF
+ else
+ cat > ${TMPFILE}.aux <<EOF
+\citation{*}
+\bibdata{${FILE}}
+\bibstyle{expkeys}
+EOF
+ bibtex -min-crossrefs=${CREF} -terse ${TMPFILE};
+ mv -f ${TMPFILE}.bbl ${TMPFILE}.aux;
+ cat >> ${TMPFILE}.aux <<EOF
+\bibdata{${EXTRA}${FILE}${EXTRABIB}}
+\bibstyle{${BST}}
+EOF
+ fi
+else
+ cat ${FILE} | sed -e "s/bibstyle{.*}/bibstyle{${BST}}/" > ${TMPFILE}.aux;
+fi
+bibtex -min-crossrefs=${CREF} ${TERSE} ${TMPFILE}
+echo "" > ${FINALFILE}
+if [ ! "${NOBANNER}" = "true" ]; then
+ echo -ne "@comment{generated using bibexport:\n" >> ${FINALFILE};
+ echo -ne " creation date:\t`date +\"%c\"`\n" >> ${FINALFILE};
+ echo -ne " command:\t\t$0 ${ARGS}\n" >> ${FINALFILE};
+ echo -ne " bibexport-version:\tv${VERSION} (${VDATE})\n" >> ${FINALFILE};
+ echo -ne " bibexport-maintainer:\tmarkey(at)lsv.ens-cachan.fr\n" >> ${FINALFILE};
+ sed -ie "s/}/)/g" ${FINALFILE};
+ echo -ne "}\n\n\n" >> ${FINALFILE};
+fi
+if [ ! "x${CREF}" = "x1" ]; then
+ sed -r -e \
+ "/^ *[cC][rR][oO][sS][sS][rR][eE][fF] *= *[^,]+,?$/d" \
+ ${TMPFILE}.bbl >> ${FINALFILE};
+else
+ cat ${TMPFILE}.bbl >> ${FINALFILE};
+fi
+rm -f ${TMPFILE}.bbl ${TMPFILE}.aux ${TMPFILE}.blg
+##
+##
+## End of file `bibexport.sh'.
diff --git a/Master/bin/alpha-linux/bibexport b/Master/bin/alpha-linux/bibexport
new file mode 120000
index 00000000000..5ce29aa1714
--- /dev/null
+++ b/Master/bin/alpha-linux/bibexport
@@ -0,0 +1 @@
+../../texmf-dist/scripts/bibexport/bibexport.sh \ No newline at end of file
diff --git a/Master/bin/i386-cygwin/bibexport b/Master/bin/i386-cygwin/bibexport
new file mode 120000
index 00000000000..5ce29aa1714
--- /dev/null
+++ b/Master/bin/i386-cygwin/bibexport
@@ -0,0 +1 @@
+../../texmf-dist/scripts/bibexport/bibexport.sh \ No newline at end of file
diff --git a/Master/bin/i386-linux/bibexport b/Master/bin/i386-linux/bibexport
new file mode 120000
index 00000000000..5ce29aa1714
--- /dev/null
+++ b/Master/bin/i386-linux/bibexport
@@ -0,0 +1 @@
+../../texmf-dist/scripts/bibexport/bibexport.sh \ No newline at end of file
diff --git a/Master/bin/i386-netbsd/bibexport b/Master/bin/i386-netbsd/bibexport
new file mode 120000
index 00000000000..5ce29aa1714
--- /dev/null
+++ b/Master/bin/i386-netbsd/bibexport
@@ -0,0 +1 @@
+../../texmf-dist/scripts/bibexport/bibexport.sh \ No newline at end of file
diff --git a/Master/bin/i386-solaris/bibexport b/Master/bin/i386-solaris/bibexport
new file mode 120000
index 00000000000..5ce29aa1714
--- /dev/null
+++ b/Master/bin/i386-solaris/bibexport
@@ -0,0 +1 @@
+../../texmf-dist/scripts/bibexport/bibexport.sh \ No newline at end of file
diff --git a/Master/bin/mips-irix/bibexport b/Master/bin/mips-irix/bibexport
new file mode 120000
index 00000000000..5ce29aa1714
--- /dev/null
+++ b/Master/bin/mips-irix/bibexport
@@ -0,0 +1 @@
+../../texmf-dist/scripts/bibexport/bibexport.sh \ No newline at end of file
diff --git a/Master/bin/powerpc-aix/bibexport b/Master/bin/powerpc-aix/bibexport
new file mode 120000
index 00000000000..5ce29aa1714
--- /dev/null
+++ b/Master/bin/powerpc-aix/bibexport
@@ -0,0 +1 @@
+../../texmf-dist/scripts/bibexport/bibexport.sh \ No newline at end of file
diff --git a/Master/bin/powerpc-linux/bibexport b/Master/bin/powerpc-linux/bibexport
new file mode 120000
index 00000000000..5ce29aa1714
--- /dev/null
+++ b/Master/bin/powerpc-linux/bibexport
@@ -0,0 +1 @@
+../../texmf-dist/scripts/bibexport/bibexport.sh \ No newline at end of file
diff --git a/Master/bin/sparc-linux/bibexport b/Master/bin/sparc-linux/bibexport
new file mode 120000
index 00000000000..5ce29aa1714
--- /dev/null
+++ b/Master/bin/sparc-linux/bibexport
@@ -0,0 +1 @@
+../../texmf-dist/scripts/bibexport/bibexport.sh \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/bibexport b/Master/bin/sparc-solaris/bibexport
new file mode 120000
index 00000000000..5ce29aa1714
--- /dev/null
+++ b/Master/bin/sparc-solaris/bibexport
@@ -0,0 +1 @@
+../../texmf-dist/scripts/bibexport/bibexport.sh \ No newline at end of file
diff --git a/Master/bin/universal-darwin/bibexport b/Master/bin/universal-darwin/bibexport
new file mode 120000
index 00000000000..5ce29aa1714
--- /dev/null
+++ b/Master/bin/universal-darwin/bibexport
@@ -0,0 +1 @@
+../../texmf-dist/scripts/bibexport/bibexport.sh \ No newline at end of file
diff --git a/Master/bin/x86_64-linux/bibexport b/Master/bin/x86_64-linux/bibexport
new file mode 120000
index 00000000000..5ce29aa1714
--- /dev/null
+++ b/Master/bin/x86_64-linux/bibexport
@@ -0,0 +1 @@
+../../texmf-dist/scripts/bibexport/bibexport.sh \ No newline at end of file
diff --git a/Master/texmf-dist/bibtex/bst/bibexport/expkeys.bst b/Master/texmf-dist/bibtex/bst/bibexport/expkeys.bst
new file mode 100644
index 00000000000..4c7c2ae6299
--- /dev/null
+++ b/Master/texmf-dist/bibtex/bst/bibexport/expkeys.bst
@@ -0,0 +1,47 @@
+%%
+%% This is file `expkeys.bst',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% bibexport.dtx (with options: `expkeys')
+%%
+%% (c) 2005/02/27 Nicolas Markey <markey at lsv dot ens-cachan dot fr>
+%% All rights reserved.
+%%
+%% This work may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License, either version 1.3 of this license
+%% or (at your option) any later version. The latest version of the
+%% license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2003/12/01 or later.
+%%
+%% \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 \~}
+%%
+ENTRY{}{}{}
+READ
+FUNCTION{export.key}
+{
+ "\citation{" cite$ "}" * * write$ newline$
+}
+ITERATE{export.key}
+%%
+%%
+%% End of file `expkeys.bst'.
diff --git a/Master/texmf-dist/bibtex/bst/bibexport/export.bst b/Master/texmf-dist/bibtex/bst/bibexport/export.bst
new file mode 100644
index 00000000000..11e3de2b995
--- /dev/null
+++ b/Master/texmf-dist/bibtex/bst/bibexport/export.bst
@@ -0,0 +1,456 @@
+%%
+%% This is file `export.bst',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% bibexport.dtx (with options: `export')
+%%
+%% (c) 2005/02/27 Nicolas Markey <markey at lsv dot ens-cachan dot fr>
+%% All rights reserved.
+%%
+%% This work may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License, either version 1.3 of this license
+%% or (at your option) any later version. The latest version of the
+%% license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2003/12/01 or later.
+%%
+%% \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 \~}
+%%
+FUNCTION{left.width}{#18}
+FUNCTION{right.width}{#55}
+FUNCTION{url.right.width}{#61}
+FUNCTION{left.short.width}{#10} %% for @preamble
+FUNCTION{right.long.width}{#63}
+FUNCTION{left.delim}{"{"}
+FUNCTION{right.delim}{"}"}
+ENTRY{
+ address
+ author
+ booktitle
+ chapter
+ edition
+ editor
+ howpublished
+ institution
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ volume
+ year
+ abstract
+ doi
+ eid
+ isbn
+ issn
+ language
+ url
+}{}{}
+FUNCTION{not}
+{
+ {#0}
+ {#1}
+ if$
+}
+FUNCTION{and}
+{
+ 'skip$
+ {pop$ #0}
+ if$
+}
+FUNCTION{or}
+{
+ {pop$ #1}
+ 'skip$
+ if$
+}
+INTEGERS{left.length right.length}
+STRINGS{ s t }
+FUNCTION{space.complete}
+{
+ 'left.length :=
+ duplicate$ text.length$ left.length swap$ -
+ {duplicate$ #0 >}
+ {
+ swap$ " " * swap$ #1 -
+ }
+ while$
+ pop$
+}
+FUNCTION{split.string}
+{
+ 'right.length :=
+ duplicate$ right.length #1 + #1 substring$ "" =
+ {""}
+ {
+ 's :=
+ right.length
+ {duplicate$ duplicate$ s swap$ #1 substring$ " " = not and}
+ {#1 -}
+ while$
+ duplicate$ #2 <
+ {
+ pop$ " " s * ""
+ }
+ {
+ duplicate$ s swap$ #1 swap$ substring$
+ swap$
+ s swap$ global.max$ substring$
+ }
+ if$
+ }
+ if$
+}
+FUNCTION{split.url}
+{
+ 'right.length :=
+ duplicate$ right.length #1 + #1 substring$ "" =
+ {""}
+ {
+ 's :=
+ right.length
+ {duplicate$ duplicate$ s swap$ #1 substring$ "/" = not and}
+ {#1 -}
+ while$
+ duplicate$ #2 <
+ {
+ pop$ " " s * ""
+ }
+ {
+ duplicate$ s swap$ #1 swap$ substring$
+ swap$ #1 +
+ s swap$ global.max$ substring$
+ }
+ if$
+ }
+ if$
+}
+FUNCTION{split.name}
+{
+ 'right.length :=
+ duplicate$ right.length #1 + #1 substring$ "" =
+ {""}
+ {
+ 's :=
+ right.length
+ {duplicate$ duplicate$ s swap$ #5 substring$ " and " = not and}
+ {#1 -}
+ while$
+ duplicate$ #2 <
+ {
+ pop$ " " s * ""
+ }
+ {
+ #4 + duplicate$ s swap$ #1 swap$ substring$
+ swap$
+ s swap$ global.max$ substring$
+ }
+ if$
+ }
+ if$
+}
+FUNCTION{field.export}
+{
+ duplicate$ missing$
+ 'skip$
+ {
+ left.delim swap$ * right.delim *
+ swap$
+ " " swap$ * " = " * left.width space.complete
+ swap$ "," *
+ {duplicate$ "" = not}
+ {
+ right.width split.string 't :=
+ *
+ write$ newline$
+ "" left.width space.complete t
+ }
+ while$
+ }
+ if$
+ pop$ pop$
+}
+FUNCTION{abbrv.export}
+{
+ duplicate$ missing$
+ 'skip$
+ {
+ swap$
+ " " swap$ * " = " * left.width space.complete
+ swap$ "," *
+ {duplicate$ "" = not}
+ {
+ right.width split.string 't :=
+ *
+ write$ newline$
+ "" left.width space.complete t
+ }
+ while$
+ }
+ if$
+ pop$ pop$
+}
+FUNCTION{name.export}
+{
+ duplicate$ missing$
+ 'skip$
+ {
+ left.delim swap$ * right.delim *
+ swap$
+ " " swap$ * " = " * left.width space.complete
+ swap$ "," *
+ {duplicate$ "" = not}
+ {
+ right.width split.name 't :=
+ *
+ write$ newline$
+ "" left.width space.complete t
+ }
+ while$
+ }
+ if$
+ pop$ pop$
+}
+FUNCTION{url.export}
+{
+ duplicate$ missing$
+ 'skip$
+ {
+ left.delim swap$ * right.delim *
+ swap$
+ " " swap$ * " = " * left.width space.complete
+ swap$ "," *
+ {duplicate$ "" = not}
+ {
+ url.right.width split.url 't :=
+ *
+ write$ newline$
+ "" left.width space.complete t
+ }
+ while$
+ }
+ if$
+ pop$ pop$
+}
+MACRO{jan}{"export-jan"}
+MACRO{feb}{"export-feb"}
+MACRO{mar}{"export-mar"}
+MACRO{apr}{"export-apr"}
+MACRO{may}{"export-may"}
+MACRO{jun}{"export-jun"}
+MACRO{jul}{"export-jul"}
+MACRO{aug}{"export-aug"}
+MACRO{sep}{"export-sep"}
+MACRO{oct}{"export-oct"}
+MACRO{nov}{"export-nov"}
+MACRO{dec}{"export-dec"}
+MACRO{acmcs}{"export-acmcs"}
+MACRO{acta}{"export-acta"}
+MACRO{cacm}{"export-cacm"}
+MACRO{ibmjrd}{"export-ibmjrd"}
+MACRO{ibmsj}{"export-ibmsj"}
+MACRO{ieeese}{"export-ieeese"}
+MACRO{ieeetc}{"export-ieeetc"}
+MACRO{ieeetcad}{"export-ieeetcad"}
+MACRO{ipl}{"export-ipl"}
+MACRO{jacm}{"export-jacm"}
+MACRO{jcss}{"export-jcss"}
+MACRO{scp}{"export-scp"}
+MACRO{sicomp}{"export-sicomp"}
+MACRO{tocs}{"export-tocs"}
+MACRO{tods}{"export-tods"}
+MACRO{tog}{"export-tog"}
+MACRO{toms}{"export-toms"}
+MACRO{toois}{"export-poois"}
+MACRO{toplas}{"export-toplas"}
+MACRO{tcs}{"export-tcs"}
+INTEGERS{ intxt }
+FUNCTION{remove.exports.from.months}
+{
+ #0 'intxt :=
+ duplicate$ missing$
+ 'skip$
+ {'t :=
+ ""
+ {t #1 #1 substring$ "" = not}
+ {
+ t #1 #7 substring$ "export-" =
+ {intxt
+ {right.delim * #0 'intxt :=}
+ 'skip$
+ if$
+ duplicate$ "" =
+ 'skip$
+ {" # " *}
+ if$
+ t #8 #3 substring$ *
+ t #11 global.max$ substring$ 't :=}
+ {intxt
+ 'skip$
+ {duplicate$ "" =
+ {}
+ {" # " *}
+ if$
+ left.delim * #1 'intxt :=}
+ if$
+ t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=}
+ if$
+ }
+ while$
+ intxt
+ {right.delim *}
+ 'skip$
+ if$
+ }
+ if$
+}
+FUNCTION{remove.export.from.journals}
+{
+ duplicate$ missing$
+ 'skip$
+ {
+ duplicate$ #1 #7 substring$ "export-" =
+ {#8 global.max$ substring$}
+ {left.delim swap$
+ right.delim * *}
+ if$
+ }
+ if$
+}
+FUNCTION{entry.export.standard}
+{
+ "address" address field.export
+ "author" author name.export
+ "booktitle" booktitle field.export
+ "chapter" chapter field.export
+ "crossref" crossref field.export
+ "edition" edition field.export
+ "editor" editor name.export
+ "howpublished" howpublished field.export
+ "institution" institution field.export
+ "journal" journal remove.export.from.journals abbrv.export
+ "key" key field.export
+ "month" month remove.exports.from.months abbrv.export
+ "note" note field.export
+ "number" number field.export
+ "organization" organization field.export
+ "pages" pages field.export
+ "publisher" publisher field.export
+ "school" school field.export
+ "series" series field.export
+ "type" type field.export
+ "title" title field.export
+ "volume" volume field.export
+ "year" year field.export
+}
+FUNCTION{entry.export.extra}
+{
+ "abstract" abstract field.export
+ "doi" doi field.export
+ "eid" eid field.export
+ "isbn" isbn field.export
+ "issn" issn field.export
+ "language" language field.export
+ "url" url url.export
+}
+FUNCTION{entry.export}
+{
+ entry.export.standard
+ entry.export.extra
+}
+FUNCTION{export}
+{
+ "@" type$ * "{" * cite$ * "," * write$ newline$
+ entry.export
+ "}" write$ newline$ newline$
+}
+FUNCTION{preamble}
+{
+preamble$ duplicate$ "" =
+ 'pop$
+ {
+ ",-------------------." write$ newline$
+ "| PREAMBLE |" write$ newline$
+ "`-------------------'" write$ newline$ newline$
+ "@preamble{ " swap$
+ quote$ swap$ * quote$ *
+ {duplicate$ "" = not}
+ {
+ right.long.width split.string 't :=
+ *
+ write$ newline$
+ "" left.short.width space.complete t
+ }
+ while$
+ "}" write$ newline$ newline$
+ pop$ pop$
+ }
+if$
+}
+FUNCTION{header}
+{
+newline$
+}
+FUNCTION{entries.header}
+{
+preamble$ "" =
+ 'skip$
+ {
+ ",-------------------." write$ newline$
+ "| BIBTEX ENTRIES |" write$ newline$
+ "`-------------------'" write$ newline$ newline$
+ }
+if$
+}
+FUNCTION{article}{export}
+FUNCTION{book}{export}
+FUNCTION{booklet}{export}
+FUNCTION{conference}{export}
+FUNCTION{habthesis}{export}
+FUNCTION{inbook}{export}
+FUNCTION{incollection}{export}
+FUNCTION{inproceedings}{export}
+FUNCTION{journals}{export}
+FUNCTION{manual}{export}
+FUNCTION{mastersthesis}{export}
+FUNCTION{misc}{export}
+FUNCTION{phdthesis}{export}
+FUNCTION{proceedings}{export}
+FUNCTION{techreport}{export}
+FUNCTION{unpublished}{export}
+READ
+EXECUTE{header}
+EXECUTE{preamble}
+EXECUTE{entries.header}
+ITERATE{export}
+%%
+%%
+%% End of file `export.bst'.
diff --git a/Master/texmf-dist/doc/latex/bibexport/README b/Master/texmf-dist/doc/latex/bibexport/README
new file mode 100644
index 00000000000..66f286ff05f
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/bibexport/README
@@ -0,0 +1,24 @@
+bibexport.sh -- extract BibTeX entries out of .bib file(s).
+ (N. Markey -- <markey(at)lsv.ens-cachan.fr>)
+ version 2.20 -- 2009/10/11
+
+This is a shell script using BibTeX to extract .bib entries
+that are \cite'd in a document. It also permits to expand a
+BibTeX file, i.e. to develop abbreviations (except standard
+ones) and crossrefs.
+
+
+-----------------------------------------------------------
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either
+version 1.3 of this license or (at your option) any later
+version. The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of
+LaTeX version 2003/12/01 or later.
+This work has the LPPL status "maintained".
+The current maintainer of this work is Nicolas Markey.
+
+
+
diff --git a/Master/texmf-dist/doc/latex/bibexport/bibexport.pdf b/Master/texmf-dist/doc/latex/bibexport/bibexport.pdf
new file mode 100644
index 00000000000..1689a31b05c
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/bibexport/bibexport.pdf
Binary files differ
diff --git a/Master/texmf-dist/scripts/bibexport/bibexport.sh b/Master/texmf-dist/scripts/bibexport/bibexport.sh
new file mode 100755
index 00000000000..07ae9bc2d8e
--- /dev/null
+++ b/Master/texmf-dist/scripts/bibexport/bibexport.sh
@@ -0,0 +1,178 @@
+#!/bin/sh
+##
+## This is file `bibexport.sh',
+## generated with the docstrip utility.
+##
+## The original source files were:
+##
+## bibexport.dtx (with options: `script')
+##
+## (c) 2005/02/27 Nicolas Markey <markey at lsv dot ens-cachan dot fr>
+## All rights reserved.
+##
+## This work may be distributed and/or modified under the conditions of
+## the LaTeX Project Public License, either version 1.3 of this license
+## or (at your option) any later version. The latest version of the
+## license is in
+##
+## http://www.latex-project.org/lppl.txt
+##
+## and version 1.3 or later is part of all distributions of LaTeX
+## version 2003/12/01 or later.
+##
+## \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 \~}
+##
+function usage()
+{
+echo "bibexport: a tool to extract BibTeX entries out of .bib files.
+usage: $0 [-h|v] [-n] [-b bst] [-a [-e file]...] [-o file] file...
+ -a, --all export the entire .bib files
+ -b, --bst specifies the .bst style file [default: export.bst]
+ -c, --crossref include entries that are crossref'd [default: yes]
+ -e file, --extra file extra .bib files to be used (for crossrefs)
+ -n, --no-crossref don't include crossref'd entries [default: no]
+ -o file write output to file [default: bibexport.bib]
+ -p, --preamble write a preamble at beginning of output
+ -t, --terse operate silently
+ -h, --help print this message and exit
+ -v, --version print version number and exit";
+exit 0;
+}
+VERSION="2.20";
+VDATE="2009/10/11";
+CROSSREF="1";
+FILE="";
+EXT=".aux";
+EXTRA="";
+EXTRABIB="";
+SPACE=" ";
+BST="export";
+TERSE="";
+NOBANNER="true";
+ARGS=$@;
+if [ $# -eq 0 ]; then
+ usage;
+fi
+while [ $# != 0 ]; do
+ case $1 in
+ -a|--all)
+ EXT=""; SPACE="";
+ shift ;;
+ -b|--bst)
+ if [ "`dirname $2`" = "." ]; then
+ DOLLARTWO="`basename $2 .bst`";
+ else
+ DOLLARTWO="`dirname $2`/`basename $2 .bst`";
+ fi
+ BST="${DOLLARTWO}";
+ shift 2;;
+ -e|--extra)
+ if [ "`dirname $2`" = "." ]; then
+ DOLLARTWO="`basename $2 .bib`";
+ else
+ DOLLARTWO="`dirname $2`/`basename $2 .bib`";
+ fi
+ EXTRA="${EXTRA}${DOLLARTWO},";
+ EXTRABIB="${EXTRABIB},${DOLLARTWO}.bib";
+ shift 2;;
+ -o|--output-file)
+ if [ "`dirname $2`" = "." ]; then
+ DOLLARTWO="`basename $2 .bib`";
+ else
+ DOLLARTWO="`dirname $2`/`basename $2 .bib`";
+ fi
+ OUTPUT="${DOLLARTWO}.bib";
+ shift 2 ;;
+ -c|--crossref|--crossrefs|--with-crossref|--with-crossrefs)
+ CREF="1" ;
+ shift ;;
+ -n|--no-crossref|--without-crossref)
+ CREF="20000" ;
+ shift ;;
+ -v|--version)
+ echo "This is bibexport v${VERSION} (released ${VDATE})"; exit 0;;
+ -p|--preamble)
+ NOBANNER="false";
+ shift ;;
+ -t|--terse)
+ TERSE=" -terse ";
+ shift ;;
+ -*)
+ usage;;
+ *)
+ if [ "`dirname $1`" = "." ]; then
+ DOLLARONE="`basename $1 ${EXT}`";
+ else
+ DOLLARONE="`dirname $1`/`basename $1 ${EXT}`";
+ fi
+ FILE="${FILE}${SPACE}${DOLLARONE}${EXT}";
+ if [ -z "${SPACE}" ]; then
+ SPACE=",";
+ fi;
+ shift;;
+ esac
+done
+FINALFILE=${OUTPUT};
+if [ ! "${FINALFILE}" ]; then
+ FINALFILE="bibexport.bib";
+fi
+TMPFILE="bibexp.`date +%s`";
+if [ -z "${EXT}" ]; then
+ if [ -z "${EXTRA}" ]; then
+ cat > ${TMPFILE}.aux <<EOF
+\citation{*}
+\bibdata{${FILE}}
+\bibstyle{${BST}}
+EOF
+ else
+ cat > ${TMPFILE}.aux <<EOF
+\citation{*}
+\bibdata{${FILE}}
+\bibstyle{expkeys}
+EOF
+ bibtex -min-crossrefs=${CREF} -terse ${TMPFILE};
+ mv -f ${TMPFILE}.bbl ${TMPFILE}.aux;
+ cat >> ${TMPFILE}.aux <<EOF
+\bibdata{${EXTRA}${FILE}${EXTRABIB}}
+\bibstyle{${BST}}
+EOF
+ fi
+else
+ cat ${FILE} | sed -e "s/bibstyle{.*}/bibstyle{${BST}}/" > ${TMPFILE}.aux;
+fi
+bibtex -min-crossrefs=${CREF} ${TERSE} ${TMPFILE}
+echo "" > ${FINALFILE}
+if [ ! "${NOBANNER}" = "true" ]; then
+ echo -ne "@comment{generated using bibexport:\n" >> ${FINALFILE};
+ echo -ne " creation date:\t`date +\"%c\"`\n" >> ${FINALFILE};
+ echo -ne " command:\t\t$0 ${ARGS}\n" >> ${FINALFILE};
+ echo -ne " bibexport-version:\tv${VERSION} (${VDATE})\n" >> ${FINALFILE};
+ echo -ne " bibexport-maintainer:\tmarkey(at)lsv.ens-cachan.fr\n" >> ${FINALFILE};
+ sed -ie "s/}/)/g" ${FINALFILE};
+ echo -ne "}\n\n\n" >> ${FINALFILE};
+fi
+if [ ! "x${CREF}" = "x1" ]; then
+ sed -r -e \
+ "/^ *[cC][rR][oO][sS][sS][rR][eE][fF] *= *[^,]+,?$/d" \
+ ${TMPFILE}.bbl >> ${FINALFILE};
+else
+ cat ${TMPFILE}.bbl >> ${FINALFILE};
+fi
+rm -f ${TMPFILE}.bbl ${TMPFILE}.aux ${TMPFILE}.blg
+##
+##
+## End of file `bibexport.sh'.
diff --git a/Master/texmf-dist/source/latex/bibexport/bibexport.dtx b/Master/texmf-dist/source/latex/bibexport/bibexport.dtx
new file mode 100644
index 00000000000..d1530fcb7d6
--- /dev/null
+++ b/Master/texmf-dist/source/latex/bibexport/bibexport.dtx
@@ -0,0 +1,1072 @@
+% \iffalse meta-comment
+%
+% Copyright
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{doc}
+
+\def\script#1{\texttt{#1}}
+\def\ext#1{\texttt{.#1}}
+\def\var#1{\texttt{\$#1}}
+\def\entry#1{\texttt{@#1}}
+\def\lang#1{\textsc{#1}}
+\def\bst#1{\textsf{#1.bst}}
+\def\BibTeX{Bib\TeX}
+
+%%%\AtBeginDocument{\CodelineIndex\EnableCrossrefs}
+%%%\AtEndDocument{\PrintIndex}
+\begin{document}
+ \def\docdate{2009/10/11}
+ \def\fileversion{2.20}
+ \def\filedate{2009/10/11}
+ \DocInput{bibexport.dtx}
+\end{document}
+%</driver>
+%
+% \fi
+% \CheckSum{26}
+%% \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 \~}
+%%
+%
+% \title{The \script{bibexport.sh} script}
+% \author{Nicolas Markey}
+% \date{\filedate}
+% \maketitle
+% \StopEventually{}
+%
+% \begin{abstract}
+% \script{bibexport.sh} is a small shell script, relying on \BibTeX, that
+% extracts entries of one or several \ext{bib} file(s). It will expand
+% abbreviations and cross-references, except standard month and journal
+% abbreviations. The output is indented as neatly as possible, yielding a
+% readable \ext{bib} file even if the original one was not.
+% \end{abstract}
+%
+%
+% \section{Exporting \ext{bib} files}
+%
+% \subsection{Why and how?}
+%
+% \BibTeX{} aims at allowing for the use of one single \ext{bib} file,
+% containing many entries, from which \BibTeX{} extracts only the
+% \verb+\cite+d ones. When sending a document to someone else, this
+% requires either to send the whole file, or to extract some entries
+% from the \ext{bib} file.
+%
+% \BibTeX{} also has a mechanism for using abbreviations and
+% cross-references. When extracting entries of a large \ext{bib} file,
+% it can be interesting to develop those abbreviations, in order to get a
+% clean, self-contained \ext{bib} file. Also, it may be useful to develop
+% cross-references in a \ext{bib} file, independently of any document.
+%
+% \medskip
+% \script{bibexport} can either extract entries that are cited in a document,
+% or all the entries of one or several \ext{bib} files. It will always develop
+% cross-references and abreviations, except standard abbreviations for months or
+% some journals, that are defined in standard \BibTeX{} styles. This script
+% uses \BibTeX{}. This has both pros and cons:
+% \begin{itemize}
+%\item[$+$] it is very simple. Basicaly, the script simply calls \BibTeX{}, and the
+% \ext{bst} file just outputs the name and the content of each field.
+%\item[$+$] since it uses \BibTeX, we are sure that it will handle everything
+% "properly", \emph{i.e.} in the same way as they will be handled when cited in
+% a \LaTeX{} document;
+%\item[$=$] \BibTeX{} has some strict limitations (especially "no more than 78 consecutive
+% non-space characters") that we must be aware of. On the other hand, any such
+% problem occuring within the script would also occur when compiling a
+% document;
+%\item[$-$] abbreviations and cross-references will \emph{always} be
+% developped. It could be argued that this is also a positive point, but
+% having the choice would have been better.
+%\item[$-$] Many people seem to find \BibTeX's internal language clumsy, and thus
+% the script could be difficult to adapt to special needs. However, this is
+% \emph{really} not that difficult, as will be explained later on. And please,
+% don't hesitate to ask for improvements.
+% \end{itemize}
+%
+% \subsection{Related scripts}
+%
+% Several other tools exist for achieving this task:
+% \begin{itemize}
+%\item \verb+aux2bib+, written by Ralf Treinen, relies on \verb+bib2bib+,
+% which is a \lang{CaML} program for selecting some entries in one or several \ext{bib}
+% files. It does not expand anything, but includes all the necessary
+% definitions and entries.
+%\item \verb+bibextract.sh+, by Nelson Beebe. This script uses \lang{awk} for
+% extracting some entries out of a \ext{bib} file. It is said to be
+% noncompliant with cross-references.
+%\item \bst{subset}, by David Kotz. \bst{export} develops the same ideas (but
+% I discovered that only later on). \bst{subset} does not handle
+% \entry{preamble}, neither does it "protect" standard abbreviations.
+%\item Probalby some others...
+% \end{itemize}
+%
+% \subsection{Some examples}
+%
+% \begin{itemize}
+%\item extracting \verb+\cite+d references of a document, also including
+% cross-references:
+%\begin{center}
+% \ttfamily bibexport -o {\itshape <result>}.bib {\itshape <file>}.aux
+%\end{center}
+%\item extracting \verb+\cite+d references of a document, without crossrefs,
+% and using a special \ext{bst} file:
+%\begin{center}
+% \ttfamily bibexport -b {\itshape <style>}.bst -o {\itshape <result>}.bib {\itshape <file>}.aux
+%\end{center}
+%\item export all the entries of two \ext{bib} files (including crossrefed entries):
+%\begin{center}
+% \ttfamily bibexport -a -o {\itshape <result>}.bib {\itshape <file1>}.bib {\itshape <file2>}.bib
+%\end{center}
+%\item export all the entries of two \ext{bib} files (without crossrefs):
+%\begin{center}
+% \ttfamily bibexport -a -n -o {\itshape <result>}.bib {\itshape <file1>}.bib
+% {\itshape <file2>}.bib
+%\end{center}
+% In fact, the only difference between this and the previous one is that
+% \texttt{crossref} field will be filtered out at the end of the script.
+%\item export all the entries of two \ext{bib} files, using an extra file
+% containing cross-referenced entries (which should not be included):
+%\begin{center}
+% \ttfamily bibexport -a -e {\itshape <crossref>}.bib -n -o {\itshape
+% <result>}.bib \textbackslash\par {\itshape <file1>}.bib {\itshape <file2>}.bib
+%\end{center}
+%\end{itemize}
+%
+% \subsection{Exporting extra fields}
+%
+% By~default, \script{bibexport.sh} exports only "standard" fields
+% (those defined and used in \bst{plain}), as~well as a few
+% others. It~is very easy to modify it in order to export other fields:
+% it~suffices to modify \bst{export} as follows:
+% \begin{itemize}
+% \item in the \texttt{ENTRY} list, add the name of the field you would
+% like to export. Notice that \texttt{ENTRY} takes three space-separated
+% lists as arguments; you must add extra fields in the first argument
+% (actually, the last two are empty).
+% \item in the function \texttt{entry.export.extra}, add a line of the
+% form
+% \begin{center}
+% \ttfamily
+% "myfield" myfield field.export
+% \end{center}
+% where \texttt{myfield} is the name of the extra field you want to
+% export.
+% \end{itemize}
+%
+% \subsection*{Acknowledgements}
+% I thank \'Eric Colin de Verdi\`ere and Richard Mathar
+% for suggesting several improvements or corrections.
+%
+% \section{The code}
+% \subsection{The shell script}
+% \subsubsection{Initialization}
+%
+%\begin{macro}{usage()}
+% We first define how the script should be used:
+% \begin{macrocode}
+%<*script>
+function usage()
+{
+echo "bibexport: a tool to extract BibTeX entries out of .bib files.
+usage: $0 [-h|v] [-n] [-b bst] [-a [-e file]...] [-o file] file...
+ -a, --all export the entire .bib files
+ -b, --bst specifies the .bst style file [default: export.bst]
+ -c, --crossref include entries that are crossref'd [default: yes]
+ -e file, --extra file extra .bib files to be used (for crossrefs)
+ -n, --no-crossref don't include crossref'd entries [default: no]
+ -o file write output to file [default: bibexport.bib]
+ -p, --preamble write a preamble at beginning of output
+ -t, --terse operate silently
+ -h, --help print this message and exit
+ -v, --version print version number and exit";
+exit 0;
+}
+%</script>
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{VERSION}
+%\begin{macro}{VDATE}
+%\begin{macro}{CREF}
+%\begin{macro}{FILE}
+%\begin{macro}{EXT}
+%\begin{macro}{EXTRA}
+%\begin{macro}{EXTRABIB}
+%\begin{macro}{SPACE}
+%\begin{macro}{BST}
+%\begin{macro}{TERSE}
+%\begin{macro}{NOBANNER}
+%\begin{macro}{ARGS}
+% We define the default value of some variables:
+% \begin{itemize}
+% \item \var{VERSION}: the version number,
+% \item \var{VDATE}: the release date,
+% \item \var{CREF}: the value of \verb+-min-crossrefs+,
+% \item \var{FILE}: the input file(s),
+% \item \var{EXT}: the extension (\ext{aux} or \ext{bib}) of input files,
+% \item \var{EXTRA}: list of possible extra \ext{bib} files without extension,
+% \item \var{EXTRABIB}: list of possible extra \ext{bib} files with extension,
+% \item \var{SPACE}: file name separator (can be \textvisiblespace, comma or empty),
+% \item \var{BST}: the \ext{bst} file to be used,
+% \item \var{TERSE}: tells \BibTeX{} to run silently,
+% \item \var{NOBANNER}: don't print the initial comment,
+% \item \var{ARGS}: the list of aruments passed to \texttt{bibexport.sh}.
+% \end{itemize}
+% \begin{macrocode}
+%<*script>
+VERSION="2.20";
+VDATE="2009/10/11";
+CROSSREF="1";
+FILE="";
+EXT=".aux";
+EXTRA="";
+EXTRABIB="";
+SPACE=" ";
+BST="export";
+TERSE="";
+NOBANNER="true";
+ARGS=$@;
+%</script>
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+% \subsubsection{Handling arguments}
+%
+% If no argument have been supplied, we call \script{usage()}.
+%
+% \begin{macrocode}
+%<*script>
+if [ $# -eq 0 ]; then
+ usage;
+fi
+%</script>
+% \end{macrocode}
+%
+% Otherwise, we enter a \verb+while+-loop for handling the whole list of arguments:
+% \begin{macrocode}
+%<*script>
+while [ $# != 0 ]; do
+ case $1 in
+%</script>
+% \end{macrocode}
+%\begin{itemize}
+%\item \verb+-a+ or \verb+--all+: export all the bibliography. This
+% means that we input \ext{bib} files.
+% \begin{macrocode}
+%<*script>
+ -a|--all)
+ EXT=""; SPACE="";
+ shift ;;
+%</script>
+% \end{macrocode}
+%\item \verb+-b+ or \verb+--bst+: specifies the style file. It seems
+% that \BibTeX{} does not like the \texttt{./\textit{style}.bst}
+% syntax, and we have to handle that case separately.
+% \begin{macrocode}
+%<*script>
+ -b|--bst)
+ if [ "`dirname $2`" = "." ]; then
+ DOLLARTWO="`basename $2 .bst`";
+ else
+ DOLLARTWO="`dirname $2`/`basename $2 .bst`";
+ fi
+ BST="${DOLLARTWO}";
+ shift 2;;
+%</script>
+% \end{macrocode}
+%\item \verb+-e+ or \verb+--extra+: when we want to export all the
+% entries of a \ext{bib} file, we can specify an extra \ext{bib} file
+% that would contain entries that we don't want to export, but that
+% are needed, \emph{e.g.} for crossrefs.
+% \begin{macrocode}
+%<*script>
+ -e|--extra)
+ if [ "`dirname $2`" = "." ]; then
+ DOLLARTWO="`basename $2 .bib`";
+ else
+ DOLLARTWO="`dirname $2`/`basename $2 .bib`";
+ fi
+ EXTRA="${EXTRA}${DOLLARTWO},";
+ EXTRABIB="${EXTRABIB},${DOLLARTWO}.bib";
+ shift 2;;
+%</script>
+% \end{macrocode}
+%\item \verb+-o+ or \verb+--output+: the name of the output file.
+% \begin{macrocode}
+%<*script>
+ -o|--output-file)
+ if [ "`dirname $2`" = "." ]; then
+ DOLLARTWO="`basename $2 .bib`";
+ else
+ DOLLARTWO="`dirname $2`/`basename $2 .bib`";
+ fi
+ OUTPUT="${DOLLARTWO}.bib";
+ shift 2 ;;
+%</script>
+% \end{macrocode}
+%\item \verb+-c+ or \verb+--crossref+ (or others): this options means
+% that we want crossrefs to be included. Note that for any entry,
+% field inheritage will be performed.
+% \begin{macrocode}
+%<*script>
+ -c|--crossref|--crossrefs|--with-crossref|--with-crossrefs)
+ CREF="1" ;
+ shift ;;
+%</script>
+% \end{macrocode}
+%\item \verb+-n+ or \verb+--no-crossref+: don't include crossref'ed
+% entries.
+% \begin{macrocode}
+%<*script>
+ -n|--no-crossref|--without-crossref)
+ CREF="20000" ;
+ shift ;;
+%</script>
+% \end{macrocode}
+%\item \verb+-v+ or \verb+--version+ for version number:
+% \begin{macrocode}
+%<*script>
+ -v|--version)
+ echo "This is bibexport v${VERSION} (released ${VDATE})"; exit 0;;
+%</script>
+% \end{macrocode}
+%\item \verb+-p+ or \verb+--preamble+ for inserting some informations
+% at the beginning of the output file:
+% \begin{macrocode}
+%<*script>
+ -p|--preamble)
+ NOBANNER="false";
+ shift ;;
+%</script>
+% \end{macrocode}
+%\item \verb+-t+ or \verb+--terse+ for asking \BibTeX{} to run silently:
+% \begin{macrocode}
+%<*script>
+ -t|--terse)
+ TERSE=" -terse ";
+ shift ;;
+%</script>
+% \end{macrocode}
+%\item other dash-options are erroneous (except \verb+-h+, but...):
+% \begin{macrocode}
+%<*script>
+ -*)
+ usage;;
+%</script>
+% \end{macrocode}
+%\item there should only remain file names: we add those names to the
+% list of files.
+% \begin{macrocode}
+%<*script>
+ *)
+ if [ "`dirname $1`" = "." ]; then
+ DOLLARONE="`basename $1 ${EXT}`";
+ else
+ DOLLARONE="`dirname $1`/`basename $1 ${EXT}`";
+ fi
+ FILE="${FILE}${SPACE}${DOLLARONE}${EXT}";
+ if [ -z "${SPACE}" ]; then
+ SPACE=",";
+ fi;
+ shift;;
+%</script>
+% \end{macrocode}
+% \end{itemize}
+% That's all folks:
+% \begin{macrocode}
+%<*script>
+ esac
+done
+%</script>
+% \end{macrocode}
+%
+% \subsubsection{The core of the script}
+%
+% We first set the name of the result and intermediary files:
+% \begin{macrocode}
+%<*script>
+FINALFILE=${OUTPUT};
+if [ ! "${FINALFILE}" ]; then
+ FINALFILE="bibexport.bib";
+fi
+TMPFILE="bibexp.`date +%s`";
+%</script>
+% \end{macrocode}
+%
+% We then create the \ext{aux} file for the main run of \BibTeX. Note
+% that this could call \BibTeX, with the \bst{expkeys} file, in the
+% case where we want to export all entries of a \ext{bib} file but not
+% crossrefs. Note how, in that case, we trick \BibTeX for inputing
+% extra files twice: we include then with their short name first (with
+% no extension), and then with the full name. We \emph{need} to do that,
+% since \verb+string+ abbreviations must be defined first, while
+% crossrefs must occur after having been referenced.
+%
+% \begin{macrocode}
+%<*script>
+if [ -z "${EXT}" ]; then
+ if [ -z "${EXTRA}" ]; then
+ cat > ${TMPFILE}.aux <<EOF
+\citation{*}
+\bibdata{${FILE}}
+\bibstyle{${BST}}
+EOF
+ else
+ cat > ${TMPFILE}.aux <<EOF
+\citation{*}
+\bibdata{${FILE}}
+\bibstyle{expkeys}
+EOF
+ bibtex -min-crossrefs=${CREF} -terse ${TMPFILE};
+ mv -f ${TMPFILE}.bbl ${TMPFILE}.aux;
+ cat >> ${TMPFILE}.aux <<EOF
+\bibdata{${EXTRA}${FILE}${EXTRABIB}}
+\bibstyle{${BST}}
+EOF
+ fi
+else
+ cat ${FILE} | sed -e "s/bibstyle{.*}/bibstyle{${BST}}/" > ${TMPFILE}.aux;
+fi
+%</script>
+% \end{macrocode}
+%
+% This was the hard part. We now call \BibTeX, clean and rename the
+% output file, and remove intermediary files:
+%
+% \begin{macrocode}
+%<*script>
+bibtex -min-crossrefs=${CREF} ${TERSE} ${TMPFILE}
+echo "" > ${FINALFILE}
+if [ ! "${NOBANNER}" = "true" ]; then
+ echo -ne "@comment{generated using bibexport:\n" >> ${FINALFILE};
+ echo -ne " creation date:\t`date +\"%c\"`\n" >> ${FINALFILE};
+ echo -ne " command:\t\t$0 ${ARGS}\n" >> ${FINALFILE};
+ echo -ne " bibexport-version:\tv${VERSION} (${VDATE})\n" >> ${FINALFILE};
+ echo -ne " bibexport-maintainer:\tmarkey(at)lsv.ens-cachan.fr\n" >> ${FINALFILE};
+ sed -ie "s/}/)/g" ${FINALFILE};
+ echo -ne "}\n\n\n" >> ${FINALFILE};
+fi
+if [ ! "x${CREF}" = "x1" ]; then
+ sed -r -e \
+ "/^ *[cC][rR][oO][sS][sS][rR][eE][fF] *= *[^,]+,?$/d" \
+ ${TMPFILE}.bbl >> ${FINALFILE};
+else
+ cat ${TMPFILE}.bbl >> ${FINALFILE};
+fi
+rm -f ${TMPFILE}.bbl ${TMPFILE}.aux ${TMPFILE}.blg
+%</script>
+% \end{macrocode}
+%
+%
+% \subsection{The \bst{expkeys} file}
+%
+% The only role of that file is to export the list of entries to be
+% exported. It is used when we export all the entries of \ext{bib}
+% files, except those of \emph{extra} \ext{bib} files.
+% Thus:
+% \begin{macrocode}
+%<*expkeys>
+ENTRY{}{}{}
+READ
+FUNCTION{export.key}
+{
+ "\citation{" cite$ "}" * * write$ newline$
+}
+ITERATE{export.key}
+%</expkeys>
+% \end{macrocode}
+%
+% \subsection{The \bst{export} file}
+%
+% \subsubsection{Some configuration values}
+% \begin{macro}{left.width}
+% \begin{macro}{right.width}
+% \begin{macro}{url.right.width}
+% \begin{macro}{left.short.width}
+% \begin{macro}{right.short.width}
+% \begin{macro}{left.delim}
+% \begin{macro}{right.delim}
+% We define here the indentation values, and the field
+% delimiters. \emph{short} width are used for \entry{preamble}.
+% \begin{macrocode}
+%<*export>
+FUNCTION{left.width}{#18}
+FUNCTION{right.width}{#55}
+FUNCTION{url.right.width}{#61}
+FUNCTION{left.short.width}{#10} %% for @preamble
+FUNCTION{right.long.width}{#63}
+FUNCTION{left.delim}{"{"}
+FUNCTION{right.delim}{"}"}
+%FUNCTION{left.delim}{quote$}
+%FUNCTION{right.delim}{quote$}
+%</export>
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+% \subsubsection{Entries}
+% We use standard entries here. Of course, more entries could be added
+% for special \ext{bib} files. Those extra entries will also have to
+% be added in the main exporting function.
+% \begin{macro}{ENTRY}
+% \begin{macrocode}
+%<*export>
+ENTRY{
+% Standard fields:
+ address
+ author
+ booktitle
+ chapter
+ edition
+ editor
+ howpublished
+ institution
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ volume
+ year
+% Special (but still somewhat standard) fields (natbib, germbib, ...):
+ abstract
+ doi
+ eid
+ isbn
+ issn
+ language
+ url
+}{}{}
+%</export>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Basic functions}
+%
+% No comment.
+%\begin{macro}{or}
+%\begin{macro}{and}
+%\begin{macro}{not}
+% \begin{macrocode}
+%<*export>
+FUNCTION{not}
+{
+ {#0}
+ {#1}
+ if$
+}
+FUNCTION{and}
+{
+ 'skip$
+ {pop$ #0}
+ if$
+}
+FUNCTION{or}
+{
+ {pop$ #1}
+ 'skip$
+ if$
+}
+%</export>
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+% \subsubsection{Splitting strings}
+%
+% We design functions for splitting strings, so that the final
+% \ext{bib} file will be cleanly indented.
+% \begin{macro}{space.complete}
+% \begin{macro}{split.string}
+% \begin{macro}{split.url}
+% \begin{macro}{split name}
+% \begin{macrocode}
+%<*export>
+INTEGERS{left.length right.length}
+STRINGS{ s t }
+FUNCTION{space.complete}
+{
+ 'left.length :=
+ duplicate$ text.length$ left.length swap$ -
+ {duplicate$ #0 >}
+ {
+ swap$ " " * swap$ #1 -
+ }
+ while$
+ pop$
+}
+FUNCTION{split.string}
+{
+ 'right.length :=
+ duplicate$ right.length #1 + #1 substring$ "" =
+ {""}
+ {
+ 's :=
+ right.length
+ {duplicate$ duplicate$ s swap$ #1 substring$ " " = not and}
+ {#1 -}
+ while$
+ duplicate$ #2 <
+ {
+ pop$ " " s * ""
+ }
+ {
+ duplicate$ s swap$ #1 swap$ substring$
+ swap$
+ s swap$ global.max$ substring$
+ }
+ if$
+ }
+ if$
+}
+FUNCTION{split.url}
+{
+ 'right.length :=
+ duplicate$ right.length #1 + #1 substring$ "" =
+ {""}
+ {
+ 's :=
+ right.length
+ {duplicate$ duplicate$ s swap$ #1 substring$ "/" = not and}
+ {#1 -}
+ while$
+ duplicate$ #2 <
+ {
+ pop$ " " s * ""
+ }
+ {
+ duplicate$ s swap$ #1 swap$ substring$
+ swap$ #1 +
+ s swap$ global.max$ substring$
+ }
+ if$
+ }
+ if$
+}
+FUNCTION{split.name}
+{
+ 'right.length :=
+ duplicate$ right.length #1 + #1 substring$ "" =
+ {""}
+ {
+ 's :=
+ right.length
+ {duplicate$ duplicate$ s swap$ #5 substring$ " and " = not and}
+ {#1 -}
+ while$
+ duplicate$ #2 <
+ {
+ pop$ " " s * ""
+ }
+ {
+ #4 + duplicate$ s swap$ #1 swap$ substring$
+ swap$
+ s swap$ global.max$ substring$
+ }
+ if$
+ }
+ if$
+}
+%</export>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \subsubsection{Exporting fields}
+%
+% Here, we have four exporting functions, since we also have to deal
+% with abbreviations:
+%\begin{macro}{field.export}
+%\begin{macro}{abbrv.export}
+%\begin{macro}{name.export}
+%\begin{macro}{url.export}
+% \begin{macrocode}
+%<*export>
+FUNCTION{field.export}
+{
+ duplicate$ missing$
+ 'skip$
+ {
+ left.delim swap$ * right.delim *
+ swap$
+ " " swap$ * " = " * left.width space.complete
+ swap$ "," *
+ {duplicate$ "" = not}
+ {
+ right.width split.string 't :=
+ *
+ write$ newline$
+ "" left.width space.complete t
+ }
+ while$
+ }
+ if$
+ pop$ pop$
+}
+FUNCTION{abbrv.export}
+{
+ duplicate$ missing$
+ 'skip$
+ {
+ swap$
+ " " swap$ * " = " * left.width space.complete
+ swap$ "," *
+ {duplicate$ "" = not}
+ {
+ right.width split.string 't :=
+ *
+ write$ newline$
+ "" left.width space.complete t
+ }
+ while$
+ }
+ if$
+ pop$ pop$
+}
+FUNCTION{name.export}
+{
+ duplicate$ missing$
+ 'skip$
+ {
+ left.delim swap$ * right.delim *
+ swap$
+ " " swap$ * " = " * left.width space.complete
+ swap$ "," *
+ {duplicate$ "" = not}
+ {
+ right.width split.name 't :=
+ *
+ write$ newline$
+ "" left.width space.complete t
+ }
+ while$
+ }
+ if$
+ pop$ pop$
+}
+FUNCTION{url.export}
+{
+ duplicate$ missing$
+ 'skip$
+ {
+ left.delim swap$ * right.delim *
+ swap$
+ " " swap$ * " = " * left.width space.complete
+ swap$ "," *
+ {duplicate$ "" = not}
+ {
+ url.right.width split.url 't :=
+ *
+ write$ newline$
+ "" left.width space.complete t
+ }
+ while$
+ }
+ if$
+ pop$ pop$
+}
+%</export>
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+% \subsubsection{Handling abbreviations}
+%
+% Abbreviations are difficult to deal with if we wish to still use
+% them, since \BibTeX will expand them before we can do anything. All we
+% can do is to define them in a special way, in order to be able to get
+% back to the abbreviations later on. This is precisely what we do:
+%\begin{macro}{jan-dec}
+%\begin{macro}{acmcs-tcs}
+%\begin{macro}{remove.exports.from.months}
+%\begin{macro}{remove.export.from.journal}
+% \begin{macrocode}
+%<*export>
+MACRO{jan}{"export-jan"}
+MACRO{feb}{"export-feb"}
+MACRO{mar}{"export-mar"}
+MACRO{apr}{"export-apr"}
+MACRO{may}{"export-may"}
+MACRO{jun}{"export-jun"}
+MACRO{jul}{"export-jul"}
+MACRO{aug}{"export-aug"}
+MACRO{sep}{"export-sep"}
+MACRO{oct}{"export-oct"}
+MACRO{nov}{"export-nov"}
+MACRO{dec}{"export-dec"}
+MACRO{acmcs}{"export-acmcs"}
+MACRO{acta}{"export-acta"}
+MACRO{cacm}{"export-cacm"}
+MACRO{ibmjrd}{"export-ibmjrd"}
+MACRO{ibmsj}{"export-ibmsj"}
+MACRO{ieeese}{"export-ieeese"}
+MACRO{ieeetc}{"export-ieeetc"}
+MACRO{ieeetcad}{"export-ieeetcad"}
+MACRO{ipl}{"export-ipl"}
+MACRO{jacm}{"export-jacm"}
+MACRO{jcss}{"export-jcss"}
+MACRO{scp}{"export-scp"}
+MACRO{sicomp}{"export-sicomp"}
+MACRO{tocs}{"export-tocs"}
+MACRO{tods}{"export-tods"}
+MACRO{tog}{"export-tog"}
+MACRO{toms}{"export-toms"}
+MACRO{toois}{"export-poois"}
+MACRO{toplas}{"export-toplas"}
+MACRO{tcs}{"export-tcs"}
+INTEGERS{ intxt }
+FUNCTION{remove.exports.from.months}
+{
+ #0 'intxt :=
+ duplicate$ missing$
+ 'skip$
+ {'t :=
+ ""
+ {t #1 #1 substring$ "" = not}
+ {
+ t #1 #7 substring$ "export-" =
+ {intxt
+ {right.delim * #0 'intxt :=}
+ 'skip$
+ if$
+ duplicate$ "" =
+ 'skip$
+ {" # " *}
+ if$
+ t #8 #3 substring$ *
+ t #11 global.max$ substring$ 't :=}
+ {intxt
+ 'skip$
+ {duplicate$ "" =
+ {}
+ {" # " *}
+ if$
+ left.delim * #1 'intxt :=}
+ if$
+ t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=}
+ if$
+ }
+ while$
+ intxt
+ {right.delim *}
+ 'skip$
+ if$
+ }
+ if$
+}
+FUNCTION{remove.export.from.journals}
+{
+ duplicate$ missing$
+ 'skip$
+ {
+ duplicate$ #1 #7 substring$ "export-" =
+ {#8 global.max$ substring$}
+ {left.delim swap$
+ right.delim * *}
+ if$
+ }
+ if$
+}
+%</export>
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+% \subsubsection{Now, we export...}
+%
+% We gather everything. This is were special fields must be added for
+% being exported:
+%\begin{macro}{entry.export.standard}
+%\begin{macro}{entry.export.extra}
+%\begin{macro}{entry.export}
+%\begin{macro}{export}
+% \begin{macrocode}
+%<*export>
+FUNCTION{entry.export.standard}
+{
+ "address" address field.export
+ "author" author name.export
+ "booktitle" booktitle field.export
+ "chapter" chapter field.export
+ "crossref" crossref field.export
+ "edition" edition field.export
+ "editor" editor name.export
+ "howpublished" howpublished field.export
+ "institution" institution field.export
+ "journal" journal remove.export.from.journals abbrv.export
+ "key" key field.export
+ "month" month remove.exports.from.months abbrv.export
+ "note" note field.export
+ "number" number field.export
+ "organization" organization field.export
+ "pages" pages field.export
+ "publisher" publisher field.export
+ "school" school field.export
+ "series" series field.export
+ "type" type field.export
+ "title" title field.export
+ "volume" volume field.export
+ "year" year field.export
+}
+FUNCTION{entry.export.extra}
+{
+ "abstract" abstract field.export
+ "doi" doi field.export
+ "eid" eid field.export
+ "isbn" isbn field.export
+ "issn" issn field.export
+ "language" language field.export
+ "url" url url.export
+}
+FUNCTION{entry.export}
+{
+ entry.export.standard
+ entry.export.extra
+}
+FUNCTION{export}
+{
+ "@" type$ * "{" * cite$ * "," * write$ newline$
+ entry.export
+ "}" write$ newline$ newline$
+}
+%</export>
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+% \subsubsection{Miscellanea}
+% We also have to handle preamble, and to define functions for each
+% entry type (we won't use them but otherwise, \BibTeX would complain).
+%
+%\begin{macro}{preamble}
+%\begin{macro}{header}
+%\begin{macro}{entries.headers}
+%\begin{macro}{article-unpublished}
+% \begin{macrocode}
+%<*export>
+FUNCTION{preamble}
+{
+preamble$ duplicate$ "" =
+ 'pop$
+ {
+ ",-------------------." write$ newline$
+ "| PREAMBLE |" write$ newline$
+ "`-------------------'" write$ newline$ newline$
+ "@preamble{ " swap$
+ quote$ swap$ * quote$ *
+ {duplicate$ "" = not}
+ {
+ right.long.width split.string 't :=
+ *
+ write$ newline$
+ "" left.short.width space.complete t
+ }
+ while$
+ "}" write$ newline$ newline$
+ pop$ pop$
+ }
+if$
+}
+FUNCTION{header}
+{
+%"** This file has been automatically generated by bibexport **"
+%write$ newline$
+%"** See http://www.lsv.ens-cachan.fr/~markey/bibla.php **"
+%write$ newline$
+%"** for more informations about bibexport. **"
+%write$ newline$
+newline$
+}
+FUNCTION{entries.header}
+{
+preamble$ "" =
+ 'skip$
+ {
+ ",-------------------." write$ newline$
+ "| BIBTEX ENTRIES |" write$ newline$
+ "`-------------------'" write$ newline$ newline$
+ }
+if$
+}
+FUNCTION{article}{export}
+FUNCTION{book}{export}
+FUNCTION{booklet}{export}
+FUNCTION{conference}{export}
+FUNCTION{habthesis}{export}
+FUNCTION{inbook}{export}
+FUNCTION{incollection}{export}
+FUNCTION{inproceedings}{export}
+FUNCTION{journals}{export}
+FUNCTION{manual}{export}
+FUNCTION{mastersthesis}{export}
+FUNCTION{misc}{export}
+FUNCTION{phdthesis}{export}
+FUNCTION{proceedings}{export}
+FUNCTION{techreport}{export}
+FUNCTION{unpublished}{export}
+%</export>
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+% \subsubsection{Main program}
+%
+% We now can execute and iterate those functions:
+%
+% \begin{macrocode}
+%<*export>
+READ
+EXECUTE{header}
+EXECUTE{preamble}
+EXECUTE{entries.header}
+ITERATE{export}
+%</export>
+% \end{macrocode}
+%
+% \Finale
+\endinput
diff --git a/Master/texmf-dist/source/latex/bibexport/bibexport.ins b/Master/texmf-dist/source/latex/bibexport/bibexport.ins
new file mode 100644
index 00000000000..084404ffb29
--- /dev/null
+++ b/Master/texmf-dist/source/latex/bibexport/bibexport.ins
@@ -0,0 +1,69 @@
+\NeedsTeXFormat{LaTeX2e}[1996/12/01]
+\input docstrip
+
+{\catcode`\#=12
+ \gdef\DoubleSharp{##}
+}
+
+\let\MetaPrefix\DoubleSharp
+\preamble
+
+(c) 2005/02/27 Nicolas Markey <markey at lsv dot ens-cachan dot fr>
+All rights reserved.
+
+This work may be distributed and/or modified under the conditions of
+the LaTeX Project Public License, either version 1.3 of this license
+or (at your option) any later version. The latest version of the
+license is in
+
+ http://www.latex-project.org/lppl.txt
+
+and version 1.3 or later is part of all distributions of LaTeX
+version 2003/12/01 or later.
+
+\endpreamble
+\postamble
+\endpostamble
+{\catcode`\#=12\relax
+ \let\olddefaultpreamble\defaultpreamble
+ \xdef\defaultpreamble{%
+ #!/bin/sh^^J%
+ \olddefaultpreamble}
+}
+\generate{\file{bibexport.sh}{\from{bibexport.dtx}{script}}}
+
+%%
+%%
+%%
+
+\let\MetaPrefix\DoubleperCent
+\preamble
+
+(c) 2005/02/27 Nicolas Markey <markey at lsv dot ens-cachan dot fr>
+All rights reserved.
+
+This work may be distributed and/or modified under the conditions of
+the LaTeX Project Public License, either version 1.3 of this license
+or (at your option) any later version. The latest version of the
+license is in
+
+ http://www.latex-project.org/lppl.txt
+
+and version 1.3 or later is part of all distributions of LaTeX
+version 2003/12/01 or later.
+
+\endpreamble
+\postamble
+\endpostamble
+\generate{\file{expkeys.bst}{\from{bibexport.dtx}{expkeys}}%
+ \file{export.bst}{\from{bibexport.dtx}{export}}}
+
+%%
+%%
+%%
+
+\Msg{** To finish the installation, put both .bst files in a }
+\Msg{** place where BibTeX can find them, put the shell script}
+\Msg{** where your shell can find it, and make it executable.}
+
+\end
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index df1e30195a9..8bc1b7fe6da 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -40,7 +40,7 @@ my @WorkingTLP = qw(
beamer beamer-FUBerlin beamer-contrib beamer-tut-pt beamerposter
begriff bera betababel beton
bez123 bezos bgreek bib-fr bibarts bibhtml bibleref bibtopic
- bibtopicprefix
+ bibtopicprefix bibexport
bibunits bidi bigfoot binomexp bizcard blacklettert1 blindtext
blockdraw_mp blowup boisik
boites boldtensors bookest booklet booktabs boolexpr bophook bosisio
diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds
index 99b8382e807..1361aa8bc6a 100755
--- a/Master/tlpkg/libexec/ctan2tds
+++ b/Master/tlpkg/libexec/ctan2tds
@@ -1463,6 +1463,7 @@ $standardxmt='\.xmt';
%specialscripts = (
'a2ping' => '\.pl$',
'accfonts' => 'mkt1font|vpl2',
+ 'bibexport' => 'bibexport\.sh$',
'dviasm' => '\.py$',
'epspdf' => '(epspdf(|\.help|boot|tk)|\.rb|makegray\.pro)$',
'epstopdf' => 'epstopdf\.pl',
diff --git a/Master/tlpkg/tlpsrc/bibexport.tlpsrc b/Master/tlpkg/tlpsrc/bibexport.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/bibexport.tlpsrc
diff --git a/Master/tlpkg/tlpsrc/collection-bibtexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-bibtexextra.tlpsrc
index f76b21f8fc5..c959ba6835c 100644
--- a/Master/tlpkg/tlpsrc/collection-bibtexextra.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-bibtexextra.tlpsrc
@@ -7,6 +7,7 @@ depend apacite
depend apalike2
depend beebe
depend bibarts
+depend bibexport
depend bibhtml
depend biblist
depend bibtopic