diff options
author | Karl Berry <karl@freefriends.org> | 2010-01-12 23:56:35 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-01-12 23:56:35 +0000 |
commit | 7637db066f528aa60f1d837e4ef03105a19ec24d (patch) | |
tree | a74207b3285af7feb75b7f5d1db19905b46a0eb8 /Master/texmf-dist/tex/latex/notes2bib | |
parent | 013c8512f494d8b19d82755b067fb901d598d8ff (diff) |
notes2bib 2.0b (11jan10)
git-svn-id: svn://tug.org/texlive/trunk@16686 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/notes2bib')
-rw-r--r-- | Master/texmf-dist/tex/latex/notes2bib/notes2bib.sty | 406 |
1 files changed, 205 insertions, 201 deletions
diff --git a/Master/texmf-dist/tex/latex/notes2bib/notes2bib.sty b/Master/texmf-dist/tex/latex/notes2bib/notes2bib.sty index fae7d506427..ef36e7af63c 100644 --- a/Master/texmf-dist/tex/latex/notes2bib/notes2bib.sty +++ b/Master/texmf-dist/tex/latex/notes2bib/notes2bib.sty @@ -15,7 +15,7 @@ %% \RequirePackage{xparse} \ProvidesExplPackage - {notes2bib} {2009/11/01} {2.0a} + {notes2bib} {2010/01/11} {2.0b} {Integrating notes into the bibliography} \RequirePackage{l3keys2e} \tl_new:Nn \c_niib_file_message_tl { @@ -40,51 +40,49 @@ \int_new:N \g_niib_total_notes_int \cs_new_nopar:Npn \niib_cite:w { } \keys_define:nn { notes2bib } { - cite-function .code:n = { - \AtBeginDocument { \cs_set_eq:NN \niib_cite:w #1 } - } , - file-name .tl_gset_x:N = \g_niib_filename_tl , - convert-endnotes .choice: , - convert-endnotes / false .code:n = { - \AtBeginDocument { \niib_from_bibnote:n { endnote } } - }, - convert-endnotes / true .code:n = { - \AtBeginDocument { \niib_to_bibnote:n { endnote } } - }, - convert-footnotes .choice: , - convert-footnotes / false .code:n = { - \AtBeginDocument { \niib_from_bibnote:n { footnote } } - }, - convert-footnotes / true .code:n = { - \AtBeginDocument { \niib_to_bibnote:n { footnote } } - }, - keyword-entry .tl_set:N = \l_niib_keyword_tl , - note-field .tl_set:N = \l_niib_note_field_tl , - note-name .tl_set:N = \l_niib_note_name_tl , - placement .choice: , - placement / after .code:n = { - \cs_set_eq:NN \niib_mark_note:n \niib_mark_note_after:n - \tl_set_eq:NN \l_niib_presort_tl \l_niib_presort_after_tl - \tl_set_eq:NN \l_niib_sortkey_tl \l_niib_sortkey_after_tl - } , - placement / before .code:n = { - \cs_set_eq:NN \niib_mark_note:n \niib_mark_note_before:n - \tl_set_eq:NN \l_niib_presort_tl \l_niib_presort_before_tl - \tl_set_eq:NN \l_niib_sortkey_tl \l_niib_sortkey_before_tl - }, - placement / mixed .code:n = { - \cs_set_eq:NN \niib_mark_note:n \niib_mark_note_mixed:n - \tl_set_eq:NN \l_niib_presort_tl \l_niib_presort_mixed_tl - \tl_set_eq:NN \l_niib_sortkey_tl \l_niib_sortkey_mixed_tl - }, - presort-after .tl_set:N = \l_niib_presort_after_tl , - presort-before .tl_set:N = \l_niib_presort_before_tl , - presort-mixed .tl_set:N = \l_niib_presort_mixed_tl , - record-type .tl_set:N = \l_niib_record_type_tl , - sort-key-after .tl_set:N = \l_niib_sortkey_before_tl , - sort-key-before .tl_set:N = \l_niib_sortkey_after_tl , - sort-key-mixed .tl_set:N = \l_niib_sortkey_mixed_tl , - use-sort-key .bool_set:N = \l_niib_write_sortkey_bool, + cite-function .code:n = + { \AtBeginDocument { \cs_set_eq:NN \niib_cite:w #1 } } , + file-name .tl_gset_x:N = \g_niib_filename_tl , + convert-endnotes .choice: , + convert-endnotes / false .code:n = + { \AtBeginDocument { \niib_from_bibnote:n { endnote } } } , + convert-endnotes / true .code:n = + { \AtBeginDocument { \niib_to_bibnote:n { endnote } } } , + convert-footnotes .choice: , + convert-footnotes / false .code:n = + { \AtBeginDocument { \niib_from_bibnote:n { footnote } } } , + convert-footnotes / true .code:n = + { \AtBeginDocument { \niib_to_bibnote:n { footnote } } } , + keyword-entry .tl_set:N = \l_niib_keyword_tl , + note-field .tl_set:N = \l_niib_note_field_tl , + note-name .tl_set:N = \l_niib_note_name_tl , + placement .choice: , + placement / after .code:n = + { + \cs_set_eq:NN \niib_mark_note:n \niib_mark_note_after:n + \tl_set_eq:NN \l_niib_presort_tl \l_niib_presort_after_tl + \tl_set_eq:NN \l_niib_sortkey_tl \l_niib_sortkey_after_tl + }, + placement / before .code:n = + { + \cs_set_eq:NN \niib_mark_note:n \niib_mark_note_before:n + \tl_set_eq:NN \l_niib_presort_tl \l_niib_presort_before_tl + \tl_set_eq:NN \l_niib_sortkey_tl \l_niib_sortkey_before_tl + }, + placement / mixed .code:n = + { + \cs_set_eq:NN \niib_mark_note:n \niib_mark_note_mixed:n + \tl_set_eq:NN \l_niib_presort_tl \l_niib_presort_mixed_tl + \tl_set_eq:NN \l_niib_sortkey_tl \l_niib_sortkey_mixed_tl + }, + presort-after .tl_set:N = \l_niib_presort_after_tl , + presort-before .tl_set:N = \l_niib_presort_before_tl , + presort-mixed .tl_set:N = \l_niib_presort_mixed_tl , + record-type .tl_set:N = \l_niib_record_type_tl , + sort-key-after .tl_set:N = \l_niib_sortkey_before_tl , + sort-key-before .tl_set:N = \l_niib_sortkey_after_tl , + sort-key-mixed .tl_set:N = \l_niib_sortkey_mixed_tl , + use-sort-key .bool_set:N = \l_niib_write_sortkey_bool , } \keys_set:nn { notes2bib } { cite-function = \cite , @@ -101,30 +99,24 @@ use-sort-key = true } \cs_set_nopar:Npn \niib_options_redefine: { - \keys_define:nn { notes2bib } { - cite-function .code:n = { - \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 = { - \niib_from_bibnote:n { endnote } - }, - convert-endnotes / true .code:n = { - \niib_to_bibnote:n { endnote } - }, - convert-footnotes / false .code:n = { - \niib_from_bibnote:n { footnote } - }, - convert-footnotes / true .code:n = { - \niib_to_bibnote:n { footnote } - }, - } -} -\msg_new:nnn { notes2bib } { preamble-only } {% - The option `#1' can only be used in the preamble.% + \keys_define:nn { notes2bib } + { + cite-function .code:n = + { \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 = + { \niib_from_bibnote:n { endnote } } , + convert-endnotes / true .code:n = + { \niib_to_bibnote:n { endnote } } , + convert-footnotes / false .code:n = + { \niib_from_bibnote:n { footnote } } , + convert-footnotes / true .code:n = + { \niib_to_bibnote:n { footnote } } , + } } +\msg_new:nnn { notes2bib } { preamble-only } + {The option `#1' can only be used in the preamble.} \AtBeginDocument { \niib_options_redefine: } \keys_define:nn { notes2bib } { cite .meta:x = { cite-function = \exp_not:c {#1} } , @@ -154,11 +146,8 @@ } \cs_new_nopar:Npn \niib_note_name: { \tl_use:N \l_niib_note_name_tl - \intexpr_compare:nT { \g_niib_previous_notes_int > \c_nine } { - \intexpr_compare:nT { \g_niib_note_int < \c_ten } { - 0 - } - } + \intexpr_compare:nT { \g_niib_previous_notes_int > \c_nine } + { \intexpr_compare:nT { \g_niib_note_int < \c_ten } { 0 } } \int_to_arabic:n { \g_niib_note_int } } \cs_new_nopar:Npn \niib_filesw: { } @@ -180,11 +169,12 @@ \niib_cite:w {#1} } \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 } - } + \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 } + } } \cs_new:Npn \niib_write_field:nn #1#2 { \iow_space: \iow_space: #1 \iow_space: = \iow_space: {#2} , @@ -194,22 +184,27 @@ \cs_new_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 { - @ \l_niib_record_type_tl { - #1 , \iow_newline: - \niib_write_field:Vn \l_niib_note_field_tl { \exp_not:n {#2} } - \bool_if:NT \l_niib_write_sortkey_bool { - \niib_write_field:Vn \l_niib_sortkey_field_tl - { \l_niib_sortkey_tl #1 } - } - \niib_write_field:nn { keywords } { \l_niib_keyword_tl } - \niib_write_field:nn { presort } { \l_niib_presort_tl } + \iow_now:Nx \g_niib_file_stream + { + @ \l_niib_record_type_tl + { + #1 , \iow_newline: + \niib_write_field:Vn \l_niib_note_field_tl { \exp_not:n {#2} } + \bool_if:NT \l_niib_write_sortkey_bool + { + \niib_write_field:Vn \l_niib_sortkey_field_tl + { \l_niib_sortkey_tl #1 } + } + \niib_write_field:nn { keywords } { \l_niib_keyword_tl } + \niib_write_field:nn { presort } { \l_niib_presort_tl } + } } - } } \cs_generate_variant:Nn \niib_write_note:nn { x } \cs_new_nopar:Npn \niib_record_notes: { @@ -218,21 +213,21 @@ \fi } \cs_new_nopar:Npn \niib_flush_notes_aux: { - \clist_if_empty:NF \g_niib_before_clist { - \iow_now:Nx \@auxout { - \NotesBeforeCitations { \exp_not:V \g_niib_before_clist } + \clist_if_empty:NF \g_niib_before_clist + { + \iow_now:Nx \@auxout + { \NotesBeforeCitations { \exp_not:V \g_niib_before_clist } } + \clist_gput_right:NV \g_niib_all_before_clist \g_niib_before_clist + \clist_gclear:N \g_niib_before_clist } - \clist_gput_right:NV \g_niib_all_before_clist \g_niib_before_clist - \clist_gclear:N \g_niib_before_clist - } - \clist_if_empty:NF \g_niib_after_clist { - \iow_now:Nx \@auxout { - \NotesAfterCitations { \exp_not:V \g_niib_after_clist } + \clist_if_empty:NF \g_niib_after_clist + { + \iow_now:Nx \@auxout + { \NotesAfterCitations { \exp_not:V \g_niib_after_clist } } + \exp_args:NV \nocite \g_niib_after_clist + \clist_gput_right:NV \g_niib_all_after_clist \g_niib_after_clist + \clist_gclear:N \g_niib_after_clist } - \exp_args:NV \nocite \g_niib_after_clist - \clist_gput_right:NV \g_niib_all_after_clist \g_niib_after_clist - \clist_gclear:N \g_niib_after_clist - } } \cs_new_nopar:Npn \niib_to_bibnote:n #1 { \cs_set_eq:cN {#1} \bibnote @@ -259,39 +254,46 @@ \niib_save_footnote: } \cs_new_nopar:Npn \niib_create_print_notes: { - \@ifpackageloaded { biblatex } { - \cs_new_nopar:Npn \niib_print_notes: { - \cs_set:Nx \niib_create_print_notes_aux: { - \printbibliography [ keyword = \exp_not:V \l_niib_keyword_tl ] - } - \niib_create_print_notes_aux: + \@ifpackageloaded { biblatex } + { + \cs_new_nopar:Npn \niib_print_notes: + { + \cs_set_nopar:Npx \niib_create_print_notes_aux: + { + \printbibliography + [ keyword = \exp_not:V \l_niib_keyword_tl ] + } + \niib_create_print_notes_aux: + } } - }{ - \cs_new_nopar:Npn \niib_print_notes: { - \exp_args:NV \niib_bibliography:n \g_niib_filename_tl + { + \cs_new_nopar:Npn \niib_print_notes: + { \exp_args:NV \niib_bibliography:n \g_niib_filename_tl } } - } } -\cs_new:Npn \niib_create_print_notes_aux: { } +\cs_new_nopar:Npn \niib_create_print_notes_aux: { } \AtBeginDocument { \niib_create_print_notes: } \cs_new_nopar:Npn \niib_attach_bibliography: { - \@ifpackageloaded { biblatex } { - \exp_args:NV \bibliography \g_niib_filename_tl - }{ - \cs_new_eq:NN \niib_bibliography:n \bibliography - \RenewDocumentCommand \bibliography { m } { - \intexpr_compare:nTF { \g_niib_total_notes_int = \c_zero } { - \niib_bibliography:n {##1} - }{ - \cs_set_nopar:Nx \niib_attach_bibliography: { - \exp_not:N \niib_bibliography:n { - \exp_not:n {##1} , \exp_not:V \g_niib_filename_tl - } + \@ifpackageloaded { biblatex } + { \exp_args:NV \bibliography \g_niib_filename_tl } + { + \cs_new_eq:NN \niib_bibliography:n \bibliography + \RenewDocumentCommand \bibliography { m } + { + \intexpr_compare:nTF { \g_niib_total_notes_int = \c_zero } + { \niib_bibliography:n {##1} } + { + \cs_set_nopar:Npx \niib_attach_bibliography: + { + \exp_not:N \niib_bibliography:n + { + \exp_not:n {##1} , \exp_not:V \g_niib_filename_tl + } + } + \niib_attach_bibliography: + } } - \niib_attach_bibliography: - } } - } } \@ifpackageloaded { biblatex } { \exp_args:NV \bibliography \g_niib_filename_tl @@ -300,58 +302,64 @@ \AtBeginDocument { \niib_attach_bibliography: } } \cs_new_nopar:Npn \niib_set_sortkey_name: { - \@ifpackageloaded { biblatex } { - \tl_set:Nn \l_niib_sortkey_field_tl { sortkey } - }{ - \tl_set:Nn \l_niib_sortkey_field_tl { key } - } + \@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: } \cs_new_nopar:Npn \niib_set_mark_note_after: { - \@ifpackageloaded { biblatex } { - \cs_set:Npn \niib_mark_note_after_aux:n ##1 { - \AtNextCite { \@fileswfalse } - \niib_cite:w {##1} + \@ifpackageloaded { biblatex } + { + \cs_set:Npn \niib_mark_note_after_aux:n ##1 + { + \AtNextCite { \@fileswfalse } + \niib_cite:w {##1} + } } - }{ - \cs_set:Npn \niib_mark_note_after_aux:n ##1 { - \cs_set_eq:NN \niib_filesw: \if@filesw - \@fileswfalse - \niib_cite:w {##1} - \cs_set_eq:NN \if@filesw \niib_filesw: + { + \cs_set:Npn \niib_mark_note_after_aux:n ##1 + { + \cs_set_eq:NN \niib_filesw: \if@filesw + \@fileswfalse + \niib_cite:w {##1} + \cs_set_eq:NN \if@filesw \niib_filesw: + } } - } } \AtBeginDocument { \niib_set_mark_note_after: } \cs_new_nopar:Npn \niib_check_cite: { - \@ifpackageloaded { cite } { - \cs_set:Npn \niib_mark_note_after_aux:n ##1 { - \cs_set_eq:NN \niib_filesw: \if@filesw - \@fileswfalse - \cs_set_nopar:Npn \niib_aux_hook: { - \cs_set_eq:NN \if@filesw \niib_filesw: - \cs_set_nopar:Npn \niib_aux_hook: { } - } - \niib_cite:w {##1} - } - \cs_new_nopar:Npn \niib_aux_hook: { } - \tl_gput_right:Nn \g_niib_document_hook_tl { - \cs_if_exist:NF \@restore@auxhandle { - \tl_new:N \@restore@auxhandle - } - \tl_put_right:Nn \@restore@auxhandle { \niib_aux_hook: } + \@ifpackageloaded { cite } + { + \cs_set:Npn \niib_mark_note_after_aux:n ##1 + { + \cs_set_eq:NN \niib_filesw: \if@filesw + \@fileswfalse + \cs_set_nopar:Npn \niib_aux_hook: + { + \cs_set_eq:NN \if@filesw \niib_filesw: + \cs_set_nopar:Npn \niib_aux_hook: { } + } + \niib_cite:w {##1} + } + \cs_new_nopar:Npn \niib_aux_hook: { } + \tl_gput_right:Nn \g_niib_document_hook_tl + { + \cs_if_exist:NF \@restore@auxhandle + { \tl_new:N \@restore@auxhandle } + \tl_put_right:Nn \@restore@auxhandle { \niib_aux_hook: } + } } - } { } + { } } \AtBeginDocument { \niib_check_cite: } \NewDocumentCommand \bibnote { o +m } { - \IfNoValueTF {#1} { - \int_gincr:N \g_niib_note_int - \niib_bibnote:xn { \niib_note_name: } {#2} - }{ - \niib_bibnote:nn {#1} {#2} - } + \IfNoValueTF {#1} + { + \int_gincr:N \g_niib_note_int + \niib_bibnote:xn { \niib_note_name: } {#2} + } + { \niib_bibnote:nn {#1} {#2} } } \cs_new:Npn \niib_bibnote:nn #1#2 { \niib_write_note:nn {#1} {#2} @@ -359,19 +367,17 @@ } \cs_generate_variant:Nn \niib_bibnote:nn { x } \NewDocumentCommand \bibnotemark { o } { - \IfNoValueTF {#1} { - \int_gincr:N \g_niib_note_int - \niib_mark_note:x { \niib_note_name: } - }{ - \niib_mark_note:n {#1} - } + \IfNoValueTF {#1} + { + \int_gincr:N \g_niib_note_int + \niib_mark_note:x { \niib_note_name: } + } + { \niib_mark_note:n {#1} } } \NewDocumentCommand \bibnotetext { o +m } { - \IfNoValueTF {#1} { - \niib_write_note:xn { \niib_note_name: } {#2} - }{ - \niib_write_note:nn {#1} {#2} - } + \IfNoValueTF {#1} + { \niib_write_note:xn { \niib_note_name: } {#2} } + { \niib_write_note:nn {#1} {#2} } } \NewDocumentCommand \recordnotes { } { \niib_record_notes: @@ -387,16 +393,14 @@ } \cs_new_eq:NN \flushnotestack \recordnotes \cs_new_eq:NN \niibsetup \bibnotesetup -\NewDocumentCommand \NotesAfterCitations { m } { +\cs_new_protected_nopar:Npn \NotesAfterCitations #1 { \clist_gput_right:Nn \g_niib_previous_after_clist {#1} } -\NewDocumentCommand \NotesBeforeCitations { m } { +\cs_new_protected_nopar:Npn \NotesBeforeCitations #1 { \clist_gput_right:Nn \g_niib_previous_after_clist {#1} - \tl_gput_right:Nn \g_niib_document_hook_tl { - \nocite {#1} - } + \tl_gput_right:Nn \g_niib_document_hook_tl { \nocite {#1} } } -\NewDocumentCommand \TotalNotes { m } { +\cs_new_protected_nopar:Npn \TotalNotes #1 { \int_gset:Nn \g_niib_previous_notes_int {#1} } \tl_gput_right:Nn \document { \g_niib_document_hook_tl } @@ -404,14 +408,13 @@ \AtEndDocument { \niib_record_notes: } \cs_new_nopar:Npn \niib_check_rerun: { \clist_if_eq:NNTF \g_niib_all_before_clist - \g_niib_previous_before_clist { - \clist_if_eq:NNF \g_niib_all_after_clist - \g_niib_previous_after_clist { - \msg_info:nn { notes2bib } { rerun } + \g_niib_previous_before_clist + { + \clist_if_eq:NNF \g_niib_all_after_clist + \g_niib_previous_after_clist + { \msg_info:nn { notes2bib } { rerun } } } - }{ - \msg_info:nn { notes2bib } { rerun } - } + { \msg_info:nn { notes2bib } { rerun } } } \AtEndDocument { \niib_check_rerun: @@ -423,24 +426,25 @@ 3) LaTeX } \cs_new_nopar:Npn \niib_write_total_notes: { - \intexpr_compare:nT { \g_niib_note_int > \c_zero } { - \iow_now:Nx \@auxout { - \TotalNotes { \int_to_arabic:n { \g_niib_note_int } } + \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: } \cs_set:Npn \thanks #1 { \niib_footnotemark:w - \protected@xdef \@thanks { - \@thanks - \protect \niib_footnotetext:w [ \the \c@footnote ] {#1} - } + \protected@xdef \@thanks + { + \@thanks + \protect \niib_footnotetext:w [ \the \c@footnote ] {#1} + } } \keys_set:nn { notes2bib } { placement = mixed } \ProcessKeysOptions { notes2bib } %% -%% Copyright (C) 2007-2009 by +%% Copyright (C) 2007-2010 by %% Joseph Wright <joseph.wright@morningstar2.co.uk> %% %% It may be distributed and/or modified under the conditions of |