summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/enotez
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-03-18 22:34:58 +0000
committerKarl Berry <karl@freefriends.org>2013-03-18 22:34:58 +0000
commitb69db11a2c4cf8cfa09e22acfda740d4f68b2e73 (patch)
treed5539f53b3640a9f6df5166aeea31b0db317cff3 /Master/texmf-dist/tex/latex/enotez
parent4d143d0c210aafd1947183a5829e6256adc77cee (diff)
enotez (18mar13)
git-svn-id: svn://tug.org/texlive/trunk@29422 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/enotez')
-rw-r--r--Master/texmf-dist/tex/latex/enotez/enotez.sty651
1 files changed, 420 insertions, 231 deletions
diff --git a/Master/texmf-dist/tex/latex/enotez/enotez.sty b/Master/texmf-dist/tex/latex/enotez/enotez.sty
index 10ea9a1bc5b..18430f8f35b 100644
--- a/Master/texmf-dist/tex/latex/enotez/enotez.sty
+++ b/Master/texmf-dist/tex/latex/enotez/enotez.sty
@@ -8,7 +8,7 @@
% Web: https://bitbucket.org/cgnieder/enotez/
% E-Mail: contact@mychemistry.eu
% --------------------------------------------------------------------------
-% Copyright 2011-2012 Clemens Niederberger
+% Copyright 2011-2013 Clemens Niederberger
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -28,51 +28,79 @@
% If you have any ideas, questions, suggestions or bugs to report, please
% feel free to contact me.
% --------------------------------------------------------------------------
-\RequirePackage{ expl3 , xparse , l3keys2e , xtemplate }
+\RequirePackage{ expl3 , xparse , l3keys2e , xtemplate , etoolbox , xpatch , scrlfile }
\ProvidesExplPackage
{enotez}
- {2012/12/30}
- {0.4}
+ {2013/03/18}
+ {0.5a}
{Endnotes for LaTeX2e}
% --------------------------------------------------------------------------
+% messages
+\msg_new:nnnn { enotez } { captions }
+ { Endnotes~might~not~work~in~captions. }
+ {
+ Endnotes~might~not~work~inside~captions.~You~might~try~to~use~the~caption~
+ package~if~you~encounter~problems~but~that's~not~a~promise~that~things~
+ will~work~then.
+ }
+
+% --------------------------------------------------------------------------
% variables:
-\bool_new:N \l_enotez_print_note_bool
-\bool_new:N \l_enotez_reset_bool
-\bool_new:N \l_enotez_totoc_bool
-\bool_new:N \l_enotez_hyperref_bool
-\bool_new:N \l_enotez_hyperfootnotes_bool
-\bool_new:N \l_enotez_split_bool
-
-\tl_new:N \l_enotez_tmpa_tl
-\tl_new:N \l_enotez_tmpb_tl
-\tl_new:N \l_enotez_tmpc_tl
-\tl_new:N \l_enotez_totoc_tl
-\tl_new:N \l_enotez_list_name_tl
-\tl_set:Nn \l_enotez_list_name_tl { Notes }
-\tl_new:N \l_enotez_endnote_text_tl
-\tl_new:N \l_enotez_endnote_mark_tl
-\tl_new:N \l_enotez_list_instance_tl
-\tl_set:Nn \l_enotez_list_instance_tl { plain }
-\tl_new:N \l_enotez_split_tl
-\tl_new:N \l_enotez_splitted_list_sectioning_tl
-\tl_new:N \l_enotez_splitted_title_tl
-\tl_set:Nn \l_enotez_splitted_title_tl { Notes~from~<name>~<ref> }
-\tl_new:N \l_enotez_list_splitted_title_tl
-
-\int_new:N \g_enotez_endnote_id_int
-\int_zero:N \g_enotez_endnote_id_int
-\int_new:N \g_enotez_endnote_mark_int
-\int_zero:N \g_enotez_endnote_mark_int
-\int_new:N \g_enotez_list_printed_int
-\int_zero:N \g_enotez_list_printed_int
-\int_new:N \l_enotez_tmpa_int
-
-\prop_new:N \g_enotez_endnote_text_prop
-\prop_new:N \g_enotez_endnote_mark_prop
-\prop_new:N \g_enotez_endnote_split_prop
-\prop_new:N \g_enotez_endnote_sect_prop
-\prop_new:N \g_enotez_endnote_man_prop
+\bool_new:N \l__enotez_print_note_bool
+\bool_new:N \l__enotez_reset_bool
+\bool_new:N \l__enotez_totoc_bool
+\bool_new:N \l__enotez_hyperref_bool
+\bool_new:N \l__enotez_hyperfootnotes_bool
+\bool_new:N \l__enotez_split_bool
+\bool_new:N \l__enotez_caption_patched_bool
+\bool_new:N \l__enotez_koma_patched_bool
+\bool_new:N \l__enotez_memoir_patched_bool
+
+\tl_new:N \l__enotez_tmpa_tl
+\tl_new:N \l__enotez_tmpb_tl
+\tl_new:N \l__enotez_tmpc_tl
+\tl_new:N \l__enotez_totoc_tl
+\tl_new:N \l__enotez_list_name_tl
+\tl_set:Nn \l__enotez_list_name_tl { Notes }
+\tl_new:N \l__enotez_endnote_text_tl
+\tl_new:N \l__enotez_endnote_mark_tl
+\tl_new:N \l__enotez_list_instance_tl
+\tl_set:Nn \l__enotez_list_instance_tl { plain }
+\tl_new:N \l__enotez_split_tl
+\tl_new:N \l__enotez_splitted_list_sectioning_tl
+\tl_new:N \l__enotez_splitted_title_tl
+\tl_set:Nn \l__enotez_splitted_title_tl { Notes~for~<name>~<ref> }
+\tl_new:N \l__enotez_section_tl
+\tl_set:Nn \l__enotez_section_tl { Section }
+\tl_new:N \l__enotez_chapter_tl
+\tl_set:Nn \l__enotez_chapter_tl { Chapter }
+\tl_new:N \l__enotez_actual_sectioning_tl
+\tl_new:N \l__enotez_list_splitted_title_tl
+\tl_new:N \g__enotez_list_next_preamble_tl
+\tl_new:N \g__enotez_list_every_preamble_tl
+\tl_new:N \g__enotez_list_next_postamble_tl
+\tl_new:N \g__enotez_list_every_postamble_tl
+\tl_new:N \l__enotez_footnotes_tl
+
+\skip_new:N \l__enotez_list_preamble_skip
+\skip_new:N \l__enotez_list_postamble_skip
+\skip_set_eq:NN \l__enotez_list_preamble_skip \medskipamount
+\skip_set_eq:NN \l__enotez_list_postamble_skip \medskipamount
+
+\int_new:N \g__enotez_endnote_id_int
+\int_zero:N \g__enotez_endnote_id_int
+\int_new:N \g__enotez_endnote_mark_int
+\int_zero:N \g__enotez_endnote_mark_int
+\int_new:N \g__enotez_list_printed_int
+\int_zero:N \g__enotez_list_printed_int
+\int_new:N \l__enotez_tmpa_int
+
+\prop_new:N \g__enotez_endnote_text_prop
+\prop_new:N \g__enotez_endnote_mark_prop
+\prop_new:N \g__enotez_endnote_split_prop
+\prop_new:N \g__enotez_endnote_sect_prop
+\prop_new:N \g__enotez_endnote_man_prop
% --------------------------------------------------------------------------
% options:
@@ -81,35 +109,39 @@
\keys_define:nn { enotez }
{
- list-name .tl_set:N = \l_enotez_list_name_tl ,
- reset .bool_set:N = \l_enotez_reset_bool ,
+ footnotes .bool_set:N = \l__enotez_footnotes_tl ,
+ list-name .tl_set:N = \l__enotez_list_name_tl ,
+ reset .bool_set:N = \l__enotez_reset_bool ,
+ % TODO: add symbols and other possible formats, use cntformats?
counter-format .choice_code:n =
- \cs_set_eq:Nc \enotez_counter_format:n { int_to_ \l_keys_choice_tl :n } ,
+ \cs_set_eq:Nc \enotez_counter_format:n { int_to_ \l_keys_choice_tl :n } ,
counter-format .generate_choices:n =
- { arabic , alph , Alph , roman , Roman } ,
+ { arabic , alph , Alph , roman , Roman } ,
mark-format .code:n =
- \cs_set:Npn \enmarkstyle { #1 } ,
+ \cs_set:Npn \enmarkstyle { #1 } ,
mark-cs .code:n =
- \cs_set:Npn \enotezwritemark { #1 } ,
+ \cs_set:Npn \enotezwritemark { #1 } ,
totoc .choice_code:n =
\tl_if_eq:VnTF \l_keys_choice_tl { false }
- { \bool_set_false:N \l_enotez_totoc_bool }
+ { \bool_set_false:N \l__enotez_totoc_bool }
{
- \bool_set_true:N \l_enotez_totoc_bool
- \tl_set_eq:NN \l_enotez_totoc_tl \l_keys_choice_tl
- } ,
+ \bool_set_true:N \l__enotez_totoc_bool
+ \tl_set_eq:NN \l__enotez_totoc_tl \l_keys_choice_tl
+ } ,
totoc .generate_choices:n =
- { section , chapter , false } ,
+ { section , chapter , false } ,
split .choice_code:n =
\tl_if_eq:VnTF \l_keys_choice_tl { false }
- { \bool_set_false:N \l_enotez_split_bool }
- { \bool_set_true:N \l_enotez_split_bool }
- \tl_set_eq:NN \l_enotez_split_tl \l_keys_choice_tl ,
+ { \bool_set_false:N \l__enotez_split_bool }
+ { \bool_set_true:N \l__enotez_split_bool }
+ \tl_set_eq:NN \l__enotez_split_tl \l_keys_choice_tl ,
split .generate_choices:n =
- { section , chapter , false } ,
- split-sectioning .tl_set:N = \l_enotez_splitted_list_sectioning_tl ,
- split-title .tl_set:N = \l_enotez_splitted_title_tl ,
- list-style .tl_set:N = \l_enotez_list_instance_tl ,
+ { section , chapter , false } ,
+ split-sectioning .tl_set:N = \l__enotez_splitted_list_sectioning_tl ,
+ split-title .tl_set:N = \l__enotez_splitted_title_tl ,
+ list-style .tl_set:N = \l__enotez_list_instance_tl ,
+ list-preamble-skip .skip_set:N = \l__enotez_list_preamble_skip ,
+ list-postamble-skip .skip_set:N = \l__enotez_list_postamble_skip
}
\cs_generate_variant:Nn \tl_if_eq:nnTF { Vn , nx }
\cs_generate_variant:Nn \tl_if_eq:nnT { xx }
@@ -120,7 +152,7 @@
% #2: mark
\cs_new:Npn \enotez_write_mark:nn #1#2
{
- \bool_if:NTF \l_enotez_hyperfootnotes_bool
+ \bool_if:NTF \l__enotez_hyperfootnotes_bool
{ \enotezwritemark { \hyperlink { enz.#1 } { \enmarkstyle #2 } } }
{ \enotezwritemark { \enmarkstyle #2 } }
}
@@ -128,54 +160,54 @@
% the internal endnote:
\cs_new:Npn \enotez_endnote:nn #1#2
{
- \int_gincr:N \g_enotez_endnote_id_int
+ \int_gincr:N \g__enotez_endnote_id_int
\quark_if_no_value:nTF { #1 }
{
- \int_gincr:N \g_enotez_endnote_mark_int
+ \int_gincr:N \g__enotez_endnote_mark_int
\enotez_write_mark:nn
- { \int_use:N \g_enotez_endnote_id_int }
- { \enotez_counter_format:V \g_enotez_endnote_mark_int }
- \tl_set:Nn \l_tmpa_tl { chapter }
+ { \int_use:N \g__enotez_endnote_id_int }
+ { \enotez_counter_format:V \g__enotez_endnote_mark_int }
+ \tl_set:Nn \l__enotez_tmpa_tl { chapter }
\bool_if:nTF
- { \l_enotez_split_bool && \tl_if_eq_p:NN \l_enotez_split_tl \l_tmpa_tl }
+ { \l__enotez_split_bool && \tl_if_eq_p:NN \l__enotez_split_tl \l__enotez_tmpa_tl }
{
\enotez_save_note:xxxxnn
- { \int_use:N \g_enotez_endnote_id_int }
- { \int_use:N \g_enotez_endnote_mark_int }
- { \int_use:N \g_enotez_list_printed_int }
+ { \int_use:N \g__enotez_endnote_id_int }
+ { \int_use:N \g__enotez_endnote_mark_int }
+ { \int_use:N \g__enotez_list_printed_int }
{ \thechapter }
{ a }
{ #2 }
}
{
\enotez_save_note:xxxxnn
- { \int_use:N \g_enotez_endnote_id_int }
- { \int_use:N \g_enotez_endnote_mark_int }
- { \int_use:N \g_enotez_list_printed_int }
+ { \int_use:N \g__enotez_endnote_id_int }
+ { \int_use:N \g__enotez_endnote_mark_int }
+ { \int_use:N \g__enotez_list_printed_int }
{ \thesection }
{ a }
{ #2 }
}
}
{
- \enotez_write_mark:nn { \int_use:N \g_enotez_endnote_id_int } { #1 }
- \tl_set:Nn \l_tmpa_tl { chapter }
+ \enotez_write_mark:nn { \int_use:N \g__enotez_endnote_id_int } { #1 }
+ \tl_set:Nn \l__enotez_tmpa_tl { chapter }
\bool_if:nTF
- { \l_enotez_split_bool && \tl_if_eq_p:NN \l_enotez_split_tl \l_tmpa_tl }
+ { \l__enotez_split_bool && \tl_if_eq_p:NN \l__enotez_split_tl \l__enotez_tmpa_tl }
{
\enotez_save_note:xnxxnn
- { \int_use:N \g_enotez_endnote_id_int }
+ { \int_use:N \g__enotez_endnote_id_int }
{ #1 }
- { \int_use:N \g_enotez_list_printed_int }
+ { \int_use:N \g__enotez_list_printed_int }
{ \thechapter }
{ m }
{ #2 }
}
{
\enotez_save_note:xnxxnn
- { \int_use:N \g_enotez_endnote_id_int }
+ { \int_use:N \g__enotez_endnote_id_int }
{ #1 }
- { \int_use:N \g_enotez_list_printed_int }
+ { \int_use:N \g__enotez_list_printed_int }
{ \thesection }
{ m }
{ #2 }
@@ -185,72 +217,92 @@
% --------------------------------------------------------------------------
% in some cases caption making commands need to be patched. preparations:
-\cs_new:Npn \enotez_tmp_endnote:nn {}
+\cs_new:Npn \__enotez_tmp_endnote:nn {}
-\cs_new:Npn \enotez_caption_endnote:nn #1#2
+\cs_new_protected:Npn \enotez_caption_endnote:nn #1#2
{
\quark_if_no_value:nTF { #1 }
{
\enotez_write_mark:nn
- { \int_use:N \g_enotez_endnote_id_int }
- { \enotez_counter_format:V \g_enotez_endnote_mark_int }
+ { \int_use:N \g__enotez_endnote_id_int }
+ { \enotez_counter_format:V \g__enotez_endnote_mark_int }
}
- { \enotez_write_mark:nn { \int_use:N \g_enotez_endnote_id_int } { #1 } }
+ { \enotez_write_mark:nn { \int_use:N \g__enotez_endnote_id_int } { #1 } }
}
-\cs_new:Npn \enotez@koma@disable
+\cs_new_protected:Npn \enotez@koma@disable
{ \cs_set_eq:NN \enotez_endnote:nn \enotez_caption_endnote:nn }
-\cs_new:Npn \enotez@memoir@disable
+\cs_new_protected:Npn \enotez@memoir@disable
{
- \cs_set_eq:NN \enotez_tmp_endnote:nn \enotez_endnote:nn
+ \cs_set_eq:NN \__enotez_tmp_endnote:nn \enotez_endnote:nn
\cs_set_eq:NN \enotez_endnote:nn \enotez_caption_endnote:nn
}
-\cs_new:Npn \enotez@memoir@enable
- { \cs_set_eq:NN \enotez_endnote:nn \enotez_tmp_endnote:nn }
+\cs_new_protected:Npn \enotez@memoir@enable
+ { \cs_set_eq:NN \enotez_endnote:nn \__enotez_tmp_endnote:nn }
-\cs_new:Npn \enotez@caption@disable
+\cs_new_protected:Npn \enotez@caption@disable
{
- \patchcmd \caption@@make
+ \xpatchcmd \caption@@make
{ \caption@@@make }
{ \enotez@koma@disable\caption@@@make }
- {}{}
+ { \bool_set_true:N \l__enotez_caption_patched_bool }
+ { \bool_set_false:N \l__enotez_caption_patched_bool }
}
% if we're in a KOMA class, \@@makecaption needs to be patched:
-\AtBeginDocument
+\cs_if_free:NF \KOMAClassName
{
- \@ifpackageloaded { caption }
- { \RequirePackage { etoolbox } \enotez@caption@disable }
- {
- \cs_if_free:NF \KOMAClassName
- {
- \RequirePackage { etoolbox }
- \patchcmd \@@makecaption
- { \setlength{\@tempdima}{\cap@width} }
- { \enotez@koma@disable\setlength{\@tempdima}{\cap@width} }{}{}
- }
- }
+ \xpatchcmd \@@makecaption
+ { \setlength{\@tempdima}{\cap@width} }
+ { \enotez@koma@disable\setlength{\@tempdima}{\cap@width} }
+ { \bool_set_true:N \l__enotez_koma_patched_bool }
+ { \bool_set_false:N \l__enotez_koma_patched_bool }
+ \AfterPackage+ { caption } { \enotez@caption@disable }
}
% if we're in memoir, \@makecaption needs to be patched:
-\@ifclassloaded { memoir }
+% TODO: fails when caption has been loaded, needs to be reworked
+\AfterClass+ { memoir }
{
- \AtBeginDocument
+ \AtEndPreamble
{
- \@ifpackageloaded { caption } { }
+ \cs_if_exist:cF { ver@caption.sty }
{
- \RequirePackage { etoolbox }
- \patchcmd \@makecaption
+ \xpatchcmd \@makecaption
{ \let\@contfnote\footnote }
- { \enotez@memoir@disable\let\@contfnote\footnote }{}{}
- \patchcmd \@makecaption
+ { \enotez@memoir@disable\let\@contfnote\footnote }
+ { \bool_set_true:N \l__enotez_memoir_patched_bool }
+ { \bool_set_false:N \l__enotez_memoir_patched_bool }
+ \xpatchcmd \@makecaption
{ \let\footnote\@contfnote }
- { \enotez@memoir@enable\let\footnote\@contfnote }{}{}
+ { \enotez@memoir@enable\let\footnote\@contfnote }
+ { \bool_set_true:N \l__enotez_memoir_patched_bool }
+ { \bool_set_false:N \l__enotez_memoir_patched_bool }
}
}
- }{}
+ }
+
+\AtBeginDocument
+ {
+ \bool_if:nT
+ { \cs_if_exist_p:c { ver@caption.sty } && !\l__enotez_caption_patched_bool }
+ { \AfterPackage+ { caption } { \enotez@caption@disable } }
+ \bool_if:nT
+ {
+ ( \cs_if_exist_p:c { ver@memoir.cls } && !\l__enotez_memoir_patched_bool )
+ ||
+ (
+ !\cs_if_exist_p:c { ver@memoir.cls } &&
+ \cs_if_exist_p:c { ver@caption.sty } &&
+ !\l__enotez_caption_patched_bool
+ )
+ ||
+ ( \cs_if_exist_p:N \KOMAClassName && !\l__enotez_koma_patched_bool )
+ }
+ { \msg_warning:nn { enotez } { captions } }
+ }
% --------------------------------------------------------------------------
% save the notes to the aux file:
@@ -260,28 +312,33 @@
% #4 section/chapter
% #5 a/m (automatic/manually)
% #6 text
-\cs_new:Npn \enotez_save_note:nnnnnn #1#2#3#4#5#6
+\cs_new_protected:Npn \enotez_save_note:nnnnnn #1#2#3#4#5#6
{ \iow_now:Nn \@auxout { \enotez@note { #1 } { #2 } { #3 } { #4 } { #5 } { #6 } } }
\cs_generate_variant:Nn \enotez_save_note:nnnnnn { xxxxnn , xnxxnn }
-\cs_new:Npn \enotez@note #1#2#3#4#5#6
+\cs_new_protected:Npn \enotez@note #1#2#3#4#5#6
{
\expandafter \xdef \csname enotez@#1@note \endcsname { #2 }
- \prop_gput:Nnn \g_enotez_endnote_mark_prop { #1 } { #2 }
- \prop_gput:Nnn \g_enotez_endnote_split_prop { #1 } { #3 }
- \prop_gput:Nnn \g_enotez_endnote_sect_prop { #1 } { #4 }
- \prop_gput:Nnn \g_enotez_endnote_man_prop { #1 } { #5 }
- \prop_gput:Nnn \g_enotez_endnote_text_prop { #1 } { #6 }
+ \prop_gput:Nnn \g__enotez_endnote_mark_prop { #1 } { #2 }
+ \prop_gput:Nnn \g__enotez_endnote_split_prop { #1 } { #3 }
+ \prop_gput:Nnn \g__enotez_endnote_sect_prop { #1 } { #4 }
+ \prop_gput:Nnn \g__enotez_endnote_man_prop { #1 } { #5 }
+ \prop_gput:Nnn \g__enotez_endnote_text_prop { #1 } { #6 }
}
% a try to check if a rerun is necessary:
+\tl_new:N \l__enotez_change_tl
+
\AtEndDocument
{
- \cs_set:Npn \enotez@note #1#2#3#4#5#6
+ \cs_set_protected:Npn \enotez@note #1#2#3#4#5#6
{
- \def\reserved@a{#2}
- \expandafter\ifx\csname enotez@#1@note \endcsname\reserved@a\else
- \@tempswatrue\fi
+ \tl_set:Nn \l__enotez_change_tl { #2 }
+ \tl_if_eq:cNF { enotez@#1@note } \l__enotez_change_tl
+ {
+ \@latex@warning@no@line
+ { Endnotes~may~have~changed.~Rerun~to~get~them~right. }
+ }
}
}
@@ -314,62 +371,64 @@
\DeclareTemplateCode { enotez-list } { paragraph } { 1 }
{
heading = \enotez_list_heading:n ,
- format = \l_enotez_list_format_tl ,
+ format = \l__enotez_list_format_tl ,
number = \enotez_list_number:n ,
- number-format = \l_enotez_list_number_format_tl ,
- notes-sep = \l_enotez_list_notes_sep_dim ,
+ number-format = \l__enotez_list_number_format_tl ,
+ notes-sep = \l__enotez_list_notes_sep_dim ,
}
{
\AssignTemplateKeys
- \bool_if:NT \l_enotez_totoc_bool
+ \bool_if:NT \l__enotez_totoc_bool
{
- \bool_if:NT \l_enotez_hyperref_bool { \phantomsection }
- \addcontentsline { toc } { \l_enotez_totoc_tl } { \l_enotez_list_name_tl }
+ \bool_if:NT \l__enotez_hyperref_bool { \phantomsection }
+ \addcontentsline { toc } { \l__enotez_totoc_tl } { \l__enotez_list_name_tl }
}
- \enotez_list_heading:n { \l_enotez_list_name_tl }
- \group_begin:
- \tl_use:N \l_enotez_list_format_tl
- \int_zero:N \l_enotez_tmpa_int
- \int_do_while:nn { \l_enotez_tmpa_int <= \g_enotez_list_printed_int }
+ \enotez_list_heading:n { \l__enotez_list_name_tl }
+ \enotez_list_preamble:
+ \group_begin:
+ \tl_use:N \l__enotez_list_format_tl
+ \int_zero:N \l__enotez_tmpa_int
+ \int_do_while:nn { \l__enotez_tmpa_int <= \g__enotez_list_printed_int }
{
- \prop_map_inline:Nn \g_enotez_endnote_mark_prop
+ \prop_map_inline:Nn \g__enotez_endnote_mark_prop
{
\tl_if_eq:xxT
- { \int_use:N \l_enotez_tmpa_int }
- { \prop_get:Nn \g_enotez_endnote_split_prop { ##1 } }
+ { \int_use:N \l__enotez_tmpa_int }
+ { \prop_get:Nn \g__enotez_endnote_split_prop { ##1 } }
{
\enotez_get_split_title:n { ##1 }
\enotez_get_note:nn { #1 } { ##1 }
- \bool_if:NT \l_enotez_print_note_bool
+ \bool_if:NT \l__enotez_print_note_bool
{
\par\noindent
\llap
{
\enotez_list_number:n
{
- \bool_if:NT \l_enotez_hyperfootnotes_bool
+ \bool_if:NT \l__enotez_hyperfootnotes_bool
{
\box_move_up:nn { 1em }
{ \hbox:n { \hypertarget { enz.##1 } { } } }
}
- \tl_use:N \l_enotez_list_number_format_tl
+ \tl_use:N \l__enotez_list_number_format_tl
\tl_if_eq:nxTF { a }
- { \prop_get:Nn \g_enotez_endnote_man_prop { ##1 } }
- { \enotez_counter_format:V \l_enotez_endnote_mark_tl }
- { \tl_use:N \l_enotez_endnote_mark_tl }
+ { \prop_get:Nn \g__enotez_endnote_man_prop { ##1 } }
+ { \enotez_counter_format:V \l__enotez_endnote_mark_tl }
+ { \tl_use:N \l__enotez_endnote_mark_tl }
}
\tl_use:N \c_space_tl
}
- \tl_use:N \l_enotez_endnote_text_tl
+ \tl_use:N \l__enotez_endnote_text_tl
}
}
\par
- \dim_compare:nT { \l_enotez_list_notes_sep_dim != 0pt }
- { \addvspace { \l_enotez_list_notes_sep_dim } }
+ \dim_compare:nT { \l__enotez_list_notes_sep_dim != 0pt }
+ { \addvspace { \l__enotez_list_notes_sep_dim } }
}
- \int_incr:N \l_enotez_tmpa_int
+ \int_incr:N \l__enotez_tmpa_int
}
\group_end:
+ \enotez_list_postamble:
}
\DeclareTemplateInterface { enotez-list } { list } { 1 }
@@ -384,67 +443,69 @@
\DeclareTemplateCode { enotez-list } { list } { 1 }
{
heading = \enotez_list_heading:n ,
- format = \l_enotez_list_format_tl ,
+ format = \l__enotez_list_format_tl ,
number = \enotez_list_number:n ,
- number-format = \l_enotez_list_number_format_tl ,
- list-type = \l_enotez_list_type_tl
+ number-format = \l__enotez_list_number_format_tl ,
+ list-type = \l__enotez_list_type_tl
}
{
\AssignTemplateKeys
- \bool_if:NT \l_enotez_totoc_bool
+ \bool_if:NT \l__enotez_totoc_bool
{
- \bool_if:NT \l_enotez_hyperref_bool { \phantomsection }
- \addcontentsline { toc } { \l_enotez_totoc_tl } { \l_enotez_list_name_tl }
+ \bool_if:NT \l__enotez_hyperref_bool { \phantomsection }
+ \addcontentsline { toc } { \l__enotez_totoc_tl } { \l__enotez_list_name_tl }
}
- \enotez_list_heading:n { \l_enotez_list_name_tl }
+ \enotez_list_heading:n { \l__enotez_list_name_tl }
+ \enotez_list_preamble:
\group_begin:
- \tl_use:N \l_enotez_list_format_tl
- \int_zero:N \l_enotez_tmpa_int
- \int_do_while:nn { \l_enotez_tmpa_int <= \g_enotez_list_printed_int }
+ \tl_use:N \l__enotez_list_format_tl
+ \int_zero:N \l__enotez_tmpa_int
+ \int_do_while:nn { \l__enotez_tmpa_int <= \g__enotez_list_printed_int }
{
- \prop_map_inline:Nn \g_enotez_endnote_mark_prop
+ \prop_map_inline:Nn \g__enotez_endnote_mark_prop
{
- \tl_clear:N \l_enotez_tmpc_tl
+ \tl_clear:N \l__enotez_tmpc_tl
\tl_if_eq:xxT
- { \int_use:N \l_enotez_tmpa_int }
- { \prop_get:Nn \g_enotez_endnote_split_prop { ##1 } }
- { \tl_put_right:Nn \l_enotez_tmpc_tl { ##1 } }
- \tl_if_blank:VF \l_enotez_tmpc_tl
+ { \int_use:N \l__enotez_tmpa_int }
+ { \prop_get:Nn \g__enotez_endnote_split_prop { ##1 } }
+ { \tl_put_right:Nn \l__enotez_tmpc_tl { ##1 } }
+ \tl_if_blank:VF \l__enotez_tmpc_tl
{
\enotez_get_split_title:n { ##1 }
- \begin{\l_enotez_list_type_tl}
+ \begin{\l__enotez_list_type_tl}
}
\tl_if_eq:xxT
- { \int_use:N \l_enotez_tmpa_int }
- { \prop_get:Nn \g_enotez_endnote_split_prop { ##1 } }
+ { \int_use:N \l__enotez_tmpa_int }
+ { \prop_get:Nn \g__enotez_endnote_split_prop { ##1 } }
{
\enotez_get_note:nn { #1 } { ##1 }
- \bool_if:NT \l_enotez_print_note_bool
+ \bool_if:NT \l__enotez_print_note_bool
{
\item
[
\enotez_list_number:n
{
- \bool_if:NT \l_enotez_hyperfootnotes_bool
+ \bool_if:NT \l__enotez_hyperfootnotes_bool
{
\box_move_up:nn { 1em }
{ \hbox:n { \hypertarget { enz.##1 } { } } }
}
- \tl_use:N \l_enotez_list_number_format_tl
+ \tl_use:N \l__enotez_list_number_format_tl
\tl_if_eq:nxTF { a }
- { \prop_get:Nn \g_enotez_endnote_man_prop { ##1 } }
- { \enotez_counter_format:V \l_enotez_endnote_mark_tl }
- { \tl_use:N \l_enotez_endnote_mark_tl }
+ { \prop_get:Nn \g__enotez_endnote_man_prop { ##1 } }
+ { \enotez_counter_format:V \l__enotez_endnote_mark_tl }
+ { \tl_use:N \l__enotez_endnote_mark_tl }
}
]
- \tl_use:N \l_enotez_endnote_text_tl
+ \tl_use:N \l__enotez_endnote_text_tl
}
}
- \tl_if_blank:VF \l_enotez_tmpc_tl { \end{\l_enotez_list_type_tl} }
+ \tl_if_blank:VF \l__enotez_tmpc_tl { \end{\l__enotez_list_type_tl} }
}
- \int_incr:N \l_enotez_tmpa_int
+ \int_incr:N \l__enotez_tmpa_int
}
\group_end:
+ \enotez_list_postamble:
}
% some default styles:
@@ -453,74 +514,78 @@
\DeclareInstance { enotez-list } { itemize } { list } { list-type = itemize }
% the titles in between the splits:
-\cs_new:Npn \enotez_read_splitted_title:nn #1#2
+\cs_new_protected:Npn \enotez_read_splitted_title:nn #1#2
{
\group_begin:
- \tl_set:Nn \l_tmpa_tl { #1 }
- \tl_replace_all:Nnn \l_tmpa_tl { <name> }
- { \enotez_first_upper:V \l_enotez_split_tl }
- \tl_replace_all:Nnn \l_tmpa_tl { <ref> }
- { \prop_get:Nn \g_enotez_endnote_sect_prop { #2 } }
- \tl_use:N \l_tmpa_tl
+ \tl_set:Nn \l__enotez_tmpa_tl { #1 }
+ \tl_replace_all:Nnx \l__enotez_tmpa_tl { <name> }
+ { \l__enotez_actual_sectioning_tl }
+ \tl_replace_all:Nnx \l__enotez_tmpa_tl { <ref> }
+ { \prop_get:Nn \g__enotez_endnote_sect_prop { #2 } }
+ \tl_gset_eq:NN \l__enotez_tmpb_tl \l__enotez_tmpa_tl
\group_end:
}
-\cs_generate_variant:Nn \enotez_read_splitted_title:nn { V }
+\cs_generate_variant:Nn \enotez_read_splitted_title:nn { V , x }
+\cs_generate_variant:Nn \tl_replace_all:Nnn { Nnx }
-\cs_new:Npn \enotez_first_upper:n #1
+\cs_new_protected:Npn \enotez_first_upper:n #1
{ \tl_to_uppercase:n { \tl_head:n { #1 } } \tl_tail:n { #1 } }
\cs_generate_variant:Nn \enotez_first_upper:n { V }
% determine which note's next:
-\cs_new:Npn \enotez_get_note:nn #1#2
+\cs_new_protected:Npn \enotez_get_note:nn #1#2
{
\IfBooleanTF { #1 }
{
- \prop_get:NnN \g_enotez_endnote_mark_prop { #2 } \l_enotez_endnote_mark_tl
- \prop_get:NnN \g_enotez_endnote_text_prop { #2 } \l_enotez_endnote_text_tl
- \bool_set_true:N \l_enotez_print_note_bool
+ \prop_get:NnN \g__enotez_endnote_mark_prop { #2 } \l__enotez_endnote_mark_tl
+ \prop_get:NnN \g__enotez_endnote_text_prop { #2 } \l__enotez_endnote_text_tl
+ \bool_set_true:N \l__enotez_print_note_bool
}
{
- \prop_get:NnN \g_enotez_endnote_split_prop { #2 } \l_enotez_tmpa_tl
- \bool_if:NTF \l_enotez_split_bool
+ \prop_get:NnN \g__enotez_endnote_split_prop { #2 } \l__enotez_tmpa_tl
+ \bool_if:NTF \l__enotez_split_bool
{
- \bool_set_true:N \l_enotez_print_note_bool
- \prop_gpop:NnN \g_enotez_endnote_mark_prop { #2 } \l_enotez_endnote_mark_tl
- \prop_gpop:NnN \g_enotez_endnote_text_prop { #2 } \l_enotez_endnote_text_tl
+ \bool_set_true:N \l__enotez_print_note_bool
+ \prop_gpop:NnN \g__enotez_endnote_mark_prop { #2 } \l__enotez_endnote_mark_tl
+ \prop_gpop:NnN \g__enotez_endnote_text_prop { #2 } \l__enotez_endnote_text_tl
}
{
- \int_compare:nTF { \l_enotez_tmpa_tl = \g_enotez_list_printed_int }
+ \int_compare:nTF { \l__enotez_tmpa_tl = \g__enotez_list_printed_int }
{
- \bool_set_true:N \l_enotez_print_note_bool
- \prop_gpop:NnN \g_enotez_endnote_mark_prop { #2 } \l_enotez_endnote_mark_tl
- \prop_gpop:NnN \g_enotez_endnote_text_prop { #2 } \l_enotez_endnote_text_tl
- \prop_gdel:Nn \g_enotez_endnote_split_prop { #2 }
+ \bool_set_true:N \l__enotez_print_note_bool
+ \prop_gpop:NnN \g__enotez_endnote_mark_prop { #2 } \l__enotez_endnote_mark_tl
+ \prop_gpop:NnN \g__enotez_endnote_text_prop { #2 } \l__enotez_endnote_text_tl
+ \prop_gremove:Nn \g__enotez_endnote_split_prop { #2 }
}
- { \bool_set_false:N \l_enotez_print_note_bool }
+ { \bool_set_false:N \l__enotez_print_note_bool }
}
}
}
-\cs_new:Npn \enotez_get_split_title:n #1
+\cs_new_protected:Npn \enotez_get_split_title:n #1
{
- \prop_get:NnN \g_enotez_endnote_split_prop { #1 } \l_enotez_tmpa_tl
- \bool_if:NT \l_enotez_split_bool
+ \prop_get:NnN \g__enotez_endnote_split_prop { #1 } \l__enotez_tmpa_tl
+ \bool_if:NT \l__enotez_split_bool
{
- \tl_if_eq:NNF \l_enotez_tmpa_tl \l_enotez_tmpb_tl
+ \tl_if_eq:NNF \l__enotez_tmpa_tl \l__enotez_tmpb_tl
{
- \tl_if_blank:VTF \l_enotez_splitted_list_sectioning_tl
+ \tl_if_eq:VnTF \l__enotez_split_tl { section }
+ { \tl_set_eq:NN \l__enotez_actual_sectioning_tl \l__enotez_section_tl }
+ { \tl_set_eq:NN \l__enotez_actual_sectioning_tl \l__enotez_chapter_tl }
+ \enotez_read_splitted_title:xn
+ { \l__enotez_splitted_title_tl }
+ { #1 }
+ \tl_if_blank:VTF \l__enotez_splitted_list_sectioning_tl
{
- \tl_if_eq:VnTF \l_enotez_split_tl { section }
+ \tl_if_eq:VnTF \l__enotez_split_tl { section }
{ \subsection* }
{ \section* }
}
- { \use:c { \l_enotez_splitted_list_sectioning_tl } }
- {
- \enotez_read_splitted_title:Vn
- \l_enotez_splitted_title_tl { #1 }
- }
+ { \use:c { \l__enotez_splitted_list_sectioning_tl } }
+ { \exp_not:V \l__enotez_tmpb_tl }
}
}
- \prop_get:NnN \g_enotez_endnote_split_prop { #1 } \l_enotez_tmpb_tl
+ \prop_get:NnN \g__enotez_endnote_split_prop { #1 } \l__enotez_tmpb_tl
}
% the marks in the list:
@@ -531,66 +596,130 @@
\cs_new_eq:NN \enotezwritemark \textsuperscript
% internal printendnotes:
-\cs_new:Npn \enotez_print_endnotes:nn #1#2
+\cs_new_protected:Npn \enotez_print_endnotes:nn #1#2
{
\IfNoValueTF { #2 }
- { \UseInstance { enotez-list } { \l_enotez_list_instance_tl } }
+ { \UseInstance { enotez-list } { \l__enotez_list_instance_tl } }
{ \UseInstance { enotez-list } { #2 } }
{ #1 }
- \bool_if:NF \l_enotez_split_bool
+ \bool_if:NF \l__enotez_split_bool
{
- \bool_if:NTF \l_enotez_reset_bool
- { \int_gzero:N \g_enotez_endnote_mark_int }
- \int_gincr:N \g_enotez_list_printed_int
+ \bool_if:NTF \l__enotez_reset_bool
+ { \int_gzero:N \g__enotez_endnote_mark_int }
+ \int_gincr:N \g__enotez_list_printed_int
}
}
% the user command:
\NewDocumentCommand \printendnotes { so }
{
- \bool_if:NTF \l_enotez_split_bool
+ \bool_if:NTF \l__enotez_split_bool
{ \enotez_print_endnotes:nn { \BooleanFalse } { #2 } }
{ \enotez_print_endnotes:nn { #1 } { #2 } }
}
% --------------------------------------------------------------------------
+% preamble and postamble to the list:
+\cs_new_protected:Npn \enotez_list_preamble:
+ {
+ \tl_if_empty:NTF \g__enotez_list_next_preamble_tl
+ {
+ \tl_if_empty:NF \g__enotez_list_every_preamble_tl
+ {
+ \tl_use:N \g__enotez_list_every_preamble_tl
+ \par
+ \skip_vertical:N \l__enotez_list_preamble_skip
+ }
+ }
+ {
+ \tl_use:N \g__enotez_list_next_preamble_tl
+ \par
+ \skip_vertical:N \l__enotez_list_preamble_skip
+ }
+ \tl_gclear:N \g__enotez_list_next_preamble_tl
+ }
+
+\cs_new_protected:Npn \enotez_list_postamble:
+ {
+ \tl_if_empty:NTF \g__enotez_list_next_postamble_tl
+ {
+ \tl_if_empty:NF \g__enotez_list_every_postamble_tl
+ {
+ \par
+ \skip_vertical:N \l__enotez_list_postamble_skip
+ \tl_use:N \g__enotez_list_every_postamble_tl
+ }
+ }
+ {
+ \par
+ \skip_vertical:N \l__enotez_list_postamble_skip
+ \tl_use:N \g__enotez_list_next_postamble_tl
+ }
+ \tl_gclear:N \g__enotez_list_next_postamble_tl
+ }
+
+\cs_new_protected:Npn \enotez_set_next_preamble:n #1
+ { \tl_gset:Nn \g__enotez_list_next_preamble_tl { #1 } }
+
+\cs_new_protected:Npn \enotez_set_every_preamble:n #1
+ { \tl_gset:Nn \g__enotez_list_every_preamble_tl { #1 } }
+
+\cs_new_protected:Npn \enotez_set_next_postamble:n #1
+ { \tl_gset:Nn \g__enotez_list_next_postamble_tl { #1 } }
+
+\cs_new_protected:Npn \enotez_set_every_postamble:n #1
+ { \tl_gset:Nn \g__enotez_list_every_postamble_tl { #1 } }
+
+\NewDocumentCommand \AtNextEndnotesList { m }
+ { \enotez_set_next_preamble:n { #1 } }
+
+\NewDocumentCommand \AtEveryEndnotesList { m }
+ { \enotez_set_every_preamble:n { #1 } }
+
+\NewDocumentCommand \AfterNextEndnotesList { m }
+ { \enotez_set_next_postamble:n { #1 } }
+
+\NewDocumentCommand \AfterEveryEndnotesList { m }
+ { \enotez_set_every_postamble:n { #1 } }
+
+% --------------------------------------------------------------------------
% process the options:
\ProcessKeysOptions { enotez }
\AtBeginDocument
{
- \bool_if:NT \l_enotez_split_bool
+ \bool_if:NT \l__enotez_split_bool
{
- \tl_if_eq:VnTF \l_enotez_split_tl { section }
+ \tl_if_eq:VnTF \l__enotez_split_tl { section }
{
\tl_put_left:Nn \section
{
- \int_gincr:N \g_enotez_list_printed_int
- \bool_if:NT \l_enotez_reset_bool
- { \int_gzero:N \g_enotez_endnote_mark_int }
+ \int_gincr:N \g__enotez_list_printed_int
+ \bool_if:NT \l__enotez_reset_bool
+ { \int_gzero:N \g__enotez_endnote_mark_int }
}
}
{
\tl_put_left:Nn \chapter
{
- \int_gincr:N \g_enotez_list_printed_int
- \bool_if:NT \l_enotez_reset_bool
- { \int_gzero:N \g_enotez_endnote_mark_int }
+ \int_gincr:N \g__enotez_list_printed_int
+ \bool_if:NT \l__enotez_reset_bool
+ { \int_gzero:N \g__enotez_endnote_mark_int }
}
}
}
\@ifpackageloaded { hyperref }
{
- \bool_set_true:N \l_enotez_hyperref_bool
+ \bool_set_true:N \l__enotez_hyperref_bool
\ifHy@hyperfootnotes
- \bool_set_true:N \l_enotez_hyperfootnotes_bool
+ \bool_set_true:N \l__enotez_hyperfootnotes_bool
\else
- \bool_set_false:N \l_enotez_hyperfootnotes_bool
+ \bool_set_false:N \l__enotez_hyperfootnotes_bool
\fi
}
{
- \bool_set_false:N \l_enotez_hyperref_bool
- \bool_set_false:N \l_enotez_hyperfootnotes_bool
+ \bool_set_false:N \l__enotez_hyperref_bool
+ \bool_set_false:N \l__enotez_hyperfootnotes_bool
}
}
@@ -599,6 +728,58 @@
\NewDocumentCommand \setenotez { +m }
{ \keys_set:nn { enotez } { #1 } \ignorespaces }
+% --------------------------------------------------------------------------
+% language support
+\RequirePackage { translations }
+\DeclareTranslationFallback { enotez-title } { Notes }
+\DeclareTranslation { Catalan } { enotez-title } { Notes }
+\DeclareTranslation { Croatian } { enotez-title } { Bilje\v{s}ke }
+\DeclareTranslation { English } { enotez-title } { Notes }
+\DeclareTranslation { French } { enotez-title } { Remarques }
+\DeclareTranslation { German } { enotez-title } { Anmerkungen }
+\DeclareTranslation { Hungarian } { enotez-title } { Megjegyz\'{e}sek }
+\DeclareTranslation { Italian } { enotez-title } { Note }
+\DeclareTranslation { Spanish } { enotez-title } { Notas }
+\DeclareTranslation { Turkish } { enotez-title } { Notlar }
+
+\DeclareTranslationFallback { enotez-splitted-title } { Notes~for~<name>~<ref> }
+\DeclareTranslation { Catalan } { enotez-splitted-title } { Notes~del~<name>~<ref> }
+\DeclareTranslation { Croatian } { enotez-splitted-title } { Bilje\v{s}ke~uz~<name>~<ref> }
+\DeclareTranslation { English } { enotez-splitted-title } { Notes~for~<name>~<ref> }
+\DeclareTranslation { French } { enotez-splitted-title } { Remarques~aux~<name>~<ref> }
+\DeclareTranslation { German } { enotez-splitted-title } { Anmerkungen~zu~<name>~<ref> }
+\DeclareTranslation { Hungarian } { enotez-splitted-title } { Megjegyz\'{e}sek~a~<ref>.~<name> }
+\DeclareTranslation { Italian } { enotez-splitted-title } { Note~per~il~<name>~<ref> }
+\DeclareTranslation { Spanish } { enotez-splitted-title } { Notas~del~<name>~<ref> }
+\DeclareTranslation { Turkish } { enotez-splitted-title } { <name>~<ref>~notlar }
+
+\DeclareTranslationFallback { enotez-section } { section }
+\DeclareTranslation { Catalan } { enotez-section } { secci\'{o} }
+\DeclareTranslation { Croatian } { enotez-section } { odjeljak }
+\DeclareTranslation { English } { enotez-section } { section }
+\DeclareTranslation { French } { enotez-section } { section }
+\DeclareTranslation { German } { enotez-section } { Abschnitt }
+\DeclareTranslation { Hungarian } { enotez-section } { szakasz }
+\DeclareTranslation { Italian } { enotez-section } { sezione }
+\DeclareTranslation { Spanish } { enotez-section } { secci\'{o}n }
+\DeclareTranslation { Turkish } { enotez-section } { B\"{o}l\"{u}m }
+
+\DeclareTranslationFallback { enotez-chapter } { chapter }
+\DeclareTranslation { Catalan } { enotez-chapter } { cap\'{\i}tol }
+\DeclareTranslation { Croatian } { enotez-chapter } { poglavlje }
+\DeclareTranslation { English } { enotez-chapter } { chapter }
+\DeclareTranslation { French } { enotez-chapter } { chapitre }
+\DeclareTranslation { German } { enotez-chapter } { Kapitel }
+\DeclareTranslation { Hungarian } { enotez-chapter } { fejezet }
+\DeclareTranslation { Italian } { enotez-chapter } { capitolo }
+\DeclareTranslation { Spanish } { enotez-chapter } { cap\'{\i}tulo }
+\DeclareTranslation { Turkish } { enotez-chapter } { B\"{o}l\"{u}m }
+
+\tl_set:Nn \l__enotez_splitted_title_tl { \GetTranslation { enotez-splitted-title } }
+\tl_set:Nn \l__enotez_list_name_tl { \GetTranslation { enotez-title } }
+\tl_set:Nn \l__enotez_section_tl { \GetTranslation { enotez-section } }
+\tl_set:Nn \l__enotez_chapter_tl { \GetTranslation { enotez-chapter } }
+
\tex_endinput:D
% --------------------------------------------------------------------------
% HISTORY:
@@ -614,7 +795,15 @@
endnote is used inside a caption
2012/12/30 v0.4 - new options `mark-cs' and `mark-format', redefinable
commands \enmarkstyle and \enotezwritemark
+2012/01/18 v0.4a - added beginnings of internationalization -- this will need
+ help from users speaking the actual languages
+2013/03/12 v0.5 - \AtNextEndnotesList, \AtEveryEndnotesList
+ - use protected internal commands where appropriate
+ - fix wrong endnote marks when used with the `caption'
+ package
+2013/03/18 v0.5a - adapt to deprecated expl3 commands
% --------------------------------------------------------------------------
% TODO:
+- add \endnotemark and \endnotetext
- make the headings obey the `totoc' option? \ No newline at end of file