summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/notes2bib
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-04-03 21:15:59 +0000
committerKarl Berry <karl@freefriends.org>2010-04-03 21:15:59 +0000
commitd0303a8ab6faea3619305ff94bc8e3aa2f497813 (patch)
tree65fcc108352aa20767d9d345fe9c9b4f8f8984bf /Master/texmf-dist/source/latex/notes2bib
parenta589cb25f922e7ce0e9390d80e689b9f7571feac (diff)
notes2bib update
git-svn-id: svn://tug.org/texlive/trunk@17665 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/notes2bib')
-rw-r--r--Master/texmf-dist/source/latex/notes2bib/notes2bib.dtx283
-rw-r--r--Master/texmf-dist/source/latex/notes2bib/notes2bib.ins75
2 files changed, 183 insertions, 175 deletions
diff --git a/Master/texmf-dist/source/latex/notes2bib/notes2bib.dtx b/Master/texmf-dist/source/latex/notes2bib/notes2bib.dtx
index 6f37ce37c27..62d58149685 100644
--- a/Master/texmf-dist/source/latex/notes2bib/notes2bib.dtx
+++ b/Master/texmf-dist/source/latex/notes2bib/notes2bib.dtx
@@ -233,7 +233,7 @@ This work consists of the file notes2bib.dtx
% which will always be added to the bibliography. The package allows
% footnotes and endnotes to be moved into the bibliography in the same
% way. The package can be used with \pkg{natbib} and \pkg{biblatex} as
-% well as plain \LaTeX\ citations. Both sorted and unsorted bibliography
+% well as plain LaTeX citations. Both sorted and unsorted bibliography
% styles are supported.
%\end{abstract}
%
@@ -254,7 +254,7 @@ This work consists of the file notes2bib.dtx
%
% The aim of the \pkg{notes2bib} package is to make integration of notes
% into the bibliography easy. Notes can be written as normal in the
-% \LaTeX\ source, and are automatically moved to the bibliography. The
+% LaTeX source, and are automatically moved to the bibliography. The
% package is compatible with sorted and unsorted bibliography styles.
% The package has been designed for use with numerical citations,
% although it will work with other systems.
@@ -272,12 +272,12 @@ This work consists of the file notes2bib.dtx
% \texttt{latex \jobname.dtx} will extract it and also typeset the
% documentation.
%
-% The package requires \LaTeX3 support as provided in the
+% The package requires LaTeX3 support as provided in the
% \pkg{expl3} and \pkg{xpackages} bundles. Both of these are available
% on \href{http://www.ctan.org}{\textsc{ctan}} as ready-to-install
-% zip files. Suitable versions are available in MiK\TeX\ 2.8 and
-% \TeX\ Live 2009 (updating the relevant packages online may be
-% necessary). \LaTeX3, and so \pkg{notes2bib}, requires the \eTeX\
+% zip files. Suitable versions are available in MiKTeX 2.8 and
+% TeX Live 2009 (updating the relevant packages online may be
+% necessary). LaTeX3, and so \pkg{notes2bib}, requires the e-TeX
% extensions: these are available on all modern \TeX\ systems.
%
% Typesetting the documentation requires a number of packages in
@@ -343,7 +343,7 @@ This work consists of the file notes2bib.dtx
%\end{syntax}
% In common with \cs{footnote}, the basic \cs{bibnote} macro has
% companion macros \cs{bibnotemark} and \cs{bibnotetext}. In contrast
-% to the \LaTeXe\ kernel \cs{footnote} macro, \cs{bibnote} is naturally
+% to the LaTeX2e kernel \cs{footnote} macro, \cs{bibnote} is naturally
% robust and so \cs{bibnotemark} and \cs{bibnotetext} should be needed
% much more rarely than the \cs{footnote} versions.
%
@@ -588,8 +588,8 @@ This work consists of the file notes2bib.dtx
% \end{syntax}
% These functions record the notes which have been placed outside of
% the normal order by the package. This information is used to check
-% for changes in note order between \LaTeX\ runs, so that the need for
-% re-running \LaTeX\ and \BibTeX\ can be detected.
+% for changes in note order between LaTeX runs, so that the need for
+% re-running LaTeX and BibTeX can be detected.
%
%\section{Notes for upgrading from version one}
%
@@ -695,7 +695,7 @@ This work consists of the file notes2bib.dtx
% "\niib_cite:w" \marg{note-name}
% \end{syntax}
% The function used by \pkg{notes2bib} to store the citation command
-% needed to cite notes. This will be a \LaTeXe\ user function, and so
+% needed to cite notes. This will be a LaTeX2e user function, and so
% the input syntax will require one mandatory argument.
%\end{function}
%
@@ -780,27 +780,12 @@ This work consists of the file notes2bib.dtx
% <text>.
%\end{function}
%
-%\begin{function}{\niib_check_cite:}
-% \begin{syntax}
-% "\niib_check_cite:"
-% \end{syntax}
-% Checks and makes changes appropriate if the \pkg{cite} package is
-% loaded.
-%\end{function}
-%
-%\begin{function}{\niib_check_rerun:}
-% \begin{syntax}
-% "\niib_check_rerun:"
-% \end{syntax}
-% Checks if additional \LaTeX\ runs are required.
-%\end{function}
-%
%\begin{function}{\niib_create_print_notes:}
% \begin{syntax}
% "\niib_create_print_notes:"
% \end{syntax}
-% Creates the appropriate \cs{niib_print_notes:} function at the
-% start of the document.
+% Creates the \cs{niib_print_notes:} function when using
+% \pkg{biblatex}.
%\end{function}
%
%\begin{function}{
@@ -819,10 +804,10 @@ This work consists of the file notes2bib.dtx
% \begin{syntax}
% "\niib_filesw:"
% \end{syntax}
-% A copy of \LaTeXe's \cs{if@filesw}.
+% A copy of LaTeXe's \cs{if@filesw}.
%\end{function}
%
-%\begin{function}{ \niib_record_notes:}
+%\begin{function}{\niib_record_notes:}
%\changes{v2.0b}{2010/01/09}{Documentation change from erroneous
% \cs{niib_flush_after_notes:}}
% \begin{syntax}
@@ -882,44 +867,7 @@ This work consists of the file notes2bib.dtx
%\end{function}
%
%\begin{function}{
-% \niib_save_endnote: |
-% \niib_save_footnote:
-%}
-% \begin{syntax}
-% "\niib_save_endnote:"
-% \end{syntax}
-% Saves current definitions for endnote and footnote functions for
-% later recovery.
-%\end{function}
-%
-%\begin{function}{\niib_set_mark_note_after:}
-%
-%\changes{v2.0a}{2009/11/01}{Documentation correction from incorrect
-% name \cs{niib_set_cite_after:}}
-% \begin{syntax}
-% "\niib_set_mark_note_after:"
-% \end{syntax}
-% Sets up function for including notes after citations, appropriate to
-% the other packages loaded.
-%\end{function}
-%
-%\begin{function}{\niib_set_sortkey_name:}
-% \begin{syntax}
-% "\niib_set_sortkey_name:"
-% \end{syntax}
-% Sets up name for sort key, appropriate to the other packages loaded.
-%\end{function}
-%
-%\begin{function}{\niib_stream_check:}
-% \begin{syntax}
-% "\niib_stream_check:"
-% \end{syntax}
-% Checks that a stream is open to write notes into: one is opened if
-% not.
-%\end{function}
-%
-%\begin{function}{
-% \niib_to_bibnote:n |
+% \niib_to_bibnote:n |
% \niib_from_bibnote:n
%}
% \begin{syntax}
@@ -948,13 +896,6 @@ This work consists of the file notes2bib.dtx
% Writes <text> of <note-name> to database.
%\end{function}
%
-%\begin{function}{\niib_write_total_notes:}
-% \begin{syntax}
-% "\niib_write_total_notes:"
-% \end{syntax}
-% Records total number of auto-numbered notes to the \texttt{aux} file.
-%\end{function}
-%
%\section{Implementation}
%
%\changes{v2.0a}{2009/11/01}{Changed all \cs{cs_set:Nn}, \emph{etc}.\
@@ -962,7 +903,17 @@ This work consists of the file notes2bib.dtx
%\changes{v2.0b}{2010/01/09}{A few missed \cs{cs_set:Nn}, \cs{cs_set:Nx},
% \emph{etc}.\ changed}
%\changes{v2.0b}{2010/01/09}{Reformatted code to reflect style settled
-% on by \LaTeX3 Project}
+% on by LaTeX3 Project}
+%\changes{v2.0c}{2010/02/09}{Switch from \cs{iow_space:} to
+% \cs{c_space_tl}}
+%\changes{v2.0c}{2010/02/09}{Collect all notes into a token register
+% and write in one go to file (using a pooled stream)}
+%\changes{v2.0c}{2010/02/09}{Items \cs{AtBeginDocument} and
+% \cs{AtEndDocument} now set up directly (no functions needed)
+% unless the function is required for other reasons}
+%\changes{v2.0c}{2010/03/30}{Make internal functions protected}
+%\changes{v2.0c}{2010/03/30}{Change token registers to token list
+% variables}
%
% \begin{macrocode}
%<*package>
@@ -971,7 +922,7 @@ This work consists of the file notes2bib.dtx
% Version data to start with.
% \begin{macrocode}
\ProvidesExplPackage
- {notes2bib} {2010/01/11} {2.0b}
+ {notes2bib} {2010/03/30} {2.0c}
{Integrating notes into the bibliography}
\RequirePackage{l3keys2e}
% \end{macrocode}
@@ -983,8 +934,9 @@ This work consists of the file notes2bib.dtx
% file. Setting this up as a constant means that it can be changed
% (for example for translation) if necessary.
% \begin{macrocode}
-\tl_new:Nn \c_niib_file_message_tl {
- This~is~an~auxiliary~file~used~by~the~`notes2bib'~package.
+\tl_new:N \c_niib_file_message_tl
+\tl_set:Nn \c_niib_file_message_tl {
+ This~is~an~auxiliary~file~used~by~the~'notes2bib'~package.
\iow_newline:
This~file~may~safely~be~deleted.
\iow_newline:
@@ -1038,7 +990,7 @@ This work consists of the file notes2bib.dtx
%\begin{macro}{\g_niib_previous_after_clist}
%\begin{macro}{\g_niib_previous_before_clist}
% For comparison purposes, the lists of out-of-order notes from the
-% previous \LaTeX\ run are needed.
+% previous LaTeX run are needed.
% \begin{macrocode}
\clist_new:N \g_niib_previous_after_clist
\clist_new:N \g_niib_previous_before_clist
@@ -1049,12 +1001,20 @@ This work consists of the file notes2bib.dtx
%\begin{macro}{\g_niib_previous_notes_int}
% The total number of notes created is needed, as this is used to see
% if any zero-padding is required for the numbers. Of course, for this
-% to work there has to be a second \LaTeX\ run.
+% to work there has to be a second LaTeX run.
% \begin{macrocode}
\int_new:N \g_niib_previous_notes_int
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\g_niib_notes_tl}
+% Used to collect up the note text for writing in a single block
+% at the end of the document.
+% \begin{macrocode}
+\tl_new:N \g_niib_notes_tl
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\l_niib_sortkey_field_tl}
% The key for sorting is called \texttt{key} by standard \BibTeX\ and
% \texttt{sortkey} by \pkg{biblatex}. It keeps everything clearer if
@@ -1178,11 +1138,11 @@ This work consists of the file notes2bib.dtx
% A few options need to be altered or deactivated at the start of
% the document.
% \begin{macrocode}
-\cs_set_nopar:Npn \niib_options_redefine: {
+\AtBeginDocument {
\keys_define:nn { notes2bib }
{
cite-function .code:n =
- { \cs_set_eq:NN \niib_cite:w ##1 } ,
+ { \cs_set_eq:NN \niib_cite:w #1 } ,
file-name .code:n =
{ \msg_info:nnn { notes2bib } { preamble-only } { file-name } },
convert-endnotes / false .code:n =
@@ -1197,7 +1157,6 @@ This work consists of the file notes2bib.dtx
}
\msg_new:nnn { notes2bib } { preamble-only }
{The option `#1' can only be used in the preamble.}
-\AtBeginDocument { \niib_options_redefine: }
% \end{macrocode}
%
%\subsection{Options from version one}
@@ -1241,7 +1200,7 @@ This work consists of the file notes2bib.dtx
% something printable. The value tests here mean that if there are more
% than nine notes, notes 1--9 have the number padded to get proper
% sorting. This needs two passes, as the total number of notes is only
-% available at the end of the \LaTeX\ run.
+% available at the end of the LaTeX run.
% \begin{macrocode}
\cs_new_nopar:Npn \niib_note_name: {
\tl_use:N \l_niib_note_name_tl
@@ -1281,7 +1240,7 @@ This work consists of the file notes2bib.dtx
% auxiliary is called. The nature of the second function is dependent
% on the other packages loaded.
% \begin{macrocode}
-\cs_new:Npn \niib_mark_note_after:n #1 {
+\cs_new_protected:Npn \niib_mark_note_after:n #1 {
\int_gincr:N \g_niib_total_notes_int
\clist_gput_right:Nx \g_niib_after_clist {#1}
\niib_mark_note_after_aux:n {#1}
@@ -1293,9 +1252,9 @@ This work consists of the file notes2bib.dtx
%
%\begin{macro}{\niib_mark_note_before:n}
% Notes to appear before all citations are simple recorded, as they will
-% be set up on the next \LaTeX\ run.
+% be set up on the next LaTeX run.
% \begin{macrocode}
-\cs_new:Npn \niib_mark_note_before:n #1 {
+\cs_new_protected:Npn \niib_mark_note_before:n #1 {
\int_gincr:N \g_niib_total_notes_int
\clist_gput_right:Nx \g_niib_before_clist {#1}
\niib_cite:w {#1}
@@ -1307,7 +1266,7 @@ This work consists of the file notes2bib.dtx
% Mixed citations are very easy to handle: just use whatever cite
% command is current.
% \begin{macrocode}
-\cs_new:Npn \niib_mark_note_mixed:n #1 {
+\cs_new_protected:Npn \niib_mark_note_mixed:n #1 {
\int_gincr:N \g_niib_total_notes_int
\niib_cite:w {#1}
}
@@ -1315,25 +1274,6 @@ This work consists of the file notes2bib.dtx
%\end{macro}
%
%\subsection{Writing note text to the database}
-%
-%\begin{macro}{\niib_stream_check:}
-%\begin{macro}{\g_niib_file_stream}
-% All notes are written to a temporary file. This is only opened if
-% necessary, as this means that \pkg{notes2bib} can be loaded
-% \enquote{silently} in classes, \emph{etc}. The file name
-% is variable, but the extension is always \file{.bib}.
-% \begin{macrocode}
-\cs_new_nopar:Npn \niib_stream_check: {
- \cs_if_free:NT \g_niib_file_stream
- {
- \iow_new:N \g_niib_file_stream
- \iow_open:Nn \g_niib_file_stream { \g_niib_filename_tl .bib }
- \iow_now:Nx \g_niib_file_stream { \c_niib_file_message_tl }
- }
-}
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
%
%\begin{macro}{\niib_write_field:nn}
%\begin{macro}{\niib_write_field:Vn}
@@ -1344,7 +1284,7 @@ This work consists of the file notes2bib.dtx
% the intention of the code here clearer.
% \begin{macrocode}
\cs_new:Npn \niib_write_field:nn #1#2 {
- \iow_space: \iow_space: #1 \iow_space: = \iow_space: {#2} ,
+ \c_space_tl \c_space_tl #1 \c_space_tl = \c_space_tl {#2} ,
\iow_newline:
}
\cs_generate_variant:Nn \niib_write_field:nn { V }
@@ -1358,20 +1298,19 @@ This work consists of the file notes2bib.dtx
%\begin{macro}[aux]{\niib_write_note_aux:nn}
%\begin{macro}{\niib_write_note:xn}
% The writing function takes two arguments: the name of the note, and
-% the text itself. There is a need to check on the \LaTeXe\ system to
+% the text itself. There is a need to check on the LaTeX2e system to
% turn off writing, with a hand-over so there is no problem with
% balancing ifs.
% \begin{macrocode}
-\cs_new_nopar:Npn \niib_write_note:nn {
+\cs_new_protected_nopar:Npn \niib_write_note:nn {
\if@filesw
\exp_after:wN \niib_write_note_aux:nn
\else:
\exp_after:wN \use_none:nn
\fi:
}
-\cs_new:Npn \niib_write_note_aux:nn #1#2 {
- \niib_stream_check:
- \iow_now:Nx \g_niib_file_stream
+\cs_new_protected:Npn \niib_write_note_aux:nn #1#2 {
+ \tl_gput_right:Nx \g_niib_notes_tl
{
@ \l_niib_record_type_tl
{
@@ -1385,6 +1324,8 @@ This work consists of the file notes2bib.dtx
\niib_write_field:nn { keywords } { \l_niib_keyword_tl }
\niib_write_field:nn { presort } { \l_niib_presort_tl }
}
+ \iow_newline:
+ \iow_newline:
}
}
\cs_generate_variant:Nn \niib_write_note:nn { x }
@@ -1400,16 +1341,16 @@ This work consists of the file notes2bib.dtx
% Notes after citations are not written to the \file{aux} file when
% given, but are held in a queue. This is flushed here, which means
% actually doing the citation and also recording the notes so they
-% are available in the next \LaTeX\ run. The list is also transferred
+% are available in the next LaTeX run. The list is also transferred
% to a secondary one, which is used for comparison purposes right at the
% end of the document.
% \begin{macrocode}
-\cs_new_nopar:Npn \niib_record_notes: {
+\cs_new_protected_nopar:Npn \niib_record_notes: {
\if@filesw
\exp_after:wN \niib_flush_notes_aux:
\fi
}
-\cs_new_nopar:Npn \niib_flush_notes_aux: {
+\cs_new_protected_nopar:Npn \niib_flush_notes_aux: {
\clist_if_empty:NF \g_niib_before_clist
{
\iow_now:Nx \@auxout
@@ -1436,7 +1377,7 @@ This work consists of the file notes2bib.dtx
% Converting other notes to bibliography notes is simple: just set
% them equal.
% \begin{macrocode}
-\cs_new_nopar:Npn \niib_to_bibnote:n #1 {
+\cs_new_protected_nopar:Npn \niib_to_bibnote:n #1 {
\cs_set_eq:cN {#1} \bibnote
\cs_set_eq:cN { #1 mark } \bibnotemark
\cs_set_eq:cN { #1 text } \bibnotetext
@@ -1448,7 +1389,7 @@ This work consists of the file notes2bib.dtx
% The reverse process needs the original definitions, which are saved
% by the module for later recovery.
% \begin{macrocode}
-\cs_new_nopar:Npn \niib_from_bibnote:n #1 {
+\cs_new_protected_nopar:Npn \niib_from_bibnote:n #1 {
\cs_set_eq:cc {#1} { niib_ #1 :w }
\cs_set_eq:cc { #1 mark } { niib_ #1 mark:w }
\cs_set_eq:cc { #1 text } { niib_ #1 text:w }
@@ -1456,11 +1397,9 @@ This work consists of the file notes2bib.dtx
% \end{macrocode}
%\end{macro}
%
-%\begin{macro}{\niib_save_endnote:}
%\begin{macro}{\niib_endnote:w}
%\begin{macro}{\niib_endnotemark:w}
%\begin{macro}{\niib_endnotetext:w}
-%\begin{macro}{\niib_save_footnote:}
%\begin{macro}{\niib_footnote:w}
%\begin{macro}{\niib_footnotemark:w}
%\begin{macro}{\niib_footnotetext:w}
@@ -1468,20 +1407,14 @@ This work consists of the file notes2bib.dtx
% footnotes are saved so that footnotes and endnotes can be turned into
% bibliography notes and back again.
% \begin{macrocode}
-\cs_new_nopar:Npn \niib_save_endnote: {
+\AtBeginDocument {
\cs_set_eq:NN \niib_endnote:w \endnote
\cs_set_eq:NN \niib_endnotemark:w \endnotemark
\cs_set_eq:NN \niib_endnotetext:w \endnotetext
-}
-\cs_new_nopar:Npn \niib_save_footnote: {
\cs_set_eq:NN \niib_footnote:w \footnote
\cs_set_eq:NN \niib_footnotemark:w \footnotemark
\cs_set_eq:NN \niib_footnotetext:w \footnotetext
}
-\AtBeginDocument {
- \niib_save_endnote:
- \niib_save_footnote:
-}
% \end{macrocode}
%\end{macro}
%\end{macro}
@@ -1489,43 +1422,38 @@ This work consists of the file notes2bib.dtx
%\end{macro}
%\end{macro}
%\end{macro}
-%\end{macro}
-%\end{macro}
%
%\subsection{Package-dependent code}
%
%\begin{macro}{\niib_create_print_notes:}
-%\begin{macro}[aux]{\niib_create_print_notes_aux:}
%\begin{macro}{\niib_print_notes:}
% The method for printing notes depends on whether \pkg{biblatex} is
% in use. If it is, then a selective call to \cs{printbibliography} is
% made. Otherwise, the original \cs{bibliography} function is called,
% and passed the name of the notes file.
% \begin{macrocode}
-\cs_new_nopar:Npn \niib_create_print_notes: {
+\AtBeginDocument {
\@ifpackageloaded { biblatex }
{
- \cs_new_nopar:Npn \niib_print_notes:
+ \cs_new_protected_nopar:Npn \niib_print_notes:
{
- \cs_set_nopar:Npx \niib_create_print_notes_aux:
+ \cs_set_nopar:Npx \niib_create_print_notes:
{
\printbibliography
[ keyword = \exp_not:V \l_niib_keyword_tl ]
}
- \niib_create_print_notes_aux:
+ \niib_create_print_notes:
}
}
{
- \cs_new_nopar:Npn \niib_print_notes:
+ \cs_new_protected_nopar:Npn \niib_print_notes:
{ \exp_args:NV \niib_bibliography:n \g_niib_filename_tl }
}
}
-\cs_new_nopar:Npn \niib_create_print_notes_aux: { }
-\AtBeginDocument { \niib_create_print_notes: }
+\cs_new_nopar:Npn \niib_create_print_notes: { }
% \end{macrocode}
%\end{macro}
%\end{macro}
-%\end{macro}
%
%\begin{macro}{\niib_attach_bibliography:}
%\begin{macro}{\bibliography}
@@ -1559,61 +1487,53 @@ This work consists of the file notes2bib.dtx
}
}
}
-\@ifpackageloaded { biblatex } {
- \exp_args:NV \bibliography \g_niib_filename_tl
- \cs_gundefine:N \niib_attach_bibliography:
-}{
- \AtBeginDocument { \niib_attach_bibliography: }
-}
+\@ifpackageloaded { biblatex }
+ {
+ \exp_args:NV \bibliography \g_niib_filename_tl
+ \cs_gundefine:N \niib_attach_bibliography:
+ }
+ { \AtBeginDocument { \niib_attach_bibliography: } }
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%
-%\begin{macro}{\niib_set_sortkey_name:}
% \pkg{biblatex} uses the name \texttt{sortkey} for a key to sort by,
% whereas other style call the same concept \texttt{key}.
% \begin{macrocode}
-\cs_new_nopar:Npn \niib_set_sortkey_name: {
+\AtBeginDocument {
\@ifpackageloaded { biblatex }
{ \tl_set:Nn \l_niib_sortkey_field_tl { sortkey } }
{ \tl_set:Nn \l_niib_sortkey_field_tl { key } }
- \cs_gundefine:N \niib_set_sortkey_name:
}
-\AtBeginDocument { \niib_set_sortkey_name: }
% \end{macrocode}
-%\end{macro}
%
-%\begin{macro}{\niib_set_mark_note_after:}
% To get the correct ordering for notes, writing to the \file{aux} file
% needs to be turned on and off. With \pkg{biblatex}, there is a
% convenient hook for this. Otherwise, everything has to happen after
% the citation command.
% \begin{macrocode}
-\cs_new_nopar:Npn \niib_set_mark_note_after: {
+\AtBeginDocument {
\@ifpackageloaded { biblatex }
{
- \cs_set:Npn \niib_mark_note_after_aux:n ##1
+ \cs_set:Npn \niib_mark_note_after_aux:n #1
{
\AtNextCite { \@fileswfalse }
- \niib_cite:w {##1}
+ \niib_cite:w {#1}
}
}
{
- \cs_set:Npn \niib_mark_note_after_aux:n ##1
+ \cs_set:Npn \niib_mark_note_after_aux:n #1
{
\cs_set_eq:NN \niib_filesw: \if@filesw
\@fileswfalse
- \niib_cite:w {##1}
+ \niib_cite:w {#1}
\cs_set_eq:NN \if@filesw \niib_filesw:
}
}
}
-\AtBeginDocument { \niib_set_mark_note_after: }
% \end{macrocode}
-%\end{macro}
%
-%\begin{macro}{\niib_check_cite:}
%\begin{macro}{\niib_aux_hook:}
% If the \pkg{cite} package is loaded, then there is a hook to
% reset the \file{aux} file after the citation. This means that moving
@@ -1621,10 +1541,10 @@ This work consists of the file notes2bib.dtx
% way \pkg{cite} sets things up is a little complicated. The link needs
% to be made at the end of the \cs{document} macro.
% \begin{macrocode}
-\cs_new_nopar:Npn \niib_check_cite: {
+\AtBeginDocument {
\@ifpackageloaded { cite }
{
- \cs_set:Npn \niib_mark_note_after_aux:n ##1
+ \cs_set:Npn \niib_mark_note_after_aux:n #1
{
\cs_set_eq:NN \niib_filesw: \if@filesw
\@fileswfalse
@@ -1633,7 +1553,7 @@ This work consists of the file notes2bib.dtx
\cs_set_eq:NN \if@filesw \niib_filesw:
\cs_set_nopar:Npn \niib_aux_hook: { }
}
- \niib_cite:w {##1}
+ \niib_cite:w {#1}
}
\cs_new_nopar:Npn \niib_aux_hook: { }
\tl_gput_right:Nn \g_niib_document_hook_tl
@@ -1645,10 +1565,8 @@ This work consists of the file notes2bib.dtx
}
{ }
}
-\AtBeginDocument { \niib_check_cite: }
% \end{macrocode}
%\end{macro}
-%\end{macro}
%
%\subsection{User functions}
%
@@ -1670,7 +1588,7 @@ This work consists of the file notes2bib.dtx
}
{ \niib_bibnote:nn {#1} {#2} }
}
-\cs_new:Npn \niib_bibnote:nn #1#2 {
+\cs_new_protected:Npn \niib_bibnote:nn #1#2 {
\niib_write_note:nn {#1} {#2}
\niib_mark_note:n {#1}
}
@@ -1813,7 +1731,7 @@ This work consists of the file notes2bib.dtx
%\subsection{Code at end of the document}
%
% There are a few tasks which have to be carried out a the end of
-% the \LaTeX\ run, so that data is available for the next run.
+% the LaTeX run, so that data is available for the next run.
%
% First, all of the notes need to be added to the auxiliary file.
% This ensures that the comparisons made in the next step make sense.
@@ -1821,12 +1739,11 @@ This work consists of the file notes2bib.dtx
\AtEndDocument { \niib_record_notes: }
% \end{macrocode}
%
-%\begin{macro}{\niib_check_rerun:}
% The list of out-of-order notes from the current run needs to match
% that from the previous run. If not, then there is a need to re-run
-% \LaTeX.
+% LaTeX.
% \begin{macrocode}
-\cs_new_nopar:Npn \niib_check_rerun: {
+\AtEndDocument {
\clist_if_eq:NNTF \g_niib_all_before_clist
\g_niib_previous_before_clist
{
@@ -1836,9 +1753,6 @@ This work consists of the file notes2bib.dtx
}
{ \msg_info:nn { notes2bib } { rerun } }
}
-\AtEndDocument {
- \niib_check_rerun:
-}
\msg_new:nnn { notes2bib } { rerun } {%
To get notes in the correct order, please run:\\%
1) LaTeX \\%
@@ -1846,22 +1760,41 @@ This work consists of the file notes2bib.dtx
3) LaTeX
}
% \end{macrocode}
+%
+%\begin{macro}{\niib_write_note_file:}
+%\begin{macro}{\g_niib_file_stream}
+% The notes themselves are now written in one block: this avoids
+% using up a stream for any longer than necessary.
+% \begin{macrocode}
+\AtEndDocument {
+ \if@filesw
+ \exp_after:wN \niib_write_note_file:
+ \fi:
+}
+\cs_new_protected_nopar:Npn \niib_write_note_file: {
+ \tl_if_empty:NF \g_niib_notes_tl {
+ \iow_open:Nn \g_niib_file_stream { \g_niib_filename_tl .bib }
+ \iow_now:Nx \g_niib_file_stream { \c_niib_file_message_tl }
+ \iow_now:Nx \g_niib_file_stream
+ { \exp_not:V \g_niib_notes_tl }
+ \iow_close:N \g_niib_file_stream
+ }
+}
+% \end{macrocode}
+%\end{macro}
%\end{macro}
%
-%\begin{macro}{\niib_write_total_notes:}
% The total number of bibliography notes from the current run is
% recorded to the \file{aux} file. This will then be picked up in the
% \begin{macrocode}
-\cs_new_nopar:Npn \niib_write_total_notes: {
+\AtEndDocument {
\intexpr_compare:nT { \g_niib_note_int > \c_zero }
{
\iow_now:Nx \@auxout
{ \TotalNotes { \int_to_arabic:n { \g_niib_note_int } } }
}
}
-\AtEndDocument { \niib_write_total_notes: }
% \end{macrocode}
-%\end{macro}
%
%\subsection{Tidying up}
%
diff --git a/Master/texmf-dist/source/latex/notes2bib/notes2bib.ins b/Master/texmf-dist/source/latex/notes2bib/notes2bib.ins
new file mode 100644
index 00000000000..a6e1c2c97ed
--- /dev/null
+++ b/Master/texmf-dist/source/latex/notes2bib/notes2bib.ins
@@ -0,0 +1,75 @@
+%%
+%% This is file `notes2bib.ins',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% notes2bib.dtx (with options: `install')
+%% ---------------------------------------------------------------
+%% notes2bib --- Integrating notes into the bibliography
+%% Maintained by Joseph Wright
+%% E-mail: joseph.wright@morningstar2.co.uk
+%% Released under the LaTeX Project Public License v1.3c or later
+%% See http://www.latex-project.org/lppl.txt
+%% ---------------------------------------------------------------
+%%
+\input docstrip.tex
+\keepsilent
+\askforoverwritefalse
+\preamble
+---------------------------------------------------------------
+notes2bib --- Integrating notes into the bibliography
+Maintained by Joseph Wright
+E-mail: joseph.wright@morningstar2.co.uk
+Released under the LaTeX Project Public License v1.3c or later
+See http://www.latex-project.org/lppl.txt
+---------------------------------------------------------------
+
+\endpreamble
+\postamble
+
+Copyright (C) 2007-2010 by
+ Joseph Wright <joseph.wright@morningstar2.co.uk>
+
+It may be distributed and/or modified under the conditions of
+the LaTeX Project Public License (LPPL), either version 1.3c of
+this license or (at your option) any later version. The latest
+version of this license is in the file:
+
+ http://www.latex-project.org/lppl.txt
+
+This work is "maintained" (as per LPPL maintenance status) by
+ Joseph Wright.
+
+This work consists of the file notes2bib.dtx
+ and the derived files notes2bib.ins,
+ notes2bib.pdf and
+ notes2bib.sty.
+
+\endpostamble
+\usedir{tex/latex/notes2bib}
+\generate{
+ \file{\jobname.sty}{\from{\jobname.dtx}{package}}
+}
+\endbatchfile
+%%
+%% Copyright (C) 2007-2010 by
+%% Joseph Wright <joseph.wright@morningstar2.co.uk>
+%%
+%% It may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License (LPPL), either version 1.3c of
+%% this license or (at your option) any later version. The latest
+%% version of this license is in the file:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% This work is "maintained" (as per LPPL maintenance status) by
+%% Joseph Wright.
+%%
+%% This work consists of the file notes2bib.dtx
+%% and the derived files notes2bib.ins,
+%% notes2bib.pdf and
+%% notes2bib.sty.
+%%
+%%
+%% End of file `notes2bib.ins'.