summaryrefslogtreecommitdiff
path: root/Master/texmf-dist
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-02-10 23:12:30 +0000
committerKarl Berry <karl@freefriends.org>2013-02-10 23:12:30 +0000
commit02c193f4bbd220bc6a44c64c3115effc739a7450 (patch)
tree25f737172538c49f64cda966f1d3e02c40157335 /Master/texmf-dist
parent84e76f635fbeb4bac73aa771673c0e25402611b1 (diff)
acro (10feb13)
git-svn-id: svn://tug.org/texlive/trunk@29073 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r--Master/texmf-dist/doc/latex/acro/README4
-rw-r--r--Master/texmf-dist/doc/latex/acro/acro_en.pdfbin477770 -> 485444 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acro/acro_en.tex91
-rw-r--r--Master/texmf-dist/tex/latex/acro/acro.sty473
-rw-r--r--Master/texmf-dist/tex/latex/acro/acro0.def1
-rw-r--r--Master/texmf-dist/tex/latex/acro/acro1.def51
6 files changed, 510 insertions, 110 deletions
diff --git a/Master/texmf-dist/doc/latex/acro/README b/Master/texmf-dist/doc/latex/acro/README
index 72fbe67ebe4..35a1e727cbe 100644
--- a/Master/texmf-dist/doc/latex/acro/README
+++ b/Master/texmf-dist/doc/latex/acro/README
@@ -1,9 +1,9 @@
--------------------------------------------------------------------------
-the ACRO package v1.1a
+the ACRO package v1.2
Typeset Acronyms
-2013/01/29
+2013/02/09
--------------------------------------------------------------------------
Clemens Niederberger
Web: https://bitbucket.org/cgnieder/acro/
diff --git a/Master/texmf-dist/doc/latex/acro/acro_en.pdf b/Master/texmf-dist/doc/latex/acro/acro_en.pdf
index 265ffa032a2..3c8227899e2 100644
--- a/Master/texmf-dist/doc/latex/acro/acro_en.pdf
+++ b/Master/texmf-dist/doc/latex/acro/acro_en.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acro/acro_en.tex b/Master/texmf-dist/doc/latex/acro/acro_en.tex
index 7eaa8baf26e..fc75e3f8c96 100644
--- a/Master/texmf-dist/doc/latex/acro/acro_en.tex
+++ b/Master/texmf-dist/doc/latex/acro/acro_en.tex
@@ -63,10 +63,12 @@
\ChangeEmph{(}[-.01em,.04em]{)}[.04em,-.05em]
\addcmds{
- ac,aca,acap,acf,acfp,acl,aclp,acp,acreset,acresetall,acs,acsetup,acsp,
+ ac,aca,acap,acf,acflike,acfp,acfplike,acl,aclp,acp,acreset,acresetall,acs,
+ acsetup,acsp,
addcolon,
DeclareAcronym,DeclareAcronymCitation,DeclareAcronymFormat,
DeclareAcronymPDFString,
+ iac,Iac,iaca,Iaca,iacs,Iacs,iacl,Iacl,iacf,Iacf,iacflike,Iacflike,
linewidth,
nato,newlist,ny,
printacronyms,
@@ -256,6 +258,11 @@
short = \{TeX\}.SE ,
long = \TeX{} StackExchange
}
+\DeclareAcronym{ufo}{
+ short = UFO ,
+ long = unidentified flying object ,
+ long-indefinite = an
+}
\usepackage{imakeidx}
\makeindex[columns=2,options={-sl \jobname.ist},intoc]
@@ -381,6 +388,14 @@ are not described immediately but at appropriate places in the documentation.
\Option{long-plural-form}{<text>}\newline
plural long form of the acronym; replaces the long form when used instead of
appending the plural ending.
+ %% short-indefinite
+ \Option{short-indefinite}{<text>}\Default{a}
+ \sinceversion{1.2}%
+ indefinite article for the short form.
+ %% long-indefinite
+ \Option{long-indefinite}{<text>}\Default{a}
+ \sinceversion{1.2}%
+ indefinite article for the long form.
%% long-pre
\Option{long-pre}{<text>}\newline
\sinceversion{1.1}\code{<text>} is prepended to the long form in the text but
@@ -392,6 +407,10 @@ are not described immediately but at appropriate places in the documentation.
%% alt
\Option{alt}{<text>}\newline
alternative short form.
+ %% alt-indefinite
+ \Option{alt-indefinite}{<text>}\Default{a}
+ \sinceversion{1.2}%
+ indefinite article for the alternative form.
%% extra
\Option{extra}{<text>}\newline
extra information to be added in the list of acronyms.
@@ -410,6 +429,10 @@ are not described immediately but at appropriate places in the documentation.
%% long-format
\Option{long-format}{<\TeX{} code>}\newline
the format used for the long form of the acronym.
+ %% first-long-format
+ \Option{first-long-format}{<\TeX{} code>}\newline
+ the format used for the first long form of the acronym as set with \cmd{ac},
+ \cmd{acf} or \cmd{acflike} and their uppercase, plural and indefinite forms.
%% pdfstring
\Option{pdfstring}{<text>/<plural ending>}\newline
used as \acs{pdf} string replacement in bookmarks when used together with the
@@ -643,6 +666,50 @@ for the impact of the following example.
\secidx*{Basics}
\section{Additional Commands and Possibilities}\secidx{Additional Commands}
+\subsection{Indefinite Forms}\secidx[indefinite forms]{Additional Commands}
+\noindent\sinceversion{1.2}%
+Unlike many other languages\footnote{Let's better say: unlike the other
+languages where I know at least the basics.} in English the indefinite article
+is not determined by the grammatical case, gender or number but by the
+pronounciation of the following word. This means that the short and the long
+form of an acronym can have different indefinite articles. For these cases \acro
+offers the keys \key{short-indefinite}, \key{alt-indefinite} and
+\key{long-indefinite} whose default is \code{a}. For every lowercase singular
+command two alternatives exist, preceded by \code{i} and \code{I}, respectively,
+which output the lowercase and uppercase version of the corresponding indefinite
+article.
+
+\begin{beispiel}
+ % preamble:
+ % \DeclareAcronym{ufo}{
+ % short = UFO ,
+ % long = unidentified flying object ,
+ % long-indefinite = an
+ % }
+ \Iac{ufo}; \iacs{ufo}; \iacl{ufo}
+\end{beispiel}
+
+\subsection{Simulating the First Appearance}
+\noindent\sinceversion{1.2}%
+Users told me\footnote{Well -- one, to be precise ;)} that there are cases when it
+might be useful to have the the acronym typeset according to the \key{first-style}
+but with another text than the long form. For such cases \acro offers the
+following commands.
+\begin{beschreibung}
+ \Befehl{acflike}*{<id>}\ma{<instead of long form>}
+ \Befehl{acfplike}*{<id>}\ma{<instead of long form>}
+\end{beschreibung}
+
+\begin{beispiel}
+ \acsetup{first-style=footnote}
+ \acflike{ny}{the big apple}
+\end{beispiel}
+
+The plural ending in \cmd{acfplike} is only appended to the short form. It makes
+no sense to append it to the text that is inserted manually anyway. Note that
+whatever text you're inserting might be gobbled depending on the \key{first-style}
+you're using.
+
\subsection{Using Classes}\secidx[classes]{Additional Commands}
The acronyms of \acro can be divided into different classes. This doesn't change
the output but allows different acronym lists, see section~\ref{sec:print_lists}.
@@ -650,7 +717,12 @@ For this \cmd{DeclareAcronym} has an additional key:
\begin{beschreibung}
\Option{class}{<text>}
\end{beschreibung}
-\begin{beispiel}[below]
+
+This might be useful if you can and want to divide your acronyms into different
+types, technical and grammatical ones, say, that shall be listed in different
+lists.
+
+\begin{beispiel}
% preamble:
% \DeclareAcronym{la}{
% short = LA ,
@@ -670,9 +742,6 @@ For this \cmd{DeclareAcronym} has an additional key:
\acl{la} (\acs{la}) \\
\acl{ny} (\acs{ny})
\end{beispiel}
-This might be useful if you can and want to divide your acronyms into different
-types, technical and grammatical ones, say, that shall be listed in different
-lists.
\subsection{Reset or Mark as Used}\secidx[resetting]{Additional Commands}
If you want for some reason to fool \acro into thinking that an acronym is used
@@ -828,6 +897,13 @@ There are a few options which change the general behaviour of \acro.
actually used in the document are printed in the list. If \code{false}, all
acronyms defined with \cmd{DeclareAcronym} will be written to the list.
%%
+ \Option{mark-as-used}{first|any}\Default{any}
+ \sinceversion{1.2}%
+ This option determines wether an acronym is mark as used when the \emph{first}
+ form is used the first time (with \cmd{ac}, \cmd{acf} or \cmd{acflike} and
+ their uppercase, plural and indefinite forms) or when any of the \cmd{ac}-like
+ commands is used.
+ %%
\Option{macros}{\default{true}|false}\Default{false}
If set to \code{true} this option will create a macro \cmd{<id>} for each
acronym as a shortcut for \cmd{ac}{<id>}. Already existing macros will
@@ -907,6 +983,11 @@ possible output forms of the acronyms.
\Option{long-format}{<format>}\Default
The same for the long forms.
%%
+ \Option{first-long-format}{<format>}\Default
+ \sinceversion{1.2}%
+ The format for the long form on first usage (with \cmd{ac}, \cmd{acf} or
+ \cmd{acflike} and their uppercase, plural and indefinite forms).
+ %%
\Option{list-short-format}{<format>}\Default
\sinceversion{1.1}An extra format for the short entries in the list. If not
used this is the same as \key{short-format}. Please be aware that a call of
diff --git a/Master/texmf-dist/tex/latex/acro/acro.sty b/Master/texmf-dist/tex/latex/acro/acro.sty
index af47b4d9740..12deaec79fd 100644
--- a/Master/texmf-dist/tex/latex/acro/acro.sty
+++ b/Master/texmf-dist/tex/latex/acro/acro.sty
@@ -31,8 +31,8 @@
\RequirePackage{expl3,xparse,l3keys2e,xtemplate}
\ProvidesExplPackage
{acro}
- {2013/01/29}
- {1.1a}
+ {2013/02/09}
+ {1.2}
{Typeset Acronyms}
% warning and error messages:
@@ -63,6 +63,7 @@
% boolean variables:
\bool_new:N \l__acro_mark_as_used_bool
+\bool_new:N \l__acro_mark_first_as_used_bool
\bool_new:N \l__acro_use_single_bool
\bool_new:N \l__acro_print_only_used_bool
\bool_set_true:N \l__acro_print_only_used_bool
@@ -74,6 +75,8 @@
\bool_new:N \l__acro_create_macros_bool
\bool_new:N \l__acro_xspace_bool
\bool_new:N \l__acro_first_upper_bool
+\bool_new:N \l__acro_indefinite_bool
+\bool_new:N \l__acro_upper_indefinite_bool
\bool_new:N \l__acro_sort_bool
\bool_set_true:N \l__acro_sort_bool
\bool_new:N \l__acro_capitalize_list_bool
@@ -91,7 +94,10 @@
\tl_new:N \l__acro_short_format_tl
\tl_new:N \l__acro_list_short_format_tl
\tl_new:N \l__acro_long_format_tl
+\tl_new:N \l__acro_first_long_format_tl
\tl_new:N \l__acro_list_long_format_tl
+\tl_new:N \l__acro_default_indefinite_tl
+\tl_set:Nn \l__acro_default_indefinite_tl { a }
\tl_new:N \l__acro_extra_format_tl
\tl_new:N \l__acro_first_instance_tl
\tl_set:Nn \l__acro_first_instance_tl { default }
@@ -137,11 +143,15 @@
\prop_new:N \l__acro_replace_plural_prop
\prop_new:N \l__acro_short_plural_prop
\prop_new:N \l__acro_long_plural_prop
+\prop_new:N \l__acro_short_indefinite_prop
+\prop_new:N \l__acro_long_indefinite_prop
+\prop_new:N \l__acro_alt_indefinite_prop
\prop_new:N \l__acro_long_pre_prop
\prop_new:N \l__acro_long_post_prop
\prop_new:N \l__acro_extra_prop
\prop_new:N \l__acro_format_prop
\prop_new:N \l__acro_long_format_prop
+\prop_new:N \l__acro_first_long_format_prop
\prop_new:N \l__acro_citation_prop
\prop_new:N \l__acro_citation_pre_prop
\prop_new:N \l__acro_citation_post_prop
@@ -162,6 +172,7 @@
\cs_new:Npn \__acro_first_upper_case:n #1
{ \tl_expandable_uppercase:n { \tl_head:n { #1 } } \tl_tail:n { #1 } }
+\cs_generate_variant:Nn \__acro_first_upper_case:n { x }
\cs_new_eq:NN \acro_first_upper_case:n \__acro_first_upper_case:n
@@ -207,7 +218,10 @@
\tl_set:Nn \l__acro_list_short_format_tl { #1 } ,
long-format .code:n =
\tl_set:Nn \l__acro_long_format_tl { #1 }
+ \tl_set:Nn \l__acro_first_long_format_tl { #1 }
\tl_set:Nn \l__acro_list_long_format_tl { #1 } ,
+ first-long-format .code:n =
+ \tl_set:Nn \l__acro_first_long_format_tl { #1 } ,
list-short-format .tl_set:N = \l__acro_list_short_format_tl ,
list-long-format .tl_set:N = \l__acro_list_long_format_tl ,
extra-format .tl_set:N = \l__acro_extra_format_tl ,
@@ -228,6 +242,11 @@
list-table-width .dim_set:N = \l__acro_table_width_dim ,
hyperref .bool_set:N = \l__acro_use_hyperref_bool ,
only-used .bool_set:N = \l__acro_print_only_used_bool ,
+ mark-as-used .choice: ,
+ mark-as-used / first .code:n =
+ \bool_set_true:N \l__acro_mark_first_as_used_bool ,
+ mark-as-used / any .code:n =
+ \bool_set_false:N \l__acro_mark_first_as_used_bool ,
plural-ending .tl_set:N = \l__acro_default_plural_tl ,
list-caps .bool_set:N = \l__acro_capitalize_list_bool ,
cite .choice: ,
@@ -396,7 +415,8 @@
\AssignTemplateKeys
\bool_if:nT { !\l__acro_first_only_short_bool && !\l__acro_first_reversed_bool }
{
- \__acro_write_long:No \l__acro_long_format_tl { #3 }
+ \__acro_indefinite:nn { #1 } { long }
+ \__acro_write_long:No \l__acro_first_long_format_tl { #3 }
\tl_use:N \c_space_tl
\tl_if_blank:VF \l__acro_first_between_tl
{
@@ -407,6 +427,9 @@
\bool_if:nT
{ \l__acro_first_use_brackets_bool && !\l__acro_first_reversed_bool }
{ \tl_head:N \l__acro_first_brackets_tl }
+ \bool_if:nT
+ { \l__acro_first_reversed_bool || \l__acro_first_only_short_bool }
+ { \__acro_indefinite:nn { #1 } { short } }
\__acro_acc_supp:nn { #1 } { \__acro_write_short:n { #2 } }
\bool_if:nT
{ \l__acro_first_use_brackets_bool && !\l__acro_first_reversed_bool }
@@ -423,12 +446,13 @@
\bool_if:nT
{ \l__acro_first_use_brackets_bool && \l__acro_first_reversed_bool }
{ \tl_head:N \l__acro_first_brackets_tl }
- \__acro_write_long:No \l__acro_long_format_tl { #3 }
+ \__acro_write_long:No \l__acro_first_long_format_tl { #3 }
\bool_if:nT
{ \l__acro_first_use_brackets_bool && \l__acro_first_reversed_bool }
{ \tl_tail:N \l__acro_first_brackets_tl }
}
- \acro_after:n { #1 }
+ \__acro_cite_if:Nn \l__acro_citation_first_bool { #1 }
+ \__acro_index_if:Nn \l__acro_addto_index_bool { #1 }
}
% template for footnotes, sidenotes, ...
@@ -445,13 +469,15 @@
}
{
\AssignTemplateKeys
+ \__acro_indefinite:nn { #1 } { short }
\__acro_acc_supp:nn { #1 } { \__acro_write_short:n { #2 } }
\bool_if:NT \l__acro_use_note_bool
{
\__acro_note_command:n
{
- \__acro_write_long:No \l__acro_long_format_tl { #3 }
+ \__acro_write_long:No \l__acro_first_long_format_tl { #3 }
\__acro_cite_if:Nn \l__acro_citation_first_bool { #1 }
+ \__acro_index_if:Nn \l__acro_addto_index_bool { #1 }
}
}
}
@@ -550,7 +576,7 @@
{ punct = true, brackets = false }
% --------------------------------------------------------------------------
-% outputting the page numbers:
+% outputting the page numbers: (experimental, needs lots of improvements)
\bool_new:N \l__acro_page_punct_bool
\bool_new:N \l__acro_page_brackets_bool
\bool_new:N \l__acro_page_display_bool
@@ -564,17 +590,17 @@
\seq_new:c { g__acro_#1_pages_seq }
}
-\cs_new:Npn \acro@hyper@page #1
+\cs_new:Npn \ac@hp #1
{
- \tl_if_in:nnTF { #1 } { \acro@no@hyperpage }
+ \tl_if_in:nnTF { #1 } { \ac@no@hp }
{ #1 }
{ \acro_hyper_page:n { #1 } }
}
-\cs_new_protected:Npn \acro@no@hyperpage {}
+\cs_new_protected:Npn \ac@no@hp {}
\cs_new:Npn \__acro_safe_pages_aux:n #1
- { \noexpand \acro@hyper@page {#1}| }
+ { \noexpand \ac@hp {#1}| }
\cs_new_eq:NN \acro_hyper_page:n \use:n
@@ -598,6 +624,10 @@
\tl_new:N \l__acro_tmp_page_tl
\tl_new:N \l__acro_last_page_tl
+\tl_new:N \g__acro_current_page_style_tl
+\tl_new:N \g__acro_last_page_style_tl
+
+\bool_new:N \g__acro_know_page_style_bool
%TODO: this should be translated into expl3 syntax
\cs_new:Npn \__acro_if_is_number:nTF #1
@@ -616,86 +646,124 @@
}
\cs_generate_variant:Nn \__acro_convert_to_arabic:n { V }
-\cs_new:Npn \acro_record_page_number:n #1
+\cs_new:Npn \__acro_check_for_style:n #1
{
- \seq_if_empty:cTF { g__acro_#1_pages_seq }
- {% no pages recorded, yet
- \seq_gput_right:cx { g__acro_#1_pages_seq } { \thepage }
- \seq_gput_right:cx { g__acro_#1_tmp_seq } { \thepage }
+ \tl_if_in:xxT { \tl_to_str:V { \thepage } } { \tl_to_str:n { #1 } }
+ {
+ \tl_gset:Nn \g__acro_current_page_style_tl { #1 }
+ \bool_gset_true:N \g__acro_know_page_style_bool
}
+ }
+\cs_generate_variant:Nn \tl_if_in:nnT { xx }
+\cs_generate_variant:Nn \tl_to_str:n { V }
+
+\cs_new:Npn \acro_check_page_style:
+ {
+ \tl_gset:Nn \g__acro_current_page_style_tl { unknown }
+ \bool_gset_false:N \g__acro_know_page_style_bool
+ \__acro_check_for_style:n { roman }
+ \__acro_check_for_style:n { Roman }
+ \__acro_check_for_style:n { arabic }
+ }
+
+\cs_new:Npn \acro_record_page_number:n #1
+ {
+ \tl_gset_eq:NN \g__acro_last_page_style_tl \g__acro_current_page_style_tl
+ \acro_check_page_style:
+ \bool_if:NT \g__acro_know_page_style_bool
{
- \seq_get_right:cN { g__acro_#1_tmp_seq } \l__acro_tmp_page_tl
- \seq_get_right:cN { g__acro_#1_pages_seq } \l__acro_last_page_tl
- \tl_if_eq:NNTF \l__acro_tmp_page_tl \l__acro_last_page_tl
- {% range may have started
- \int_compare:nNnF
- { \value{page} }
- =
- { \__acro_convert_to_arabic:V \l__acro_tmp_page_tl }
- {
- \int_compare:nNnTF
- { \value{page} }
- =
- { \__acro_convert_to_arabic:V \l__acro_tmp_page_tl + 1 }
- {% range continues
- \seq_gput_right:cx { g__acro_#1_tmp_seq } { \thepage }
+ \seq_if_empty:cTF { g__acro_#1_pages_seq }
+ {% no pages recorded, yet
+ \seq_gput_right:cx { g__acro_#1_pages_seq }
+ { \use:c { \g__acro_current_page_style_tl } { page } }
+ \seq_gput_right:cx { g__acro_#1_tmp_seq }
+ { \use:c { \g__acro_current_page_style_tl } { page } }
+ }
+ {
+ \seq_get_right:cN { g__acro_#1_tmp_seq } \l__acro_tmp_page_tl
+ \seq_get_right:cN { g__acro_#1_pages_seq } \l__acro_last_page_tl
+ \tl_if_eq:NNTF \l__acro_tmp_page_tl \l__acro_last_page_tl
+ {% range may have started
+ \bool_if:nF
+ {
+ \int_compare_p:n
+ { \value{page} = \__acro_convert_to_arabic:V \l__acro_tmp_page_tl }
+ &&
+ \tl_if_eq_p:NN
+ \g__acro_last_page_style_tl
+ \g__acro_current_page_style_tl
}
- {% no range (any more)
- \seq_gput_right:cx { g__acro_#1_pages_seq } { \acro@no@hyperpage,~ }
- \seq_gclear:c { g__acro_#1_tmp_seq }
- \seq_gput_right:cx { g__acro_#1_tmp_seq } { \thepage }
- \seq_gput_right:cx { g__acro_#1_pages_seq } { \thepage }
+ {
+ \int_compare:nNnTF
+ { \value{page} }
+ =
+ { \__acro_convert_to_arabic:V \l__acro_tmp_page_tl + 1 }
+ {% range continues
+ \seq_gput_right:cx { g__acro_#1_tmp_seq }
+ { \use:c { \g__acro_current_page_style_tl } { page } }
+ }
+ {% no range (any more)
+ \seq_gput_right:cx { g__acro_#1_pages_seq } { \ac@no@hp,~ }
+ \seq_gclear:c { g__acro_#1_tmp_seq }
+ \seq_gput_right:cx { g__acro_#1_tmp_seq }
+ { \use:c { \g__acro_current_page_style_tl } { page } }
+ \seq_gput_right:cx { g__acro_#1_pages_seq }
+ { \use:c { \g__acro_current_page_style_tl } { page } }
+ }
}
}
- }
- {% we're in a range
- \int_compare:nNnF
- { \value{page} }
- =
- { \__acro_convert_to_arabic:V \l__acro_tmp_page_tl }
- {
- \int_compare:nNnTF
+ {% we're in a range
+ \int_compare:nNnF
{ \value{page} }
=
- { \__acro_convert_to_arabic:V \l__acro_tmp_page_tl + 1 }
- {% range continues
- \seq_gput_right:cx { g__acro_#1_tmp_seq } { \thepage }
- }
- {% no range (any more)
+ { \__acro_convert_to_arabic:V \l__acro_tmp_page_tl }
+ {
\int_compare:nNnTF
- { \__acro_convert_to_arabic:V \l__acro_tmp_page_tl }
+ { \value{page} }
=
- { \__acro_convert_to_arabic:V \l__acro_last_page_tl +1 }
- {
- \bool_if:NTF \l__acro_page_ranges_bool
- {
- \seq_gput_right:cn { g__acro_#1_pages_seq }
- { \acro@no@hyperpage,~ }
- \seq_gput_right:cx { g__acro_#1_pages_seq }
- { \l__acro_tmp_page_tl }
- }
- {
- \seq_gput_right:cn { g__acro_#1_pages_seq }
- { \acro@no@hyperpage\l__acro_next_page_tl }
- }
+ { \__acro_convert_to_arabic:V \l__acro_tmp_page_tl + 1 }
+ {% range continues
+ \seq_gput_right:cx { g__acro_#1_tmp_seq }
+ { \use:c { \g__acro_current_page_style_tl } { page } }
}
- {
- \bool_if:NTF \l__acro_page_ranges_bool
+ {% no range (any more)
+ \int_compare:nNnTF
+ { \__acro_convert_to_arabic:V \l__acro_tmp_page_tl }
+ =
+ { \__acro_convert_to_arabic:V \l__acro_last_page_tl +1 }
{
- \seq_gput_right:cn { g__acro_#1_pages_seq }
- { \acro@no@hyperpage-- }
- \seq_gput_right:cx { g__acro_#1_pages_seq }
- { \l__acro_tmp_page_tl }
+ \bool_if:NTF \l__acro_page_ranges_bool
+ {
+ \seq_gput_right:cn { g__acro_#1_pages_seq }
+ { \ac@no@hp,~ }
+ \seq_gput_right:cx { g__acro_#1_pages_seq }
+ { \l__acro_tmp_page_tl }
+ }
+ {
+ \seq_gput_right:cn { g__acro_#1_pages_seq }
+ { \ac@no@hp\l__acro_next_page_tl }
+ }
}
{
- \seq_gput_right:cn { g__acro_#1_pages_seq }
- { \acro@no@hyperpage\l__acro_next_pages_tl }
+ \bool_if:NTF \l__acro_page_ranges_bool
+ {
+ \seq_gput_right:cn { g__acro_#1_pages_seq }
+ { \ac@no@hp-- }
+ \seq_gput_right:cx { g__acro_#1_pages_seq }
+ { \l__acro_tmp_page_tl }
+ }
+ {
+ \seq_gput_right:cn { g__acro_#1_pages_seq }
+ { \ac@no@hp\l__acro_next_pages_tl }
+ }
}
+ \seq_gclear:c { g__acro_#1_tmp_seq }
+ \seq_gput_right:cx { g__acro_#1_tmp_seq }
+ { \use:c { \g__acro_current_page_style_tl } { page } }
+ \seq_gput_right:cn { g__acro_#1_pages_seq } { \ac@no@hp,~ }
+ \seq_gput_right:cx { g__acro_#1_pages_seq }
+ { \use:c { \g__acro_current_page_style_tl } { page } }
}
- \seq_gclear:c { g__acro_#1_tmp_seq }
- \seq_gput_right:cx { g__acro_#1_tmp_seq } { \thepage }
- \seq_gput_right:cn { g__acro_#1_pages_seq } { \acro@no@hyperpage,~ }
- \seq_gput_right:cx { g__acro_#1_pages_seq } { \thepage }
}
}
}
@@ -716,26 +784,26 @@
\bool_if:NTF \l__acro_page_ranges_bool
{
\seq_gput_right:cn { g__acro_#1_pages_seq }
- { \acro@no@hyperpage,~ }
+ { \ac@no@hp,~ }
\seq_gput_right:cx { g__acro_#1_pages_seq }
{ \l__acro_tmp_page_tl }
}
{
\seq_gput_right:cn { g__acro_#1_pages_seq }
- { \acro@no@hyperpage\l__acro_next_page_tl }
+ { \ac@no@hp\l__acro_next_page_tl }
}
}
{
\bool_if:NTF \l__acro_page_ranges_bool
{
\seq_gput_right:cn { g__acro_#1_pages_seq }
- { \acro@no@hyperpage-- }
+ { \ac@no@hp-- }
\seq_gput_right:cx { g__acro_#1_pages_seq }
{ \l__acro_tmp_page_tl }
}
{
\seq_gput_right:cn { g__acro_#1_pages_seq }
- { \acro@no@hyperpage\l__acro_next_pages_tl }
+ { \ac@no@hp\l__acro_next_pages_tl }
}
}
}
@@ -883,7 +951,7 @@
{
\clist_map_inline:nn { #2 }
{
- \prop_get:NnN \l__acro_class_prop { #1 } \l__acro_tmpa_tl
+ \prop_get:NnNF \l__acro_class_prop { #1 } \l__acro_tmpa_tl {}
\tl_if_eq:nVT { ##1 } \l__acro_tmpa_tl
{ \bool_set_true:N \l__acro_is_excluded_bool }
}
@@ -1178,6 +1246,7 @@
\acro_is_used:nTF { #1 }
{
% this is not the first time
+ \__acro_indefinite:nn { #1 } { short }
\__acro_acc_supp:nn
{ #1 }
{ \__acro_write_short:V \l__acro_short_tl }
@@ -1185,8 +1254,12 @@
}
{
% this is the first time
+ \bool_gset_true:c { g__acro_#1_first_use_bool }
\__acro_is_single:nTF { #1 }
- { \__acro_write_long:NV \l__acro_long_format_tl \l__acro_long_tl }
+ {
+ \__acro_indefinite:nn { #1 } { long }
+ \__acro_write_long:NV \l__acro_long_format_tl \l__acro_long_tl
+ }
{
\UseInstance { acro-first } { \l__acro_first_instance_tl }
{ #1 }
@@ -1218,17 +1291,22 @@
\cs_new:Npn \acro_get:n #1
{
+ \acro_defined:n { #1 }
\__acro_activate_hyperref_support:
- \prop_get:NnN \l__acro_short_prop { #1 } \l__acro_tmpa_tl
+ \prop_get:NnNF \l__acro_short_prop { #1 } \l__acro_tmpa_tl {}
\__acro_make_link:nNN { #1 } \l__acro_short_tl \l__acro_tmpa_tl
- \prop_get:NnN \l__acro_short_plural_prop { #1 } \l__acro_short_plural_tl
- \prop_get:NnN \l__acro_long_prop { #1 } \l__acro_long_tl
- \prop_get:NnNTF \l__acro_long_format_prop { #1 } \l__acro_custom_long_format_tl
+ \prop_get:NnNF \l__acro_short_plural_prop { #1 } \l__acro_short_plural_tl {}
+ \prop_get:NnNF \l__acro_long_prop { #1 } \l__acro_long_tl {}
+ \prop_get:NnNTF \l__acro_long_format_prop { #1 }
+ \l__acro_custom_long_format_tl
{ \bool_set_true:N \l__acro_custom_long_format_bool }
{ \bool_set_false:N \l__acro_custom_long_format_bool }
+ \prop_get:NnNF \l__acro_first_long_format_prop { #1 }
+ \l__acro_first_long_format_tl
+ {}% to avoid hanging compilation if first-long-format hasn't been set
\prop_get:NnNT \l__acro_long_pre_prop { #1 } \l__acro_long_pre_tl
{ \tl_put_left:NV \l__acro_long_tl \l__acro_long_pre_tl }
- \prop_get:NnN \l__acro_alt_prop { #1 } \l__acro_tmpb_tl
+ \prop_get:NnNF \l__acro_alt_prop { #1 } \l__acro_tmpb_tl {}
\__acro_make_link:nNN { #1 } \l__acro_alt_tl \l__acro_tmpb_tl
\prop_get:NnNTF \l__acro_format_prop { #1 } \l__acro_custom_format_tl
{ \bool_set_true:N \l__acro_custom_format_bool }
@@ -1245,7 +1323,7 @@
\bool_if:NT \l__acro_use_plural_bool
{
\bool_if:nTF { \prop_get:Nn \l__acro_replace_plural_prop { #1 } }
- { \prop_get:NnN \l__acro_long_plural_prop { #1 } \l__acro_long_tl }
+ { \prop_get:NnNF \l__acro_long_plural_prop { #1 } \l__acro_long_tl {} }
{
\tl_put_right:Nn \l__acro_long_tl
{ \prop_get:Nn \l__acro_long_plural_prop { #1 } }
@@ -1258,7 +1336,18 @@
% style for that:
\cs_new:Npn \acro_is_used:nTF #1#2#3
{
- \bool_if:cTF { g__acro_#1_used_bool }
+ \bool_if:nTF
+ {
+ \bool_if_p:c { g__acro_#1_used_bool } &&
+ (
+ (
+ \bool_if_p:c { g__acro_#1_first_use_bool } &&
+ \l__acro_mark_first_as_used_bool
+ )
+ ||
+ ! \l__acro_mark_first_as_used_bool
+ )
+ }
{ \iow_now:Nx \@auxout { \string \acro@used@twice { #1 } } #2 }
{
\iow_now:Nx \@auxout { \string \acro@used@once { #1 } }
@@ -1309,6 +1398,7 @@
{
\acro_get:n { #1 }
\acro_is_used:n { #1 }
+ \__acro_indefinite:nn { #1 } { short }
\__acro_is_single:nT { #1 }
{ \cs_set_eq:NN \acro_hyper_link:nn \use_ii:nn }
\__acro_acc_supp:nn
@@ -1322,6 +1412,7 @@
{
\acro_get:n { #1 }
\acro_is_used:n { #1 }
+ \__acro_indefinite:nn { #1 } { alt }
\__acro_is_single:nT { #1 }
{ \cs_set_eq:NN \acro_hyper_link:nn \use_ii:nn }
\__acro_acc_supp:nn
@@ -1335,6 +1426,7 @@
{
\acro_get:n { #1 }
\acro_is_used:n { #1 }
+ \__acro_indefinite:nn { #1 } { long }
\__acro_is_single:nT { #1 }
{ \cs_set_eq:NN \acro_hyper_link:nn \use_ii:nn }
\__acro_write_long:NV \l__acro_long_format_tl \l__acro_long_tl
@@ -1344,6 +1436,7 @@
% output like the first time:
\cs_new:Npn \acro_first:n #1
{
+ \bool_gset_true:c { g__acro_#1_first_use_bool }
\acro_get:n { #1 }
\acro_is_used:n { #1 }
\__acro_is_single:nT { #1 }
@@ -1354,6 +1447,20 @@
{ \l__acro_long_tl }
}
+% output like the first time with own long version:
+\cs_new:Npn \acro_first_like:nn #1#2
+ {
+ \bool_gset_true:c { g__acro_#1_first_use_bool }
+ \acro_get:n { #1 }
+ \acro_is_used:n { #1 }
+ \__acro_is_single:nT { #1 }
+ { \cs_set_eq:NN \acro_hyper_link:nn \use_ii:nn }
+ \UseInstance { acro-first } { \l__acro_first_instance_tl }
+ { #1 }
+ { \l__acro_short_tl }
+ { #2 }
+ }
+
% ----------------------------------------------------------------------------
% citations:
% #1 pre
@@ -1412,8 +1519,8 @@
% #4: replace
\cs_new:Npn \__acro_index:nnnn #1#2#3#4
{
- \prop_get:NnN \l__acro_short_prop { #2 } \l__acro_tmpa_tl
- \prop_get:NnN \l__acro_format_prop { #2 } \l__acro_tmpb_tl
+ \prop_get:NnNF \l__acro_short_prop { #2 } \l__acro_tmpa_tl {}
+ \prop_get:NnNF \l__acro_format_prop { #2 } \l__acro_tmpb_tl {}
\quark_if_no_value:VTF \l__acro_tmpb_tl
{ \tl_set:Nn \l__acro_tmpc_tl { \l__acro_short_format_tl \l__acro_tmpa_tl } }
{ \tl_set:Nn \l__acro_tmpc_tl { \l__acro_tmpb_tl \l__acro_tmpa_tl } }
@@ -1451,7 +1558,7 @@
\cs_set:Npn \__acro_acc_supp:nn #1#2
{
\prop_get:NnNF \l__acro_acc_supp_prop { #1 } \l__acro_acc_supp_tl
- { \prop_get:NnN \l__acro_short_prop { #1 } \l__acro_acc_supp_tl }
+ { \prop_get:NnNF \l__acro_short_prop { #1 } \l__acro_acc_supp_tl {} }
\bool_if:NT \l__acro_use_plural_bool
{ \tl_put_right:NV \l__acro_acc_supp_tl \l__acro_short_plural_tl }
\__acro_acc_supp_aux:Vn \l__acro_acc_supp_tl { #2 }
@@ -1460,6 +1567,19 @@
}
% --------------------------------------------------------------------------
+% indefinite articles:
+\cs_new_protected:Npn \__acro_indefinite:nn #1#2
+ {
+ \bool_if:NT \l__acro_indefinite_bool
+ { \prop_get:cn { l__acro_#2_indefinite_prop } { #1 } ~ }
+ \bool_if:NT \l__acro_upper_indefinite_bool
+ {
+ \__acro_first_upper_case:x
+ { \prop_get:cn { l__acro_#2_indefinite_prop } { #1 } } ~
+ }
+ }
+
+% --------------------------------------------------------------------------
% experimental sorting feature:
\AtBeginDocument
{
@@ -1487,7 +1607,7 @@
\seq_map_inline:Nn \l__acro_tmpa_seq
{
% get ID:
- \prop_get:NnN \l__acro_tmpa_prop { ##1 } \l__acro_tmpa_tl
+ \prop_get:NnNF \l__acro_tmpa_prop { ##1 } \l__acro_tmpa_tl {}
% get prop entry of ID in #1:
\prop_get:NVNT #1 \l__acro_tmpa_tl \l__acro_tmpb_tl
{
@@ -1528,6 +1648,26 @@
\group_end:
}
+\NewDocumentCommand \iac { sm }
+ {
+ \group_begin:
+ \acro_defined:n { #2 }
+ \acro_use_if:nn { #1 } { #2 }
+ \bool_set_true:N \l__acro_indefinite_bool
+ \acro_use:n { #2 }
+ \group_end:
+ }
+
+\NewDocumentCommand \Iac { sm }
+ {
+ \group_begin:
+ \acro_defined:n { #2 }
+ \acro_use_if:nn { #1 } { #2 }
+ \bool_set_true:N \l__acro_upper_indefinite_bool
+ \acro_use:n { #2 }
+ \group_end:
+ }
+
\NewDocumentCommand \Ac { sm }
{
\group_begin:
@@ -1569,6 +1709,26 @@
\group_end:
}
+\NewDocumentCommand \iacs { sm }
+ {
+ \group_begin:
+ \acro_defined:n { #2 }
+ \acro_use_if:nn { #1 } { #2 }
+ \bool_set_true:N \l__acro_indefinite_bool
+ \acro_short:n { #2 }
+ \group_end:
+ }
+
+\NewDocumentCommand \Iacs { sm }
+ {
+ \group_begin:
+ \acro_defined:n { #2 }
+ \acro_use_if:nn { #1 } { #2 }
+ \bool_set_true:N \l__acro_upper_indefinite_bool
+ \acro_short:n { #2 }
+ \group_end:
+ }
+
\NewDocumentCommand \acsp { sm }
{
\group_begin:
@@ -1589,6 +1749,26 @@
\group_end:
}
+\NewDocumentCommand \iaca { sm }
+ {
+ \group_begin:
+ \acro_defined:n { #2 }
+ \acro_use_if:nn { #1 } { #2 }
+ \bool_set_true:N \l__acro_indefinite_bool
+ \acro_alt:n { #2 }
+ \group_end:
+ }
+
+\NewDocumentCommand \Iaca { sm }
+ {
+ \group_begin:
+ \acro_defined:n { #2 }
+ \acro_use_if:nn { #1 } { #2 }
+ \bool_set_true:N \l__acro_upper_indefinite_bool
+ \acro_alt:n { #2 }
+ \group_end:
+ }
+
\NewDocumentCommand \acap { sm }
{
\group_begin:
@@ -1609,6 +1789,26 @@
\group_end:
}
+\NewDocumentCommand \iacl { sm }
+ {
+ \group_begin:
+ \acro_defined:n { #2 }
+ \acro_use_if:nn { #1 } { #2 }
+ \bool_set_true:N \l__acro_indefinite_bool
+ \acro_long:n { #2 }
+ \group_end:
+ }
+
+\NewDocumentCommand \Iacl { sm }
+ {
+ \group_begin:
+ \acro_defined:n { #2 }
+ \acro_use_if:nn { #1 } { #2 }
+ \bool_set_true:N \l__acro_upper_indefinite_bool
+ \acro_long:n { #2 }
+ \group_end:
+ }
+
\NewDocumentCommand \Acl { sm }
{
\group_begin:
@@ -1650,6 +1850,26 @@
\group_end:
}
+\NewDocumentCommand \iacf { sm }
+ {
+ \group_begin:
+ \acro_defined:n { #2 }
+ \acro_use_if:nn { #1 } { #2 }
+ \bool_set_true:N \l__acro_indefinite_bool
+ \acro_first:n { #2 }
+ \group_end:
+ }
+
+\NewDocumentCommand \Iacf { sm }
+ {
+ \group_begin:
+ \acro_defined:n { #2 }
+ \acro_use_if:nn { #1 } { #2 }
+ \bool_set_true:N \l__acro_upper_indefinite_bool
+ \acro_first:n { #2 }
+ \group_end:
+ }
+
\NewDocumentCommand \Acf { sm }
{
\group_begin:
@@ -1681,14 +1901,58 @@
\group_end:
}
+% first-like:
+\NewDocumentCommand \acflike { smm }
+ {
+ \group_begin:
+ \acro_defined:n { #2 }
+ \acro_use_if:nn { #1 } { #2 }
+ \acro_first_like:nn { #2 } { #3 }
+ \group_end:
+ }
+
+\NewDocumentCommand \iacflike { smm }
+ {
+ \group_begin:
+ \acro_defined:n { #2 }
+ \acro_use_if:nn { #1 } { #2 }
+ \bool_set_true:N \l__acro_indefinite_bool
+ \acro_first_like:nn { #2 } { #3 }
+ \group_end:
+ }
+
+\NewDocumentCommand \Iacflike { smm }
+ {
+ \group_begin:
+ \acro_defined:n { #2 }
+ \acro_use_if:nn { #1 } { #2 }
+ \bool_set_true:N \l__acro_upper_indefinite_bool
+ \acro_first_like:nn { #2 } { #3 }
+ \group_end:
+ }
+
+\NewDocumentCommand \acfplike { smm }
+ {
+ \group_begin:
+ \acro_defined:n { #2 }
+ \acro_use_if:nn { #1 } { #2 }
+ \bool_set_true:N \l__acro_use_plural_bool
+ \acro_first_like:nn { #2 } { #3 }
+ \group_end:
+ }
+
% reset outputs, they'll behave like the first time again (!not like the _only_
% time!):
\cs_new:Npn \acro_reset:n #1
- { \bool_gset_false:c { g__acro_#1_used_bool } }
+ {
+ \bool_gset_false:c { g__acro_#1_used_bool }
+ \bool_gset_false:c { g__acro_#1_first_use_bool }
+ }
\cs_new:Npn \acro_mark_as_used:n #1
{
\bool_gset_true:c { g__acro_#1_used_bool }
+ \bool_gset_true:c { g__acro_#1_first_use_bool }
\acro@used@once { #1 }
}
@@ -1705,13 +1969,13 @@
{ \acro_mark_all_as_used: }
\NewDocumentCommand \acreset { > { \SplitList { , } } m }
- { \ProcessList { #1 } { \acro_reset:n } }
+ { \ProcessList { #1 } { \acro_reset:n } \ignorespaces }
\NewDocumentCommand \acuse { > { \SplitList { , } } m }
- { \ProcessList { #1 } { \acro_mark_as_used:n } }
-
-
+ { \ProcessList { #1 } { \acro_mark_as_used:n } \ignorespaces }
+% ---------------------------------------------------------------------------
+% process options:
\ProcessKeysOptions { acro }
% ---------------------------------------------------------------------------
@@ -1861,18 +2125,23 @@
2013/01/29 v1.1a - added `long-format' key
- renamed `format' key into `short-format', kept `format' for
compatibility reasons
+2013/02/09 v1.2 - error message instead of hanging when an undefined acronym
+ is used
+ - added `first-long-format' key and `first-long-format' option
+ - added \acflike and \acfplike
+ - improvements and bug fixes to the page recording mechanism
+ - new option `mark-as-used'
+ - new keys: `short-indefinite', `alt-indefinite' and
+ `long-indefinite'
+ - new commands: \iac, \Iac, \iacs, \Iacs, \iaca, \Iaca, \iacl,
+ \Iacl, \iacf, \Iacf, \iacflike and \Iacflike
% --------------------------------------------------------------------------
% TODO:
- Option `totoc'!?
-- Optionen `list-header = addsec|addchap' (acro-title instance)
-- acro-first instance `none', die nur die Kurzform verwendet
-- Option `list-short-format'
-
- revise list styles to allow _full_ customization by creating own instances!
this probably needs a handfull of macros that give access to the entries
without worrying about internals
- record and list _all_ pagenumbers where an acronym occurs
-- compilation halts instead of throwing an error if an undefined acronym is used
- add \ACF, \ACFP, \ACL and \ACLP that will print all words of the long form
capitalized \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/acro/acro0.def b/Master/texmf-dist/tex/latex/acro/acro0.def
index 673a6d2a164..ddca2627df6 100644
--- a/Master/texmf-dist/tex/latex/acro/acro0.def
+++ b/Master/texmf-dist/tex/latex/acro/acro0.def
@@ -72,6 +72,7 @@
{ \prop_put:Nnn \l__acro_class_prop { #2 } { #8 } }
\IfNoValueF { #9 }
{ \prop_put:Nnn \l__acro_extra_prop { #2 } { #9 } }
+ \bool_new:c { g__acro_#2_first_use_bool }
\bool_new:c { g__acro_#2_used_bool }
\bool_new:c { g__acro_#2_label_bool }
\bool_if:NT \l__acro_create_macros_bool
diff --git a/Master/texmf-dist/tex/latex/acro/acro1.def b/Master/texmf-dist/tex/latex/acro/acro1.def
index f585cadbf5d..bbb7d992daf 100644
--- a/Master/texmf-dist/tex/latex/acro/acro1.def
+++ b/Master/texmf-dist/tex/latex/acro/acro1.def
@@ -94,6 +94,10 @@
\prop_put:Nnx \l__acro_pdfstring_prop { #1 } { \exp_not:n { #2 } }
\prop_put:Nnn \l__acro_short_plural_prop
{ #1 } { \l__acro_default_plural_tl }
+ \prop_put:Nnx \l__acro_short_indefinite_prop
+ { #1 } { \l__acro_default_indefinite_tl }
+ \prop_put:Nnx \l__acro_alt_indefinite_prop
+ { #1 } { \l__acro_default_indefinite_tl }
\prop_put:Nnx \l__acro_pdfstring_plural_prop
{ #1 } { \exp_not:n { #2 } \exp_not:V \l__acro_default_plural_tl }
}
@@ -112,6 +116,8 @@
\__acro_key_check:nn { #1 } { long }
\prop_put:Nnn \l__acro_replace_plural_prop { #1 } { \c_false_bool }
\prop_put:Nnn \l__acro_long_prop { #1 } { #2 }
+ \prop_put:Nnx \l__acro_long_indefinite_prop
+ { #1 } { \l__acro_default_indefinite_tl }
\bool_if:cF { l__acro_#1_long-plural_set_bool }
{
\prop_put:Nnn \l__acro_long_plural_prop
@@ -138,6 +144,22 @@
}
\cs_generate_variant:Nn \__acro_declare_long_plural_form:nn { V }
+% short indefinite article:
+\cs_new:Npn \__acro_declare_short_indefinite:nn #1#2
+ {
+ \__acro_key_check:nn { #1 } { short-indefinite }
+ \prop_put:Nnn \l__acro_short_indefinite_prop { #1 } { #2 }
+ }
+\cs_generate_variant:Nn \__acro_declare_short_indefinite:nn { V }
+
+% long indefinite article:
+\cs_new:Npn \__acro_declare_long_indefinite:nn #1#2
+ {
+ \__acro_key_check:nn { #1 } { long-indefinite }
+ \prop_put:Nnn \l__acro_long_indefinite_prop { #1 } { #2 }
+ }
+\cs_generate_variant:Nn \__acro_declare_long_indefinite:nn { V }
+
% pre long:
\cs_new:Npn \__acro_declare_long_pre:nn #1#2
{
@@ -169,9 +191,19 @@
{
\__acro_key_check:nn { #1 } { alt }
\prop_put:Nnn \l__acro_alt_prop { #1 } { #2 }
+ \prop_put:Nnx \l__acro_alt_indefinite_prop
+ { #1 } { \l__acro_default_indefinite_tl }
}
\cs_generate_variant:Nn \__acro_declare_alt:nn { V }
+% alt. indefinite article:
+\cs_new:Npn \__acro_declare_alt_indefinite:nn #1#2
+ {
+ \__acro_key_check:nn { #1 } { alt-indefinite }
+ \prop_put:Nnn \l__acro_alt_indefinite_prop { #1 } { #2 }
+ }
+\cs_generate_variant:Nn \__acro_declare_alt_indefinite:nn { V }
+
% format:
\cs_new:Npn \__acro_declare_format:nn #1#2
{
@@ -180,7 +212,7 @@
}
\cs_generate_variant:Nn \__acro_declare_format:nn { V }
-% format:
+% long format:
\cs_new:Npn \__acro_declare_long_format:nn #1#2
{
\__acro_key_check:nn { #1 } { long-format }
@@ -188,6 +220,14 @@
}
\cs_generate_variant:Nn \__acro_declare_long_format:nn { V }
+% first long format:
+\cs_new:Npn \__acro_declare_first_long_format:nn #1#2
+ {
+ \__acro_key_check:nn { #1 } { first-long-format }
+ \prop_put:Nnn \l__acro_first_long_format_prop { #1 } { #2 }
+ }
+\cs_generate_variant:Nn \__acro_declare_first_long_format:nn { V }
+
% pdfstring:
\cs_new:Npn \__acro_declare_pdfstring:nw #1#2/#3/#4 \acro_stop:
{
@@ -310,6 +350,12 @@
\__acro_declare_long_plural:Vn \l__acro_current_key_tl { #1 } ,
long-plural-form .code:n =
\__acro_declare_long_plural_form:Vn \l__acro_current_key_tl { #1 } ,
+ short-indefinite .code:n =
+ \__acro_declare_short_indefinite:Vn \l__acro_current_key_tl { #1 } ,
+ alt-indefinite .code:n =
+ \__acro_declare_alt_indefinite:Vn \l__acro_current_key_tl { #1 } ,
+ long-indefinite .code:n =
+ \__acro_declare_long_indefinite:Vn \l__acro_current_key_tl { #1 } ,
long-pre .code:n =
\__acro_declare_long_pre:Vn \l__acro_current_key_tl { #1 } ,
long-post .code:n =
@@ -324,6 +370,8 @@
\__acro_declare_format:Vn \l__acro_current_key_tl { #1 } ,
long-format .code:n =
\__acro_declare_long_format:Vn \l__acro_current_key_tl { #1 } ,
+ first-long-format .code:n =
+ \__acro_declare_first_long_format:Vn \l__acro_current_key_tl { #1 } ,
class .code:n =
\__acro_declare_class:Vn \l__acro_current_key_tl { #1 } ,
cite .code:n =
@@ -359,6 +407,7 @@
{
\tl_set:Nn \l__acro_current_key_tl { #1 }
\keys_set:nn { acro / declare-acronym } { #2 }
+ \bool_new:c { g__acro_#1_first_use_bool }
\bool_new:c { g__acro_#1_used_bool }
\bool_new:c { g__acro_#1_label_bool }
\acro_create_page_records:n { #1 }