From f423eb5fb9fd38e27431b39ce039b1db5b2b61f3 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 11 Jan 2020 22:11:54 +0000 Subject: acro (11jan20) git-svn-id: svn://tug.org/texlive/trunk@53368 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/acro/acro-manual.cls | 389 +++++ Master/texmf-dist/tex/latex/acro/acro.sty | 1644 ++++++++-------------- 2 files changed, 981 insertions(+), 1052 deletions(-) create mode 100644 Master/texmf-dist/tex/latex/acro/acro-manual.cls (limited to 'Master/texmf-dist/tex/latex/acro') diff --git a/Master/texmf-dist/tex/latex/acro/acro-manual.cls b/Master/texmf-dist/tex/latex/acro/acro-manual.cls new file mode 100644 index 00000000000..e65b3a635bf --- /dev/null +++ b/Master/texmf-dist/tex/latex/acro/acro-manual.cls @@ -0,0 +1,389 @@ +% -------------------------------------------------------------------------- +% the ACRO package +% +% Typeset Acronyms +% +% -------------------------------------------------------------------------- +% Clemens Niederberger +% Web: https://bitbucket.org/cgnieder/acro/ +% E-Mail: contact@mychemistry.eu +% -------------------------------------------------------------------------- +% Copyright 2011--2020 Clemens Niederberger +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Clemens Niederberger. +% -------------------------------------------------------------------------- +% The acro package consists of the files +% - acro.sty, acro.definitions.tex, acro.cfg +% - acro-manual.tex, acro-manual.pdf, acro-manual.cls +% - acro.history, README +% -------------------------------------------------------------------------- +% If you have any ideas, questions, suggestions or bugs to report, please +% feel free to contact me. +% -------------------------------------------------------------------------- +\ProvidesClass{acro-manual}[2020/01/11] + +\LoadClass[load-preamble,add-index]{cnltx-doc} +\RequirePackage{imakeidx} +\RequirePackage[utf8]{inputenc} + +\usepackage{acro} +\acsetup{ + single = true , + accsupp = true , + index = true , + use-barriers = true , + hyperref = true , + log = true +} + +\setcnltx{ + package = {acro} , + info = {Typeset Acronyms and other Abbreviations} , + authors = Clemens Niederberger , + email = contact@mychemistry.eu , + url = https://bitbucket.org/cgnieder/acro/ , + abstract = {% + \acro\ allows you to define and use abbreviations in a simple way. + Abbreviations can be divided into different classes of abbreviations. + Lists of abbreviations can be created (also of separate classes of + abbreviations) and printed wherever you want the lists to appear.\par + \acro\ provides an option \option{single} which ignores abbreviations that + are used only once in the whole document.\par + As an experimental feature \acro\ also offers the option \option{sort} which + automatically sorts the list created by \cs{printacronyms}.\par + \acro\ also has the feature of creating \emph{local} lists + } , + add-cmds = { + ac, Ac, aca, Aca, acap, Acap, acbarrier, acdot, acf, Acf, acflike, acg, + acfp, Acfp, acfplike, aciftrailing, acl, Acl, aclp, Aclp, acp, Acp, + acpsingle, Acpsingle, AcroRegisterTrailing, acs, Acs, acsingle, + Acsingle, acsp, Acsp, acspace, acreset, acresetall, acsetup, + DeclareAcroCommand, DeclareAcronym, DeclareAcroExtraStyle, + DeclareAcroFirstStyle, DeclareAcroListHeading, + DeclareAcroListStyle, DeclareAcroPageStyle, DeclarePseudoAcroCommand, + iac, Iac, iaca, Iaca, iacs, Iacs, iacl, Iacl, iacf, Iacf, iacflike, + Iacflike, + NewAcroCommand, NewPseudoAcroCommand, + printacronyms, + ProvideAcroCommand, ProvideAcroEnding, ProvidePseudoAcroCommand, + RenewAcroCommand, RenewPseudoAcroCommand + } , + add-silent-cmds = { + addcolon, DeclareInstance, babelhyphen, ExplSyntaxOff, ExplSyntaxOn, nato, + NewDocumentCommand, newlist, ny, setlist + } , + index-setup = { level = \section , headers={\indexname}{\indexname} } +} + +\colorlet{property}{blue} +\newidxcmd\property{\code{\textcolor{property}{#1}}}[ (property)] +\newrobustcmd*\prop{\@ifstar{\cnltx@prop@star}{\cnltx@prop@nostar}} + +\newrobustcmd*\cnltx@prop@star{% + \cnltx@ifdash + {\cnltx@prop@aux*\meta} + {\cnltx@prop@aux*\marg}% +} +\newrobustcmd*\cnltx@prop@nostar{% + \cnltx@ifdash + {\cnltx@prop@aux{}\meta} + {\cnltx@prop@aux{}\marg}% +} +\newcommand*\cnltx@prop@aux[4]{% + \code{\property#1{#3}\cnltx@isvalue#2{#4}}% +} + +\newrobustcmd*\propis{% + \@ifstar + {\cnltx@propis*} + {\cnltx@propis{}}% +} +\newrobustcmd*\cnltx@propis[1]{% + \cnltx@ifdash + {\cnltx@prop@aux{#1}\@firstofone} + {\cnltx@prop@aux{#1}\Marg}% +} +\newrobustcmd*\choiceprop{% + \@ifstar + {\cnltx@choiceprop@star} + {\cnltx@choiceprop@nostar}% +} +\def\cnltx@choiceprop@star#1#2{% + \code{\property*{#1}\cnltx@isvalue\choices{#2}}} +\def\cnltx@choiceprop@nostar#1#2{% + \code{\property{#1}\cnltx@isvalue\choices{#2}}} +\newcommand*\boolprop{% + \@ifstar + {\cnltx@boolprop@star} + {\cnltx@boolprop@nostar}% +} +\def\cnltx@boolprop@star#1{\choiceprop*{#1}{\default{true},false}} +\def\cnltx@boolprop@nostar#1{\choiceprop{#1}{\default{true},false}} + +\newenvironment{properties} + {% + \def\propert{\@cnltx@option@item\property}% + \def\propval{\@cnltx@option@item\prop}% + \def\proplit{\@cnltx@option@item\propis}% + \def\propchoice{\@cnltx@option@item\choiceprop}% + \def\propbool{\@cnltx@option@item\boolprop}% + \cnltxlist + } + {\endcnltxlist} + +\protected\def\@versionstar{\raisebox{-.25em}{*}} +\newcommand\versionstar{\texorpdfstring{\@versionstar}{*}} + +\newcommand*\TF{\textcolor{red}{\uline{\code{\textcolor{cs}{\textit{TF}}}}}} + +\RequirePackage{fontawesome} +\RequirePackage{datetime2} +\DTMsetup{useregional=numeric,datesep=/} +\newrobustcmd*\acro@add@version[2]{% + \csdef{ac@ver@#2}{% + \DTMdate{#1}% + \csgdef{ac@ver@#2used}{}% + \csdef{ac@ver@#2}{\DTMdate{#1}}% + }% +} + +\newrobustcmd*\ac@date[1]{\ifcsdef{ac@ver@#1used}{}{ (\csuse{ac@ver@#1})}} +\newrobustcmd*\ac@ifnew[1]{\ifcsstring{c_acro_version_tl}{#1}} +\newrobustcmd*\ac@NEW{\faStarO\ New} + +\renewrobustcmd*\sinceversion[1]{% + \ac@ifnew{#1}% + {\cnltx@version@note{\textcolor{red}{\ac@NEW}}}% + {\cnltx@version@note{\GetTranslation{cnltx-introduced}~#1\ac@date{#1}}}% +} +\renewrobustcmd*\changedversion[1]{% + \cnltx@version@note{\GetTranslation{cnltx-changed}~#1\ac@date{#1}}% +} + +\newnote*\sincechanged[2]{% + \GetTranslation{cnltx-introduced}~#1\ac@date{#1}, + changed with version~#2\ac@date{#2}\ac@ifnew{#2}{ \ac@NEW}{}% +} + +\RenewDocumentEnvironment{commands}{} + {% + \cnltx@set@catcode_{12}% + \let\command\cnltx@command + \cnltxlist + } + {\endcnltxlist} + +\RequirePackage{tcolorbox,xsimverb} +\tcbuselibrary{skins,breakable} +\tcbset{enhanced,enhanced jigsaw} + +\newtcolorbox{bewareofthedog}{ + colback = white , + colframe = red , + underlay={% + \path[draw=none] + (interior.south west) + rectangle node[red]{\Huge\bfseries !} + ([xshift=-4mm]interior.north west); + }% +} + +\newtcolorbox{cnltxcode}[1][]{ + boxrule = 1pt , + colback = cnltxbg , + colframe = cnltx , + arc = 5pt , + beforeafter skip = .5\baselineskip ,% + #1% +} + +\newcommand*\acroman@readoptions[1]{% + \catcode`\^^M=13 + \acroman@read@options{#1}% +} + +\begingroup +\catcode`\^^M=13 +\gdef\acroman@read@options#1#2^^M{% + \ifblank{#2}{}{\acroman@read@options@#2}% + #1% + \XSIMfilewritestart*{\jobname.tmp}% +}% +\endgroup +\def\acroman@read@options@[#1]{\pgfqkeys{/cnltx}{#1}} + +\RenewDocumentEnvironment{sourcecode}{} + {% + \begingroup + \acroman@readoptions{% + \endgroup + \setlength\cnltx@sidebysidewidth + {\dimexpr .45\columnwidth -\lst@xleftmargin -\lst@xrightmargin\relax}% + \expanded{% + \noexpand\lstset{ + style=cnltx, + \ifboolexpe{ bool {cnltx@sidebyside} and not bool {cnltx@codeonly} } + {linewidth=\cnltx@sidebysidewidth,}{}% + \expandonce\cnltx@local@listings@options + }% + }% + \XSIMgobblechars{2}% + }% + } + {% + \XSIMfilewritestop + \cnltxcode[breakable]% + \lstinputlisting[style=cnltx]{\jobname.tmp}% + \endcnltxcode + } + +\RenewDocumentEnvironment{example}{} + {% + \begingroup + \acroman@readoptions{% + \endgroup + \setlength\cnltx@sidebysidewidth + {\dimexpr .45\columnwidth -\lst@xleftmargin -\lst@xrightmargin\relax}% + \expanded{% + \noexpand\lstset{ + style=cnltx, + \ifboolexpe{ bool {cnltx@sidebyside} and not bool {cnltx@codeonly} } + {linewidth=\cnltx@sidebysidewidth,}{}% + \expandonce\cnltx@local@listings@options + }% + }% + \XSIMgobblechars{2}% + }% + } + {% + \XSIMfilewritestop + \ifbool{cnltx@sidebyside} + {% + \cnltxcode + \noindent + \minipage[c]{\cnltx@sidebysidewidth}% + \cnltx@pre@source@hook + \lstinputlisting[style=cnltx] {\jobname.tmp}% + \cnltx@after@source@hook + \endminipage\hfill + \minipage[c]{\cnltx@sidebysidewidth}% + \cnltx@pre@example@hook + \input {\jobname.tmp}% + \cnltx@after@example@hook + \endminipage + } + {% + \cnltxcode[breakable]% + \cnltx@pre@source@hook + \lstinputlisting{\jobname.tmp}% + \cnltx@after@source@hook + \tcblower + \cnltx@pre@example@hook + \input {\jobname.tmp}% + \cnltx@after@example@hook + }% + \endcnltxcode + } + +\RequirePackage[ + backend=biber, + style=cnltx, + sortlocale=en_US, + indexing=cite]{biblatex} +\RequirePackage{csquotes,varioref} +\defbibheading{bibliography}{\section{References}} + +\RequirePackage[biblatex]{embrac}[2012/06/29] +\ChangeEmph{[}[,.02em]{]}[.055em,-.08em] +\ChangeEmph{(}[-.01em,.04em]{)}[.04em,-.05em] + +% additional packages: +\RequirePackage{longtable,array,booktabs,enumitem,amssymb} + +\newcommand*\h[1]{\textcolor{cnltx}{\textbf{#1}}} +\newcommand*\mailto[1]{\texttt{\href{mailto:#1}{#1}}} + +\ProvideAcroEnding {possessive} {'s} {'s} + +\acro@add@version{2012-06-22}{0.1} +\acro@add@version{2012-06-23}{0.1a} +\acro@add@version{2012-06-24}{0.1b} +\acro@add@version{2012-06-24}{0.1c} +\acro@add@version{2012-06-24}{0.2} +\acro@add@version{2012-06-25}{0.2a} +\acro@add@version{2012-06-25}{0.3} +\acro@add@version{2012-06-27}{0.3a} +\acro@add@version{2012-06-29}{0.3b} +\acro@add@version{2012-07-16}{0.3c} +\acro@add@version{2012-07-23}{0.3d} +\acro@add@version{2012-07-24}{0.3e} +\acro@add@version{2012-09-28}{0.4} +\acro@add@version{2012-10-07}{0.4a} +\acro@add@version{2012-11-30}{0.5} +\acro@add@version{2012-12-14}{0.6} +\acro@add@version{2013-01-02}{0.6a} +\acro@add@version{2013-01-16}{1.0} +\acro@add@version{2013-01-26}{1.1} +\acro@add@version{2013-01-29}{1.1a} +\acro@add@version{2013-02-09}{1.2} +\acro@add@version{2013-04-04}{1.2a} +\acro@add@version{2013-05-06}{1.3} +\acro@add@version{2013-05-09}{1.3a} +\acro@add@version{2013-05-30}{1.3b} +\acro@add@version{2013-06-16}{1.3c} +\acro@add@version{2013-07-08}{1.3d} +\acro@add@version{2013-08-07}{1.3e} +\acro@add@version{2013-08-27}{1.4} +\acro@add@version{2013-09-02}{1.4a} +\acro@add@version{2013-09-24}{1.4b} +\acro@add@version{2013-11-04}{1.4c} +\acro@add@version{2013-11-22}{1.4d} +\acro@add@version{2013-12-18}{1.5} +\acro@add@version{2015-02-26}{1.6} +\acro@add@version{2015-04-08}{1.6a} +\acro@add@version{2015-05-10}{1.6b} +\acro@add@version{2015-08-16}{2.0} +\acro@add@version{2015-08-25}{2.0a} +\acro@add@version{2015-08-29}{2.0b} +\acro@add@version{2015-09-05}{2.1} +\acro@add@version{2015-10-03}{2.2} +\acro@add@version{2016-01-07}{2.2a} +\acro@add@version{2016-01-21}{2.2b} +\acro@add@version{2016-02-02}{2.2c} +\acro@add@version{2016-03-14}{2.3} +\acro@add@version{2016-03-25}{2.4} +\acro@add@version{2016-04-14}{2.4a} +\acro@add@version{2016-05-03}{2.4b} +\acro@add@version{2016-05-25}{2.5} +\acro@add@version{2016-05-26}{2.5a} +\acro@add@version{2016-05-30}{2.5b} +\acro@add@version{2016-07-20}{2.6} +\acro@add@version{2016-08-13}{2.6a} +\acro@add@version{2016-08-13}{2.6b} +\acro@add@version{2016-08-16}{2.6c} +\acro@add@version{2016-08-30}{2.6d} +\acro@add@version{2016-09-04}{2.6e} +\acro@add@version{2017-01-22}{2.7} +\acro@add@version{2017-02-09}{2.7a} +\acro@add@version{2017-06-21}{2.7b} +\acro@add@version{2017-08-28}{2.7c} +\acro@add@version{2018-01-30}{2.8} +\acro@add@version{2019-02-17}{2.9} +\acro@add@version{2019-09-23}{2.10} +\acro@add@version{2019-10-02}{2.10a} +\acro@add@version{2019-10-06}{2.10b} +\acro@add@version{2019-10-12}{2.10c} +\acro@add@version{2019-12-30}{2.10d} +\acro@add@version{2020-01-11}{2.11} + +\endinput diff --git a/Master/texmf-dist/tex/latex/acro/acro.sty b/Master/texmf-dist/tex/latex/acro/acro.sty index 03d0121d5f2..98425268c15 100644 --- a/Master/texmf-dist/tex/latex/acro/acro.sty +++ b/Master/texmf-dist/tex/latex/acro/acro.sty @@ -8,7 +8,7 @@ % Web: https://bitbucket.org/cgnieder/acro/ % E-Mail: contact@mychemistry.eu % -------------------------------------------------------------------------- -% Copyright 2011--2019 Clemens Niederberger +% Copyright 2011--2020 Clemens Niederberger % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 @@ -23,17 +23,39 @@ % The Current Maintainer of this work is Clemens Niederberger. % -------------------------------------------------------------------------- % The acro package consists of the files -% - acro.sty, acro_en.tex, acro_en.pdf, acro.history, README +% - acro.sty, acro.definitions.tex, acro.cfg +% - acro-manual.tex, acro-manual.pdf, acro-manual.cls +% - acro.history, README % -------------------------------------------------------------------------- % If you have any ideas, questions, suggestions or bugs to report, please % feel free to contact me. % -------------------------------------------------------------------------- -\RequirePackage{expl3,xparse,l3keys2e,xtemplate,etoolbox} +\RequirePackage{expl3,xparse,xtemplate,l3keys2e} +\RequirePackage{etoolbox} % for the document hooks + +\ExplSyntaxOn + +\tl_const:Nn \c_acro_date_tl {2020/01/11} +\tl_const:Nn \c_acro_version_major_number_tl {2} +\tl_const:Nn \c_acro_version_minor_number_tl {11} +\tl_const:Nn \c_acro_version_subrelease_tl {} +\tl_const:Nx \c_acro_version_number_tl + { + \c_acro_version_major_number_tl . + \c_acro_version_minor_number_tl + } +\tl_const:Nx \c_acro_version_tl + { + \c_acro_version_number_tl + \c_acro_version_subrelease_tl + } +\tl_const:Nn \c_acro_info_tl {Typeset~ Acronyms} + \ProvidesExplPackage {acro} - {2019/12/30} - {2.10d} - {Typeset Acronyms} + {\c_acro_date_tl} + {\c_acro_version_tl} + {\c_acro_info_tl} % -------------------------------------------------------------------------- % warning and error messages: @@ -107,6 +129,195 @@ package!~ Please~ check~ your~ installation. } +% -------------------------------------------------------------------------- +% temporary variables +\tl_new:N \l__acro_tmpa_tl +\tl_new:N \l__acro_tmpb_tl +\tl_new:N \l__acro_tmpc_tl +\prop_new:N \l__acro_tmpa_prop +\prop_new:N \l__acro_tmpb_prop +\seq_new:N \l__acro_tmpa_seq +\seq_new:N \l__acro_tmpb_seq +\int_new:N \l__acro_tmpa_int +\int_new:N \l__acro_tmpb_int +\int_new:N \l__acro_tmpc_int +\int_new:N \l__acro_tmpd_int + +% -------------------------------------------------------------------------- +% variants of kernel commands +\cs_generate_variant:Nn \quark_if_no_value:nTF {V} +\cs_generate_variant:Nn \tl_put_right:Nn {NV,Nv} +\cs_generate_variant:Nn \tl_if_eq:nnT {V} +\cs_generate_variant:Nn \tl_if_eq:nnF {V} +\cs_generate_variant:Nn \seq_use:Nnnn {c} +\cs_generate_variant:Nn \seq_gset_split:Nnn {c} +\cs_generate_variant:Nn \seq_set_split:Nnn {NnV} +\cs_generate_variant:Nn \seq_if_in:NnT {NV} +\cs_generate_variant:Nn \seq_if_in:NnTF {Ne} +\cs_generate_variant:Nn \prop_put:Nnn {NnV,cnx,cnv} +\cs_generate_variant:Nn \prop_get:NnNTF {cnc} +\cs_generate_variant:Nn \prop_get:NnNF {cn,cnc} +\cs_generate_variant:Nn \prop_get:NnN {cnc} +\cs_generate_variant:Nn \cs_generate_variant:Nn {c} +\cs_generate_variant:Nn \str_case:nn {V} + +% -------------------------------------------------------------------------- +% variables: +\bool_new:N \l__acro_acc_supp_bool +\bool_new:N \l__acro_addto_index_bool +\bool_new:N \l__acro_capitalize_list_bool +\bool_new:N \g__acro_case_sensitive_bool +\bool_new:N \l__acro_citation_all_bool +\bool_new:N \l__acro_citation_first_bool +\bool_set_true:N \l__acro_citation_first_bool +\bool_new:N \l__acro_create_macros_bool +\bool_new:N \l__acro_custom_alt_format_bool +\bool_new:N \l__acro_custom_long_format_bool +\bool_new:N \l__acro_custom_short_format_bool +\bool_new:N \l__acro_extra_punct_bool +\bool_new:N \l__acro_extra_use_brackets_bool +\bool_new:N \g__acro_first_acronym_declared_bool +\bool_new:N \l__acro_first_instance_bool +\bool_new:N \l__acro_first_only_short_bool +\bool_new:N \l__acro_first_only_long_bool +\bool_new:N \l__acro_first_reversed_bool +\bool_new:N \l__acro_first_switched_bool +\bool_new:N \l__acro_first_use_brackets_bool +\bool_new:N \l__acro_first_upper_bool +\bool_new:N \l__acro_following_page_bool +\bool_new:N \l__acro_following_pages_bool +\bool_new:N \l__acro_foreign_bool +\bool_set_true:N \l__acro_foreign_bool +\bool_new:N \l__acro_group_citation_bool +\bool_new:N \l__acro_hyperref_loaded_bool +\bool_new:N \l__acro_hyperref_use_bool +\bool_new:N \l__acro_include_endings_format_bool +\bool_new:N \l__acro_indefinite_bool +\bool_new:N \l__acro_in_list_bool +\bool_new:N \l__acro_is_included_bool +\bool_new:N \l__acro_is_excluded_bool +\bool_new:N \l__acro_list_all_pages_bool +\bool_set_true:N \l__acro_list_all_pages_bool +\bool_new:N \l__acro_list_reverse_long_extra_bool +\bool_new:N \l__acro_log_acronyms_bool +\bool_new:N \l__acro_log_acronyms_verbose_bool +\bool_new:N \l__acro_mark_as_used_bool +\bool_new:N \g__acro_mark_first_as_used_bool +\bool_new:N \l__acro_override_list_format_bool +\bool_new:N \l__acro_page_brackets_bool +\bool_new:N \l__acro_page_display_bool +\bool_new:N \l__acro_page_punct_bool +\bool_new:N \l__acro_place_label_bool +\bool_new:N \l__acro_print_only_used_bool +\bool_set_true:N \l__acro_print_only_used_bool +\bool_new:N \g__acro_rerun_bool +\bool_new:N \g__acro_reset_at_barrier_bool +\bool_new:N \l__acro_silence_bool +\bool_new:N \l__acro_single_use_bool +\bool_new:N \l__acro_sort_bool +\bool_set_true:N \l__acro_sort_bool +\bool_new:N \l__acro_strict_bool +\bool_new:N \l__acro_trailing_tokens_bool +\bool_new:N \l__acro_tooltip_bool +\bool_new:N \l__acro_tooltip_inside_bool +\bool_new:N \l__acro_upper_indefinite_bool +\bool_new:N \l__acro_upper_short_bool +\bool_new:N \l__acro_use_acronyms_bool +\bool_set_true:N \l__acro_use_acronyms_bool +\bool_new:N \l__acro_use_barrier_bool +\bool_new:N \g__acro_use_barriers_bool +\bool_new:N \l__acro_use_ending_form_bool +\bool_new:N \l__acro_use_note_bool +\bool_new:N \l__acro_xspace_bool + +\str_new:N \l__acro_current_id_str + +\tl_new:N \l__acro_list_entries_tl +\tl_new:N \l__acro_endings_tl +\tl_new:N \l__acro_trailing_tokens_tl +\tl_new:N \l__acro_included_classes_tl +\tl_new:N \l__acro_excluded_classes_tl +\tl_new:N \l__acro_ignore_tl +\tl_new:N \l__acro_default_indefinite_tl +\tl_set:Nn \l__acro_default_indefinite_tl {a} +\tl_new:N \l__acro_foreign_sep_tl +\tl_new:N \l__acro_extra_instance_tl +\tl_set:Nn \l__acro_extra_instance_tl {default} +\tl_new:N \l__acro_page_instance_tl +\tl_set:Nn \l__acro_page_instance_tl {none} +\tl_new:N \l__acro_page_name_tl +\tl_new:N \l__acro_pages_name_tl +\tl_new:N \l__acro_next_page_tl +\tl_new:N \l__acro_next_pages_tl +\tl_new:N \l__acro_list_instance_tl +\tl_set:Nn \l__acro_list_instance_tl {description} +\tl_new:N \l__acro_list_type_tl +\tl_new:N \l__acro_list_heading_cmd_tl +\tl_set:Nn \l__acro_list_heading_cmd_tl {section*} +\tl_new:N \l__acro_list_name_tl +\tl_new:N \l__acro_list_before_tl +\tl_new:N \l__acro_list_after_tl +\tl_new:N \l__acro_custom_short_format_tl +\tl_new:N \l__acro_first_between_tl +\tl_new:N \l__acro_citation_connect_tl +\tl_new:N \l__acro_between_group_connect_citation_tl +\tl_new:N \l__acro_extra_brackets_tl +\tl_new:N \l__acro_extra_punct_tl +\tl_new:N \l__acro_first_brackets_tl +\tl_new:N \l__acro_page_punct_tl +\tl_new:N \l__acro_page_brackets_tl +\tl_new:N \l__acro_last_page_tl +\tl_new:N \l__acro_current_page_tl +\tl_new:N \l__acro_list_table_tl +\tl_new:N \l__acro_list_table_spec_tl +\tl_new:N \l__acro_acc_supp_tl +\tl_new:N \l__acro_acc_supp_options_tl +\tl_new:N \l__acro_label_prefix_tl +\tl_set:Nn \l__acro_label_prefix_tl {ac:} +\tl_new:N \l__acro_index_short_tl +\tl_new:N \l__acro_first_instance_tl +\tl_set:Nn \l__acro_first_instance_tl {default} +\tl_new:N \l__acro_short_tl +\tl_new:N \l__acro_short_format_tl +\tl_new:N \l__acro_list_short_format_tl +\tl_new:N \l__acro_alt_tl +\tl_new:N \l__acro_alt_format_tl +\tl_new:N \l__acro_long_tl +\tl_new:N \l__acro_long_format_tl +\tl_new:N \l__acro_list_long_format_tl +\tl_new:N \l__acro_single_form_tl +\tl_set:Nn \l__acro_single_form_tl {long} +\tl_new:N \l__acro_extra_format_tl +\tl_new:N \l__acro_foreign_format_tl +\tl_new:N \l__acro_foreign_list_format_tl +\tl_set:Nn \l__acro_foreign_list_format_tl { \acroenparen } +\tl_new:N \l__acro_index_format_tl + +\skip_new:N \l__acro_page_space_skip + +\dim_new:N \l__acro_short_width_dim +\dim_set:Nn \l__acro_short_width_dim {3em} + +\int_new:N \g__acro_barrier_int + +\seq_new:N \l__acro_endings_seq +\seq_new:N \l__acro_actions_seq +\seq_new:N \g__acro_declared_acronyms_seq + +\prop_new:N \l__acro_citation_prop +\prop_new:N \l__acro_citation_pre_prop +\prop_new:N \l__acro_citation_post_prop +\prop_new:N \l__acro_pdfstring_alt_prop +\prop_new:N \l__acro_pdfstring_short_prop +\prop_new:N \g__acro_properties_prop +\prop_new:N \l__acro_trailing_tokens_prop +\prop_new:N \l__acro_trailing_actions_prop +\prop_new:N \l__acro_list_styles_prop +\prop_new:N \l__acro_list_headings_prop +\prop_new:N \l__acro_first_styles_prop +\prop_new:N \l__acro_extra_styles_prop +\prop_new:N \l__acro_page_styles_prop + % -------------------------------------------------------------------------- % logging: \prg_new_conditional:Npnn \acro_if_log: {p,T,F,TF} @@ -116,9 +327,6 @@ { \prg_return_false: } } -\bool_new:N \l__acro_log_acronyms_bool -\bool_new:N \l__acro_log_acronyms_verbose_bool - \keys_define:nn {acro} { log .choice: , @@ -138,7 +346,7 @@ \cs_new:Npn \__acro_write_log:nn #1#2 { \ \ \ #1 ~ = ~ {#2} } \cs_new:Npn \__acro_write_log_property:nnn #1#2#3 - { \__acro_write_log:nn {#2} { \__acro_get_property:nn {#3} {#1} } } + { \__acro_write_log:nn {#2} { \__acro_property_get:nn {#3} {#1} } } \cs_new:Npn \__acro_ending_log_entry:nn #1#2 { @@ -159,10 +367,10 @@ | ~ \msg_info_text:n {acro}~ --~ defining~ new~ acronym: \\ | \__acro_write_log:nn {ID} {#1} \\ | \__acro_write_log_property:nnn {#1} {short} {short} \\ - | \__acro_write_log_property:nnn {#1}{long} {long} \\ - | \__acro_write_log_property:nnn {#1}{alt} {alt} \\ - | \__acro_write_log_property:nnn {#1}{sort} {sort} \\ - | \__acro_write_log_property:nnn {#1}{class} {class} \\ + | \__acro_write_log_property:nnn {#1} {long} {long} \\ + | \__acro_write_log_property:nnn {#1} {alt} {alt} \\ + | \__acro_write_log_property:nnn {#1} {sort} {sort} \\ + | \__acro_write_log_property:nnn {#1} {class} {class} \\ | \__acro_write_log_property:nnn {#1} {list} {list} \\ | \__acro_write_log_property:nnn {#1} {extra} {extra} \\ | \__acro_write_log_property:nnn {#1} {foreign} {foreign} \\ @@ -183,6 +391,8 @@ | \__acro_write_log_property:nnn {#1} {foreign-lang} {foreign_lang} \\ | \\ | \__acro_write_log_property:nnn {#1} {cite} {citation} \\ + | \__acro_write_log_property:nnn {#1} {before-citation} {before_citation} \\ + | \__acro_write_log_property:nnn {#1} {after-citation} {after_citation} \\ | \__acro_write_log_property:nnn {#1} {index} {index} \\ | \__acro_write_log_property:nnn {#1} {index-sort} {index_sort} \\ | \\ @@ -207,7 +417,6 @@ | \__acro_write_log_property:nnn {#1} {list} {list} \\ | \__acro_write_log_property:nnn {#1} {extra} {extra} \\ | \__acro_write_log_property:nnn {#1} {foreign} {foreign} \\ - | \__acro_write_log_property:nnn {#1} {pdfstring} {pdfstring} \\ | \__acro_write_log_property:nnn {#1} {cite} {citation} \\ ================================================= } @@ -273,172 +482,6 @@ } } -% -------------------------------------------------------------------------- -% temporary variables -\tl_new:N \l__acro_tmpa_tl -\tl_new:N \l__acro_tmpb_tl -\tl_new:N \l__acro_tmpc_tl -\prop_new:N \l__acro_tmpa_prop -\prop_new:N \l__acro_tmpb_prop -\seq_new:N \l__acro_tmpa_seq -\seq_new:N \l__acro_tmpb_seq -\int_new:N \l__acro_tmpa_int -\int_new:N \l__acro_tmpb_int -\int_new:N \l__acro_tmpc_int -\int_new:N \l__acro_tmpd_int - -% -------------------------------------------------------------------------- -% variants of kernel commands -\cs_generate_variant:Nn \quark_if_no_value:nTF { V } -\cs_generate_variant:Nn \tl_put_right:Nn { NV, Nv } -\cs_generate_variant:Nn \tl_if_eq:nnT { V } -\cs_generate_variant:Nn \tl_if_eq:nnF { V } -\cs_generate_variant:Nn \seq_use:Nnnn { c } -\cs_generate_variant:Nn \seq_gset_split:Nnn { c } -\cs_generate_variant:Nn \seq_set_split:Nnn { NnV } -\cs_generate_variant:Nn \seq_if_in:NnT { NV } -\cs_generate_variant:Nn \prop_put:Nnn { NnV, cnx, cnv } -\cs_generate_variant:Nn \prop_get:NnNTF { cnc } -\cs_generate_variant:Nn \prop_get:NnNF { cn, cnc } -\cs_generate_variant:Nn \prop_get:NnN { cnc } -\cs_generate_variant:Nn \cs_generate_variant:Nn { c } -\cs_generate_variant:Nn \str_case:nn { V } - -% -------------------------------------------------------------------------- -% variables: -\bool_new:N \l__acro_silence_bool -\bool_new:N \l__acro_mark_as_used_bool -\bool_new:N \g__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 -\bool_new:N \l__acro_hyperref_loaded_bool -\bool_new:N \l__acro_use_hyperref_bool -\bool_new:N \l__acro_xspace_bool -\bool_new:N \l__acro_custom_short_format_bool -\bool_new:N \l__acro_custom_alt_format_bool -\bool_new:N \l__acro_custom_long_format_bool -\bool_new:N \l__acro_override_list_format_bool -\bool_new:N \l__acro_strict_bool -\bool_new:N \l__acro_create_macros_bool -\bool_new:N \l__acro_first_upper_bool -\bool_new:N \l__acro_upper_short_bool -\bool_new:N \l__acro_indefinite_bool -\bool_new:N \l__acro_upper_indefinite_bool -\bool_new:N \l__acro_foreign_bool -\bool_set_true:N \l__acro_foreign_bool -\bool_new:N \l__acro_sort_bool -\bool_set_true:N \l__acro_sort_bool -\bool_new:N \l__acro_capitalize_list_bool -\bool_new:N \l__acro_citation_all_bool -\bool_new:N \l__acro_citation_first_bool -\bool_set_true:N \l__acro_citation_first_bool -\bool_new:N \l__acro_group_citation_bool -\bool_new:N \l__acro_acc_supp_bool -\bool_new:N \l__acro_tooltip_bool -\bool_new:N \l__acro_inside_tooltip_bool -\bool_new:N \l__acro_following_page_bool -\bool_new:N \l__acro_following_pages_bool -\bool_new:N \l__acro_addto_index_bool -\bool_new:N \l__acro_is_excluded_bool -\bool_new:N \l__acro_is_included_bool -\bool_new:N \l__acro_page_punct_bool -\bool_new:N \l__acro_page_brackets_bool -\bool_new:N \l__acro_page_display_bool -\bool_new:N \l__acro_new_page_numbering_bool -\bool_new:N \l__acro_first_use_brackets_bool -\bool_new:N \l__acro_first_only_short_bool -\bool_new:N \l__acro_first_only_long_bool -\bool_new:N \l__acro_first_reversed_bool -\bool_new:N \l__acro_first_switched_bool -\bool_new:N \l__acro_use_note_bool -\bool_new:N \l__acro_extra_punct_bool -\bool_new:N \l__acro_extra_use_brackets_bool -\bool_new:N \l__acro_in_list_bool -\bool_new:N \l__acro_place_label_bool -\bool_new:N \l__acro_list_all_pages_bool -\bool_set_true:N \l__acro_list_all_pages_bool -\bool_new:N \g__acro_first_acronym_declared_bool -\bool_new:N \l__acro_include_endings_format_bool -\bool_new:N \l__acro_list_reverse_long_extra_bool -\bool_new:N \l__acro_use_acronyms_bool -\bool_set_true:N \l__acro_use_acronyms_bool - -\tl_new:N \l__acro_ignore_tl -\tl_new:N \l__acro_default_indefinite_tl -\tl_set:Nn \l__acro_default_indefinite_tl {a} -\tl_new:N \l__acro_foreign_sep_tl -\tl_new:N \l__acro_extra_instance_tl -\tl_set:Nn \l__acro_extra_instance_tl {default} -\tl_new:N \l__acro_page_instance_tl -\tl_set:Nn \l__acro_page_instance_tl {none} -\tl_new:N \l__acro_page_name_tl -\tl_new:N \l__acro_pages_name_tl -\tl_new:N \l__acro_next_page_tl -\tl_new:N \l__acro_next_pages_tl -\tl_new:N \l__acro_list_instance_tl -\tl_set:Nn \l__acro_list_instance_tl {description} -\tl_new:N \l__acro_list_type_tl -% \tl_new:N \l__acro_list_tl -\tl_new:N \l__acro_list_heading_cmd_tl -\tl_set:Nn \l__acro_list_heading_cmd_tl {section*} -\tl_new:N \l__acro_list_name_tl -\tl_new:N \l__acro_list_before_tl -\tl_new:N \l__acro_list_after_tl -\tl_new:N \l__acro_custom_short_format_tl -\tl_new:N \l__acro_first_between_tl -\tl_new:N \l__acro_citation_connect_tl -\tl_new:N \l__acro_between_group_connect_citation_tl -\tl_new:N \l__acro_extra_brackets_tl -\tl_new:N \l__acro_extra_punct_tl -\tl_new:N \l__acro_first_brackets_tl -\tl_new:N \l__acro_page_punct_tl -\tl_new:N \l__acro_page_brackets_tl -\tl_new:N \l__acro_last_page_tl -\tl_new:N \l__acro_current_page_tl -\tl_new:N \l__acro_list_table_tl -\tl_new:N \l__acro_list_table_spec_tl -\tl_new:N \l__acro_acc_supp_tl -\tl_new:N \l__acro_acc_supp_options_tl -\tl_new:N \l__acro_label_prefix_tl -\tl_set:Nn \l__acro_label_prefix_tl { ac: } -\tl_new:N \l__acro_index_short_tl -\tl_new:N \l__acro_first_instance_tl -\tl_set:Nn \l__acro_first_instance_tl {default} - -\tl_new:N \l__acro_short_tl -\tl_new:N \l__acro_short_format_tl -\tl_new:N \l__acro_list_short_format_tl - -\tl_new:N \l__acro_alt_tl -\tl_new:N \l__acro_alt_format_tl - -\tl_new:N \l__acro_long_tl -\tl_new:N \l__acro_list_long_format_tl - -\tl_new:N \l__acro_single_form_tl -\tl_set:Nn \l__acro_single_form_tl {long} - -\tl_new:N \l__acro_extra_format_tl - -\tl_new:N \l__acro_foreign_format_tl -\tl_new:N \l__acro_foreign_list_format_tl -\tl_set:Nn \l__acro_foreign_list_format_tl { \acroenparen } - -\tl_new:N \l__acro_index_format_tl - - -\skip_new:N \l__acro_page_space_skip - -\dim_new:N \l__acro_short_width_dim -\dim_set:Nn \l__acro_short_width_dim {3em} - -\prop_new:N \l__acro_list_styles_prop -\prop_new:N \l__acro_list_headings_prop -\prop_new:N \l__acro_first_styles_prop -\prop_new:N \l__acro_extra_styles_prop -\prop_new:N \l__acro_page_styles_prop - % -------------------------------------------------------------------------- % small commands for use at various places \cs_new:Npn \acro_no_break: { \tex_penalty:D 10000 \scan_stop: } @@ -450,10 +493,13 @@ \cs_new_eq:NN \acro_first_upper_case:n \__acro_first_upper_case:n -\NewDocumentCommand \acfirstupper {m} - { \acro_first_upper_case:n {#1} } - % -------------------------------------------------------------------------- +\tl_new:N \l_acro_config_file_name_tl +\tl_new:N \l_acro_config_file_extension_tl + +\tl_set:Nn \l_acro_config_file_name_tl {acro} +\tl_set:Nn \l_acro_config_file_extension_tl {cfg} + % options: \keys_define:nn {acro} { @@ -463,6 +509,10 @@ messages / loud .code:n = \bool_set_false:N \l__acro_silence_bool , messages .value_required:n = true , + config-file-name .tl_set:N = \l_acro_config_file_name_tl , + config-file-name .initial:n = acro , + config-file-extension .tl_set:N = \l_acro_config_file_extension_tl , + config-file-extension .initial:n = cfg , accsupp .bool_set:N = \l__acro_acc_supp_bool , accsupp-options .tl_set:N = \l__acro_acc_supp_options_tl , tooltip .bool_set:N = \l__acro_tooltip_bool , @@ -472,6 +522,8 @@ xspace .bool_set:N = \l__acro_xspace_bool , % xspace .code:n = \acro_option_deprecated:nn {xspace} {} , strict .bool_set:N = \l__acro_strict_bool , + case-sensitive .bool_set:N = \g__acro_case_sensitive_bool , + case-sensitive .initial:n = true , sort .bool_set:N = \l__acro_sort_bool , short-format .code:n = \tl_set:Nn \l__acro_short_format_tl {#1} @@ -506,7 +558,7 @@ override-list-format .initial:n = true , extra-format .tl_set:N = \l__acro_extra_format_tl , extra-format .value_required:n = true , - single .bool_set:N = \l__acro_use_single_bool , + single .bool_set:N = \l__acro_single_use_bool , single-form .tl_set:N = \l__acro_single_form_tl , single-form .value_required:n = true , first-style .code:n = \acro_set_first_style:n {#1} , @@ -547,7 +599,7 @@ list-heading .value_required:n = true , list-name .tl_set:N = \l__acro_list_name_tl , list-name .value_required:n = true , - hyperref .bool_set:N = \l__acro_use_hyperref_bool , + hyperref .bool_set:N = \l__acro_hyperref_use_bool , only-used .bool_set:N = \l__acro_print_only_used_bool , mark-as-used .choice: , mark-as-used / first .code:n = @@ -603,11 +655,6 @@ { \cs_new:Npn \acro_xspace: {} } } -% -------------------------------------------------------------------------- -% setup command: -\NewDocumentCommand \acsetup { m } - { \keys_set:nn {acro} {#1} \ignorespaces } - % -------------------------------------------------------------------------- % we use xtemplate for different object types and with a different number of % arguments; let's declare functions for usage later so we don't have to @@ -633,7 +680,7 @@ \cs_new_protected:Npn \acro_first_instance:nn #1#2 { - \acro_if_property:nnTF {#1} {first-style} + \acro_property_if_set:nnTF {#1} {first-style} { \tl_set_eq:NN \l__acro_tmpa_tl @@ -663,7 +710,9 @@ \cs_new_protected:Npn \acro_activate_hyperref_support: { - \bool_if:nT { \l__acro_hyperref_loaded_bool && \l__acro_use_hyperref_bool } + \bool_lazy_and:nnT + { \l__acro_hyperref_loaded_bool } + { \l__acro_hyperref_use_bool } { \sys_if_engine_xetex:TF { @@ -680,8 +729,9 @@ % #2: text \cs_new_protected:Npn \__acro_make_link:nn #1#2 { - \bool_if:nTF - { \l__acro_use_hyperref_bool && \l__acro_hyperref_loaded_bool } + \bool_lazy_and:nnTF + { \l__acro_hyperref_use_bool } + { \l__acro_hyperref_loaded_bool } { \acro_hyper_link:nn {#1} { \phantom {#2} } \acro_if_is_single:nTF {#1} @@ -690,7 +740,6 @@ } {#2} } -\cs_generate_variant:Nn \__acro_make_link:Nnn {NnV} \cs_new:Npn \acro_color_link:n #1 { @@ -730,22 +779,18 @@ \str_case:nn {#1} { {long} { - \bool_if:nT - { - \l__acro_first_only_long_bool || - !\l__acro_first_only_short_bool - } + \bool_lazy_or:nnT + { \l__acro_first_only_long_bool } + { !\l__acro_first_only_short_bool } { \acro_write_indefinite:nn {#2} {long} \acro_write_expanded:nnn {#2} {first-long} {#3} } } {short} { - \bool_if:nT - { - !\l__acro_first_only_long_bool || - \l__acro_first_only_short_bool - } + \bool_lazy_or:nnT + { !\l__acro_first_only_long_bool } + { \l__acro_first_only_short_bool } { \acro_soft_upper: \acro_write_indefinite:nn {#2} {short} @@ -758,11 +803,9 @@ \cs_new_protected:Npn \__acro_open_bracket: { - \bool_if:nT - { - !\l__acro_first_only_long_bool && - !\l__acro_first_only_short_bool - } + \bool_lazy_and:nnT + { !\l__acro_first_only_long_bool } + { !\l__acro_first_only_short_bool } { \acro_space: \tl_if_blank:VF \l__acro_first_between_tl @@ -777,11 +820,11 @@ \cs_new_protected:Npn \__acro_close_bracket: { - \bool_if:nT + \bool_lazy_all:nT { - \l__acro_first_use_brackets_bool && - !\l__acro_first_only_short_bool && - !\l__acro_first_only_long_bool + { \l__acro_first_use_brackets_bool } + { !\l__acro_first_only_short_bool } + { !\l__acro_first_only_long_bool } } { \tl_tail:N \l__acro_first_brackets_tl } } @@ -794,11 +837,9 @@ \str_case:nn {#1} { {long} { - \bool_if:nT - { - \l__acro_first_only_long_bool || - !\l__acro_first_only_short_bool - } + \bool_lazy_or:nnT + { \l__acro_first_only_long_bool } + { !\l__acro_first_only_short_bool } { \group_begin: \bool_set_false:N \l__acro_first_upper_bool @@ -807,11 +848,9 @@ } } {short} { - \bool_if:nT - { - !\l__acro_first_only_long_bool || - \l__acro_first_only_short_bool - } + \bool_lazy_or:nnT + { !\l__acro_first_only_long_bool } + { \l__acro_first_only_short_bool } { \group_begin: \bool_set_false:N \l__acro_first_upper_bool @@ -825,11 +864,11 @@ % #1: id \cs_new_protected:Npn \__acro_foreign_sep:n #1 { - \bool_if:nT + \bool_lazy_all:nT { - \l__acro_foreign_bool && - !\l__acro_first_only_short_bool && - !\l__acro_first_only_long_bool + { \l__acro_foreign_bool } + { !\l__acro_first_only_short_bool } + { !\l__acro_first_only_long_bool } } { \acro_if_foreign:nT {#1} { \tl_use:N \l__acro_foreign_sep_tl } } } @@ -839,11 +878,11 @@ { \acro_if_foreign:nT {#1} { - \bool_if:nT + \bool_lazy_all:nT { - \l__acro_foreign_bool && - !\l__acro_first_only_short_bool && - !\l__acro_first_only_long_bool + { \l__acro_foreign_bool } + { !\l__acro_first_only_short_bool } + { !\l__acro_first_only_long_bool } } { \acro_write_foreign:n {#1} @@ -861,9 +900,9 @@ \cs_new_protected:Npn \__acro_finalize_first:n #1 { \bool_if:NF \l__acro_group_citation_bool - { \acro_cite_if:nn { \l__acro_citation_first_bool } {#1} } - \acro_index_if:nn { \l__acro_addto_index_bool } {#1} - \acro_get_property:nnT {#1} {post} + { \acro_cite_if:Nn \l__acro_citation_first_bool {#1} } + \acro_index_if:Nn \l__acro_addto_index_bool {#1} + \acro_property_get:nnT {#1} {post} { \tl_use:N \l__acro_post_tl } } @@ -919,11 +958,6 @@ \__acro_finalize_first:n {#1} } } - -\bool_new:N \l__acro_first_instance_bool - -\NewExpandableDocumentCommand \aciffirst {+m+m} - { \bool_if:NTF \l__acro_first_instance_bool {#1} {#2} } % template for footnotes, sidenotes, ... \cs_new:Npn \__acro_note_command:n #1 {#1} @@ -983,12 +1017,6 @@ \prop_put:Nnn \l__acro_first_styles_prop {#1} {#2} } -% #1: name -% #2: template -% #3: settings -\NewDocumentCommand \DeclareAcroFirstStyle {mmm} - { \acro_declare_first_style:nnn {#1} {#2} {#3} } - % set a list style \cs_new_protected:Npn \acro_set_first_style:n #1 { @@ -1046,12 +1074,6 @@ \prop_put:Nnn \l__acro_etxra_styles_prop {#1} {#2} } -% #1: name -% #2: template -% #3: settings -\NewDocumentCommand \DeclareAcroExtraStyle {mmm} - { \acro_declare_extra_style:nnn {#1} {#2} {#3} } - % set an extra style \cs_new_protected:Npn \acro_set_extra_style:n #1 { @@ -1191,13 +1213,14 @@ { \acro_get_abspage_from:N \l__acro_last_page_tl } \int_set:Nn \l__acro_tmpd_int { \acro_get_page_number_from:N \l__acro_last_page_tl } - \bool_if:nTF + \bool_lazy_and:nnTF { \int_compare_p:nNn { \l__acro_tmpa_int - \l__acro_tmpc_int } = { \l__acro_tmpb_int - \l__acro_tmpd_int } - && + } + { \int_compare_p:nNn { \l__acro_tmpb_int - \l__acro_tmpd_int } = {1} } @@ -1243,7 +1266,7 @@ \seq_put_right:Nn #1 {#3} } } -\cs_generate_variant:Nn \acro_determine_page_ranges:NNn { NNV } +\cs_generate_variant:Nn \acro_determine_page_ranges:NNn {NNV} % -------------------------------------------------------------------------- \DeclareObjectType {acro-page-number} {1} @@ -1291,12 +1314,6 @@ \prop_put:Nnn \l__acro_page_styles_prop {#1} {#2} } -% #1: name -% #2: template -% #3: settings -\NewDocumentCommand \DeclareAcroPageStyle {mmm} - { \acro_declare_page_style:nnn {#1} {#2} {#3} } - % set a page style \cs_new_protected:Npn \acro_set_page_style:n #1 { @@ -1348,12 +1365,7 @@ } \cs_new_protected:Npn \__acro_set_list_heading:n #1 - { - \tl_set:Nn \l__acro_list_heading_cmd_tl {#1} - % \prop_get:NnN \l__acro_list_headings_prop - % {#1} - % \l__acro_list_heading_cmd_tl - } + { \tl_set:Nn \l__acro_list_heading_cmd_tl {#1} } \cs_new_protected:Npn \acro_declare_list_heading:nn #1#2 { @@ -1362,9 +1374,6 @@ { name-format = #2 {##1} } } -\NewDocumentCommand \DeclareAcroListHeading {mm} - { \acro_declare_list_heading:nn {#1} {#2} } - % -------------------------------------------------------------------------- % typesetting the acronym list \DeclareObjectType {acro-list} {2} @@ -1376,11 +1385,11 @@ \bool_set_false:N \l__acro_is_excluded_bool \tl_if_blank:nF {#2} { - \clist_map_inline:nn {#2} + \acro_property_get:nnT {#1} {class} { - \prop_get:NnNT \l__acro_class_prop {#1} \l__acro_tmpa_tl + \seq_set_split:NnV \l__acro_tmpa_seq {,} \l__acro_class_tl + \clist_map_inline:nn {#2} { - \seq_set_split:NnV \l__acro_tmpa_seq {,} \l__acro_tmpa_tl \seq_if_in:NnT \l__acro_tmpa_seq {##1} { \bool_set_true:N \l__acro_is_excluded_bool } } @@ -1399,11 +1408,11 @@ \tl_if_blank:nTF {#2} { \bool_set_true:N \l__acro_is_included_bool } { - \clist_map_inline:nn {#2} + \acro_property_get:nnT {#1} {class} { - \prop_get:NnNT \l__acro_class_prop {#1} \l__acro_tmpa_tl + \seq_set_split:NnV \l__acro_tmpa_seq {,} \l__acro_class_tl + \clist_map_inline:nn {#2} { - \seq_set_split:NnV \l__acro_tmpa_seq {,} \l__acro_tmpa_tl \seq_if_in:NnT \l__acro_tmpa_seq {##1} { \bool_set_true:N \l__acro_is_included_bool } } @@ -1425,14 +1434,12 @@ \acro_acc_supp:nn {#1} { - \bool_if:nTF - { - \l__acro_custom_short_format_bool && - \l__acro_override_list_format_bool - } + \bool_lazy_and:nnTF + { \l__acro_custom_short_format_bool } + { \l__acro_override_list_format_bool } { \l__acro_custom_short_format_tl } { \l__acro_list_short_format_tl } - { \__acro_get_property:nn {short} {#1} } + { \__acro_property_get:nn {short} {#1} } } } \group_end: @@ -1447,30 +1454,30 @@ \acro_write_long:Vf \l__acro_list_long_format_tl { \prop_if_in:NnTF \l__acro_list_prop {#1} - { \__acro_get_property:nn {list} {#1} } - { \__acro_get_property:nn {long} {#1} } + { \__acro_property_get:nn {list} {#1} } + { \__acro_property_get:nn {long} {#1} } } \group_end: \bool_if:NT \l__acro_foreign_bool { \acro_get_foreign:n {#1} } - \acro_cite_if:nn { \l__acro_citation_all_bool } {#1} + \acro_cite_if:Nn \l__acro_citation_all_bool {#1} } % #1: id \cs_new_protected:Npn \__acro_list_entry_extra:n #1 { - \prop_get:NnNT \l__acro_extra_prop {#1} \l__acro_tmpa_tl + \acro_property_get:nnT {#1} {extra} { \acro_extra_instance:VV \l__acro_extra_instance_tl - \l__acro_tmpa_tl + \l__acro_extra_tl } } % #1: id \cs_new_protected:Npn \__acro_list_entry_page:n #1 { - \bool_if:nT { \cs_if_exist_p:c { acro@#1@once } } + \cs_if_exist:cT {acro@#1@once} { \acro_page_number_instance:Vn \l__acro_page_instance_tl @@ -1490,7 +1497,7 @@ {extra} { \__acro_list_entry_extra:n {#2} } {page} { \__acro_list_entry_page:n {#2} } } - { \__acro_get_property:nn {#1} {#2} } + { \__acro_property_get:nn {#1} {#2} } } % this macro may/should be redefined in templates: @@ -1513,20 +1520,31 @@ % #3: excluded classes \prg_new_protected_conditional:Npnn \acro_if_entry:nnn #1#2#3 {T,F,TF} { - \bool_if:nTF + \bool_lazy_or:nnTF { - \bool_if_p:c { g__acro_#1_in_list_bool } && - ( - ( \l__acro_use_single_bool && \cs_if_exist_p:c { acro@#1@twice } ) - || - ( - !\l__acro_use_single_bool && - \cs_if_exist_p:c { acro@#1@once } && - \l__acro_print_only_used_bool - ) - ) - || - ( !\l__acro_use_single_bool && !\l__acro_print_only_used_bool ) + \bool_lazy_and_p:nn + { !\l__acro_single_use_bool } + { !\l__acro_print_only_used_bool } + } + { + \bool_lazy_and_p:nn + { \bool_if_p:c {g__acro_#1_in_list_bool} } + { + \bool_lazy_or_p:nn + { + \bool_lazy_and_p:nn + { \l__acro_single_use_bool } + { \cs_if_exist_p:c {acro@#1@twice} } + } + { + \bool_lazy_all_p:n + { + { !\l__acro_single_use_bool } + { \cs_if_exist_p:c {acro@#1@once} } + { \l__acro_print_only_used_bool } + } + } + } } { \acro_if_is_excluded:nnTF {#1} {#3} @@ -1534,8 +1552,9 @@ { \acro_if_is_included:nnTF {#1} {#2} { - \bool_if:nTF - { \g__acro_use_barriers_bool && \l__acro_use_barrier_bool } + \bool_lazy_and:nnTF + { \g__acro_use_barriers_bool } + { \l__acro_use_barrier_bool } { \acro_if_in_barrier:nxTF {#1} { \int_use:N \g__acro_barrier_int } @@ -1550,8 +1569,6 @@ { \prg_return_false: } } -\tl_new:N \l__acro_list_entries_tl - % this macro is used in templates for fetching all items to be printed; it % collects all entries in a tl which then is used where needed % @@ -1815,12 +1832,6 @@ \prop_put:Nnn \l__acro_list_styles_prop {#1} {#2} } -% #1: name -% #2: template -% #3: settings -\NewDocumentCommand \DeclareAcroListStyle {mmm} - { \acro_declare_list_style:nnn {#1} {#2} {#3} } - % set a list style \cs_new_protected:Npn \acro_set_list_style:n #1 { @@ -1841,6 +1852,28 @@ \prop_get:NnN \l__acro_list_styles_prop {#1} \l__acro_list_type_tl } +% -------------------------------------------------------------------------- +% case insensitivity of the ID: +\cs_new:Npn \acro_case_insensitive:n #1 + { + \bool_if:NTF \g__acro_case_sensitive_bool + { \tl_to_str:n {#1} } + { \str_lower_case:n {#1} } + } + +\cs_new_protected:Npn \acro_protected_case_insensitive:n #1 + { \acro_case_insensitive:n {#1} } + +\cs_new:Npn \acro_case_insensitive:Nn #1#2 + { \exp_args:Ne #1 { \acro_case_insensitive:n {#2} } } + +\cs_new:Npn \acro_case_insensitive:Nnn #1#2#3 + { \exp_args:Ne #1 { \acro_case_insensitive:n {#2} } {#3} } + +\cs_new_protected:Npn \acro_case_insensitive_command:Nnnn #1#2#3#4 + { \exp_args:Nnnx #1 {#2} {#3} { \acro_case_insensitive:n {#4} } } +\cs_generate_variant:Nn \acro_case_insensitive_command:Nnnn {c} + % -------------------------------------------------------------------------- % automatic typesetting, the internals of \ac: % #1: id @@ -1879,7 +1912,7 @@ \acro_single_form:nV {#1} \l__acro_single_form_tl \acro_after:n {#1} } - + % #1: ID % #2: long|first| \cs_new_protected:Npn \acro_single_form:nn #1#2 @@ -1935,8 +1968,9 @@ \prg_new_conditional:Npnn \acro_if_is_single:n #1 { p,T,TF } { - \bool_if:nTF - { !\l__acro_use_single_bool || \cs_if_exist_p:c { acro@#1@twice } } + \bool_lazy_or:nnTF + { !\l__acro_single_use_bool } + { \cs_if_exist_p:c {acro@#1@twice} } { \prg_return_false: } { \prg_return_true: } } @@ -1946,11 +1980,10 @@ % -------------------------------------------------------------------------- % some helpers we'll need more often: -\seq_new:N \g__acro_declared_acronyms_seq - \prg_new_conditional:Npnn \acro_if_defined:n #1 {p,T,F,TF} { - \seq_if_in:NnTF \g__acro_declared_acronyms_seq {#1} + \seq_if_in:NeTF \g__acro_declared_acronyms_seq + { \acro_case_insensitive:n {#1} } { \prg_return_true: } { \prg_return_false: } } @@ -1965,14 +1998,14 @@ % name is needed % #1: property % #2: id -\cs_new:Npn \__acro_get_property:nn #1#2 +\cs_new:Npn \__acro_property_get:nn #1#2 { \prop_item:cn {l__acro_#1_prop} {#2} } % #1: id % #2: property % #3: set case % #4: not set case -\prg_new_protected_conditional:Npnn \acro_get_property:nn #1#2 {T,F,TF} +\prg_new_protected_conditional:Npnn \acro_property_get:nn #1#2 {T,F,TF} { \tl_set:Nn \l__acro_tmpa_tl {#2} \tl_replace_all:Nnn \l__acro_tmpa_tl {-} {_} @@ -1984,32 +2017,14 @@ { \prg_return_false: } } -\cs_new_protected:Npn \acro_get_property:nn #1#2 - { \acro_get_property:nnTF {#1} {#2} {} {} } -\cs_generate_variant:Nn \acro_get_property:nn {V} - -% #1: id -% #2: property -% #3: set case -% #4: not set case -\prg_new_protected_conditional:Npnn \acro_if_property:nn #1#2 {T,F,TF} - { - \tl_set:Nn \l__acro_tmpa_tl {#2} - \tl_replace_all:Nnn \l__acro_tmpa_tl {-} {_} - \prop_if_in:cnTF - {l__acro_ \l__acro_tmpa_tl _prop} - {#1} - { \prg_return_true: } - { \prg_return_false: } - } - -\seq_new:N \l__acro_actions_seq +\cs_new_protected:Npn \acro_property_get:nn #1#2 + { \acro_property_get:nnTF {#1} {#2} {} {} } +\cs_generate_variant:Nn \acro_property_get:nn {V} % within this command one can refer to the current id with `#1' \cs_new_protected:Npn \acro_add_action:n #1 { \seq_put_right:Nn \l__acro_actions_seq {#1} } -\tl_new:N \l_acro_current_id_tl \cs_new_protected:Npn \__acro_get_actions:n #1 { \seq_map_inline:Nn \l__acro_actions_seq @@ -2024,52 +2039,57 @@ \bool_if:NF \l__acro_in_list_bool { \leavevmode } \acro_activate_hyperref_support: % short: - \prop_get:NnNF \l__acro_short_prop {#1} \l__acro_short_tl {} - % \__acro_make_link:NnV \l__acro_short_tl {#1} \l__acro_tmpa_tl + \acro_property_get:nn {#1} {short} % alt: - \prop_get:NnNF \l__acro_alt_prop {#1} \l__acro_alt_tl - % { \__acro_make_link:NnV \l__acro_alt_tl {#1} \l__acro_tmpa_tl } + \acro_property_get:nnF {#1} {alt} { \tl_set_eq:NN \l__acro_alt_tl \l__acro_short_tl } % long: - \acro_get_property:nn {#1} {long} + \acro_property_get:nn {#1} {long} % foreign: - \acro_get_property:nn {#1} {foreign} + \acro_property_get:nn {#1} {foreign} % foreign-lang: - \acro_get_property:nn {#1} {foreign-lang} + \acro_property_get:nn {#1} {foreign-lang} % extra: - \acro_get_property:nn {#1} {extra} + \acro_property_get:nn {#1} {extra} % single: - \acro_get_property:nn {#1} {single} + \acro_property_get:nn {#1} {single} % first-style: - \acro_get_property:nn {#1} {first-style} + \acro_property_get:nn {#1} {first-style} % formatting - \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 } + \acro_property_get:nnTF {#1} {long-format} + { + \tl_set_eq:NN \l__acro_custom_long_format_tl \l__acro_long_format_tl + \bool_set_true:N \l__acro_custom_long_format_bool + } { \bool_set_false:N \l__acro_custom_long_format_bool } - \acro_get_property:nn {#1} {first-long-format} - \prop_get:NnNTF \l__acro_format_prop {#1} \l__acro_custom_short_format_tl - { \bool_set_true:N \l__acro_custom_short_format_bool } + \acro_property_get:nn {#1} {first-long-format} + \acro_property_get:nnTF {#1} {format} + { + \tl_set_eq:NN \l__acro_custom_short_format_tl \l__acro_format_tl + \bool_set_true:N \l__acro_custom_short_format_bool + } { \bool_set_false:N \l__acro_custom_short_format_bool } - \prop_get:NnNTF \l__acro_alt_format_prop {#1} \l__acro_custom_alt_format_tl - { \bool_set_true:N \l__acro_custom_alt_format_bool } + \acro_property_get:nnTF {#1} {alt-format} + { + \tl_set_eq:NN \l__acro_custom_alt_format_tl \l__acro_alt_format_tl + \bool_set_true:N \l__acro_custom_alt_format_bool + } { \bool_set_false:N \l__acro_custom_alt_format_bool } - \acro_get_property:nn {#1} {single-format} + \acro_property_get:nn {#1} {single-format} \acro_for_endings_do:n { \bool_if:cT {l__acro_##1_bool} { \__acro_set_ending_for:nnn {##1} {#1} {long} } } - \acro_get_property:nnF {#1} {long-post} + \acro_property_get:nnF {#1} {long-post} { \tl_clear:N \l__acro_long_post_tl } - \acro_get_property:nnT {#1} {long-pre} + \acro_property_get:nnT {#1} {long-pre} { \tl_put_left:NV \l__acro_long_tl \l__acro_long_pre_tl } \__acro_get_actions:n {#1} } % -------------------------------------------------------------------------- % plural endings and similar concepts: -\seq_new:N \l__acro_endings_seq \cs_new_protected:Npn \acro_for_endings_do:n #1 { \seq_map_inline:Nn \l__acro_endings_seq {#1} } @@ -2087,10 +2107,6 @@ } } -\tl_new:N \l__acro_endings_tl - -\bool_new:N \l__acro_use_ending_form_bool - % this does nothing if a non-existent ending (#1) or non-existent form (#3) is % input % #1: ending @@ -2121,12 +2137,9 @@ { \acro_if_ending_form_exist:nnT {##1} {#2} { - \bool_if:nT - { - \use:c { c_ \prop_item:cn {l__acro_#2_##1_form_prop} {#1} _bool } - && - \use:c {l__acro_##1_bool} - } + \bool_lazy_and:nnT + { \use:c {l__acro_##1_bool} } + { \use:c { c_ \prop_item:cn {l__acro_#2_##1_form_prop} {#1} _bool } } { \prop_get:cncF {l__acro_#2_##1_prop} {#1} {l__acro_#2_tl} {} } } } @@ -2389,26 +2402,22 @@ } } -\NewDocumentCommand \ProvideAcroEnding {mmm} - { \acro_provide_ending:nnn {#1} {#2} {#3} } - % -------------------------------------------------------------------------- % enable us to know if the acronym is used only once and provide a different % style for that: \prg_new_protected_conditional:Npnn \acro_is_used:n #1 { T,F,TF } { \acro_record_barrier:n {#1} - \bool_if:nTF + \bool_lazy_and:nnTF + { \bool_if_p:c {g__acro_#1_used_bool} } { - \bool_if_p:c { g__acro_#1_used_bool } && - ( - ( - \bool_if_p:c { g__acro_#1_first_use_bool } && - \g__acro_mark_first_as_used_bool - ) - || - ! \g__acro_mark_first_as_used_bool - ) + \bool_lazy_or_p:nn + { + \bool_lazy_and_p:nn + { \bool_if_p:c {g__acro_#1_first_use_bool} } + { \g__acro_mark_first_as_used_bool } + } + { !\g__acro_mark_first_as_used_bool } } { \bool_if:NTF \l__acro_mark_as_used_bool @@ -2430,11 +2439,9 @@ { \thepage } { \arabic {page} } { \arabic {abspage} } - \bool_if:nT - { - !\bool_if_p:c { g__acro_#1_label_bool } && - \l__acro_place_label_bool - } + \bool_lazy_and:nnT + { !\bool_if_p:c {g__acro_#1_label_bool} } + { \l__acro_place_label_bool } { \bool_gset_true:c { g__acro_#1_label_bool } \label{\l__acro_label_prefix_tl #1} @@ -2454,11 +2461,11 @@ \cs_new_protected:Npn \__acro_aux_file:Nnnnn #1#2#3#4#5 { \iow_shipout:Nn \@auxout { #1 {#2} {#3} {#4} {#5} } } -\cs_generate_variant:Nn \__acro_aux_file:Nnnnn { Nxxxx } +\cs_generate_variant:Nn \__acro_aux_file:Nnnnn {Nxxxx} \cs_new_protected:Npn \__acro_aux_file_now:n #1 { \iow_now:Nn \@auxout {#1} } -\cs_generate_variant:Nn \__acro_aux_file_now:n { x } +\cs_generate_variant:Nn \__acro_aux_file_now:n {x} % -------------------------------------------------------------------------- % the commands for the auxiliary file: @@ -2482,8 +2489,6 @@ \cs_new_protected:Npn \acro@pages #1#2 { \tl_gset:cn {g__acro_#1_recorded_pages_tl} {#2} } -\bool_new:N \g__acro_rerun_bool - \cs_new_protected:Npn \acro@rerun@check { \bool_if:NT \g__acro_rerun_bool @@ -2567,14 +2572,13 @@ { \__acro_typeset:nn {short} { - \bool_if:nTF - { \l__acro_first_upper_bool } + \bool_if:NTF \l__acro_first_upper_bool { \exp_not:N \__acro_first_upper_case:n { \exp_not:n {#2} } } { \exp_not:n {#2} } } } } -\cs_generate_variant:Nn \acro_write_short:nn { nV , nv } +\cs_generate_variant:Nn \acro_write_short:nn {nV,nv} % typeset the alternative form: % #1: ID @@ -2585,14 +2589,15 @@ { \__acro_typeset:nn {alt} { - \bool_if:nTF - { \l__acro_first_upper_bool && \l__acro_upper_short_bool } + \bool_lazy_and:nnTF + { \l__acro_first_upper_bool } + { \l__acro_upper_short_bool } { \exp_not:N \__acro_first_upper_case:n { \exp_not:n {#2} } } { \exp_not:n {#2} } } } } -\cs_generate_variant:Nn \acro_write_alt:nn { nV , nv } +\cs_generate_variant:Nn \acro_write_alt:nn {nV,nv} % typeset a long form: % TODO: rethink the formatting mechanism @@ -2612,16 +2617,13 @@ } } } -\cs_generate_variant:Nn \acro_write_long:nn { VV,Vo,Vf,V,v,vv } +\cs_generate_variant:Nn \acro_write_long:nn {VV,Vo,Vf,V,v,vv} \prg_new_conditional:Npnn \acro_if_foreign:n #1 {T,F,TF} { - \bool_if:nTF - { - \l__acro_foreign_bool - && - \prop_if_in_p:Nn \l__acro_foreign_prop {#1} - } + \bool_lazy_and:nnTF + { \l__acro_foreign_bool } + { \prop_if_in_p:Nn \l__acro_foreign_prop {#1} } { \prg_return_true: } { \prg_return_false: } } @@ -2648,7 +2650,7 @@ { \acro_if_foreign:nT {#1} { - \prop_get:NnNT \l__acro_foreign_prop {#1} \l__acro_foreign_tl + \acro_property_get:nnT {#1} {foreign} { \group_begin: \tl_use:N \l__acro_foreign_format_tl @@ -2666,10 +2668,9 @@ \cs_new_protected:Npn \acro_get_foreign:n #1 { - \prop_if_in:NnT \l__acro_foreign_prop {#1} + \acro_property_get:nnT {#1} {foreign} { \tl_use:N \l__acro_foreign_sep_tl - \prop_get:NnN \l__acro_foreign_prop {#1} \l__acro_foreign_tl \group_begin: \tl_use:N \l__acro_foreign_list_format_tl { @@ -2713,7 +2714,7 @@ \tl_if_in:nnT {#2} {long} { \l__acro_long_post_tl } } -\cs_generate_variant:Nn \acro_write_expanded:nnn { nnV } +\cs_generate_variant:Nn \acro_write_expanded:nnn {nnV} % #1: ID % #2: long|first-long|list-long|extra @@ -2732,9 +2733,9 @@ % #1: id \cs_new_protected:Npn \acro_after:n #1 { - \acro_cite_if:nn { \l__acro_citation_all_bool } {#1} - \acro_index_if:nn { \l__acro_addto_index_bool } {#1} - \acro_get_property:nnT {#1} {post} + \acro_cite_if:Nn \l__acro_citation_all_bool {#1} + \acro_index_if:Nn \l__acro_addto_index_bool {#1} + \acro_property_get:nnT {#1} {post} { \tl_use:N \l__acro_post_tl } } @@ -2833,8 +2834,8 @@ % ---------------------------------------------------------------------------- % citations: -\cs_new:Npn \__acro_citation_cmd:w { \cite } %{} -\cs_new:Npn \__acro_group_citation_cmd:w { \cite } %{} +\cs_new:Npn \__acro_citation_cmd:w { \cite } +\cs_new:Npn \__acro_group_citation_cmd:w { \cite } % #1 pre % #2 post @@ -2845,14 +2846,16 @@ { \__acro_citation_cmd:w {#3} } { \quark_if_no_value:nTF {#2} - { \__acro_citation_cmd:w [ #1 ] {#3} } - { \__acro_citation_cmd:w [ #1 ] [ #2 ] {#3} } + { \__acro_citation_cmd:w [#1] {#3} } + { \__acro_citation_cmd:w [#1] [#2] {#3} } } } -\cs_generate_variant:Nn \__acro_cite:nnn { VVV } +\cs_generate_variant:Nn \__acro_cite:nnn {VVV} \cs_new_protected:Npn \acro_cite:n #1 { + \acro_property_get:nnT {#1} {before-citation} + { \acro_no_break: \l__acro_before_citation_tl } \prop_get:NnNT \l__acro_citation_prop {#1} \l__acro_tmpa_tl { \prop_get:NnN \l__acro_citation_pre_prop {#1} \l__acro_tmpb_tl @@ -2864,6 +2867,8 @@ \l__acro_tmpc_tl \l__acro_tmpa_tl } + \acro_property_get:nnT {#1} {after-citation} + { \acro_no_break: \l__acro_after_citation_tl } } \cs_new_protected:Npn \acro_group_cite:n #1 @@ -2873,18 +2878,18 @@ \tl_set_eq:NN \l__acro_citation_connect_tl \l__acro_between_group_connect_citation_tl - \acro_cite_if:nn { \l__acro_citation_first_bool } {#1} + \acro_cite_if:Nn \l__acro_citation_first_bool {#1} \group_end: } -\cs_new_protected:Npn \acro_cite_if:nn #1#2 - { \bool_if:nT {#1} { \acro_cite:n {#2} } } +\cs_new_protected:Npn \acro_cite_if:Nn #1#2 + { \bool_if:NT #1 { \acro_cite:n {#2} } } % ---------------------------------------------------------------------------- % indexing: -\cs_new_protected:Npn \acro_index_if:nn #1#2 +\cs_new_protected:Npn \acro_index_if:Nn #1#2 { - \bool_if:nT { (#1) && \l__acro_mark_as_used_bool } + \bool_lazy_and:nnT {#1} { \l__acro_mark_as_used_bool } { \prop_get:NnN \l__acro_index_cmd_prop {#2} \l__acro_tmpa_tl \prop_get:NnN \l__acro_index_sort_prop {#2} \l__acro_tmpb_tl @@ -2920,7 +2925,7 @@ } { \__acro_index_cmd:n {#4} } } -\cs_generate_variant:Nn \__acro_index:nnnn { VnVV } +\cs_generate_variant:Nn \__acro_index:nnnn {VnVV} % ---------------------------------------------------------------------------- % accessability support @@ -2951,7 +2956,7 @@ #3 \EndAccSupp { } } -\cs_generate_variant:Nn \acro_do_acc_supp:nnn { VV } +\cs_generate_variant:Nn \acro_do_acc_supp:nnn {VV} \AtEndPreamble { @@ -2976,20 +2981,20 @@ % #3: tool tip text \cs_new_protected:Npn \acro_write_tooltip:nnn #1#2#3 { - \prop_get:NnNTF \l__acro_tooltip_prop {#1} \l__acro_tmpa_tl - { \__acro_check_tooltip:nV {#2} \l__acro_tmpa_tl } + \acro_property_get:nnTF {#1} {tooltip} + { \__acro_check_tooltip:nV {#2} \l__acro_tooltip_tl } { \__acro_check_tooltip:nn {#2} {#3} } } -\cs_generate_variant:Nn \acro_write_tooltip:nnn { nnV } +\cs_generate_variant:Nn \acro_write_tooltip:nnn {nnV} % #1: printed text % #2: tool tip text \cs_new_protected:Npn \__acro_check_tooltip:nn #1#2 { - \bool_if:NTF \l__acro_inside_tooltip_bool + \bool_if:NTF \l__acro_tooltip_inside_bool {#1} { - \bool_set_true:N \l__acro_inside_tooltip_bool + \bool_set_true:N \l__acro_tooltip_inside_bool \__acro_tooltip_cmd:nn {#1} {#2} } } @@ -3109,10 +3114,6 @@ % -------------------------------------------------------------------------- % trailing tokens and what to do when present -\prop_new:N \l__acro_trailing_tokens_prop -\prop_new:N \l__acro_trailing_actions_prop -\bool_new:N \l__acro_trailing_tokens_bool -\tl_new:N \l__acro_trailing_tokens_tl \cs_new_protected:Npn \acro_new_trailing_token:n #1 { \bool_new:c {l__acro_trailing_#1_bool} } @@ -3131,9 +3132,6 @@ { \acro_activate_trailing_action:n {#2} } \acro_new_trailing_token:n {#2} } - -\NewDocumentCommand \AcroRegisterTrailing {mm} - { \acro_register_trailing_token:Nn #1 {#2} } \cs_new_protected:Npn \acro_for_all_trailing_tokens_do:n #1 { \prop_map_inline:Nn \l__acro_trailing_tokens_prop {#1} } @@ -3203,9 +3201,6 @@ \cs_new_protected:Npn \acro_space: { \acro_if_trailing_tokens:nF {dash,babel-hyphen} { \c_space_tl } } - -\NewDocumentCommand \acdot {} { \acro_dot: } -\NewDocumentCommand \acspace {} { \acro_space: } % --------------------------------------------------------------------------- % reset outputs, they'll behave like the first time again (!not like the _only_ @@ -3237,41 +3232,19 @@ \cs_new_protected:Npn \acro_mark_all_as_used: { \acro_for_all_acronyms_do:n { \acro_mark_as_used:n {##1} } } -\DeclareExpandableDocumentCommand \acifused { m } - { \acro_if_acronym_used:nTF {#1} } - \prg_new_conditional:Npnn \acro_if_acronym_used:n #1 { p,T,F,TF } { - \bool_if:nTF - { - \bool_if_p:c { g__acro_#1_used_bool } && - ( !\acro_if_is_single_p:n {#1} ) - } + \bool_lazy_and:nnTF + { \bool_if_p:c {g__acro_#1_used_bool} } + { !\acro_if_is_single_p:n {#1} } { \prg_return_true: } { \prg_return_false: } } -\NewDocumentCommand \acresetall {} - { \acro_reset_all: } - -\NewDocumentCommand \acuseall {} - { \acro_mark_all_as_used: } - -\NewDocumentCommand \acreset { > { \SplitList { , } } m } - { \ProcessList {#1} { \acro_reset:n } \ignorespaces } - -\NewDocumentCommand \acuse { > { \SplitList { , } } m } - { \ProcessList {#1} { \acro_mark_as_used:n } \ignorespaces } - % -------------------------------------------------------------------------- % acronym barriers: allow local lists of only those acronyms used between two % barriers -\int_new:N \g__acro_barrier_int -\bool_new:N \g__acro_use_barriers_bool -\bool_new:N \g__acro_reset_at_barrier_bool -\bool_new:N \l__acro_use_barrier_bool - \keys_define:nn {acro} { use-barriers .bool_gset:N = \g__acro_use_barriers_bool , @@ -3287,9 +3260,6 @@ { \acro_reset_all: } } -\NewDocumentCommand \acbarrier {} - { \acro_barrier: } - \cs_new_protected:Npn \acro_check_barriers:n #1 { \bool_if:NT \g__acro_use_barriers_bool @@ -3358,9 +3328,6 @@ \bool_set_false:N \l__acro_indefinite_bool \bool_set_false:N \l__acro_first_upper_bool \bool_set_false:N \l__acro_upper_indefinite_bool - % \bool_set_false:N \l__acro_citation_all_bool - % \bool_set_false:N \l__acro_citation_first_bool - % \bool_set_false:N \l__acro_addto_index_bool \acro_for_endings_do:n { \bool_set_false:c {l__acro_##1_bool} } } @@ -3376,8 +3343,7 @@ % #2: ID \cs_new_protected:Npn \acro_check_and_mark_if:nn #1#2 { - \bool_if:nTF - { (#1) || !\l__acro_use_acronyms_bool } + \bool_lazy_or:nnTF {#1} { !\l__acro_use_acronyms_bool } { \acro_check_acronym:nn {#2} {false} } { \acro_check_acronym:nn {#2} {true} } } @@ -3388,12 +3354,6 @@ \cs_new_protected:Npn \acro_switch_on: { \bool_set_true:N \l__acro_use_acronyms_bool } -\NewDocumentCommand \acswitchoff {} - { \acro_switch_off: } - -\NewDocumentCommand \acswitchon {} - { \acro_switch_on: } - % commands for (re)defining \ac-like macros: \cs_new_protected:Npn \acro_define_new_acro_command:NN #1#2 { @@ -3401,19 +3361,29 @@ % #2: definition where `#1' refers to the ID \cs_new_protected:Npn #1 ##1##2 { - \cs_set:Npn \__acro_tmp_command:n ####1 {##2} - \exp_args:NNnx #2 ##1 {sO{}m} + \cs_set:Npn \__acro_tmp:n ####1 {##2} + \cs_new_protected:cpx + {acro_ \__acro_remove_backslash:N ##1 :nnn} ####1####2####3 { \acro_begin: \acro_reset_specials: - \keys_set:nn {acro} {########2} - \acro_check_and_mark_if:nn {########1} {########3} - \exp_not:o { \__acro_tmp_command:n {####3} } + \exp_not:N \tl_if_blank:nF {####2} { \keys_set:nn {acro} {####2} } + \acro_check_and_mark_if:nn {####1} {####3} + \__acro_tmp:n {####3} \acro_end: } + #2 ##1 {sO{}m} + { + \acro_case_insensitive_command:cnnn + {acro_ \__acro_remove_backslash:N ##1 :nnn} + {####1} + {####2} + {####3} + } } } \cs_generate_variant:Nn \acro_define_new_acro_command:NN {cc} +\cs_generate_variant:Nn \acro_check_and_mark_if:nn {nx} % commands for (re)defining \acflike-like macros: \cs_new_protected:Npn \acro_define_new_acro_pseudo_command:NN #1#2 @@ -3422,15 +3392,24 @@ % #2: definition where `#1' refers to the ID and `#2' to the pseudo long form \cs_new_protected:Npn #1 ##1##2 { - \cs_set:Npn \__acro_tmp_command:nn ####1####2 {##2} - \exp_args:NNnx #2 ##1 {smm} + \cs_set:Npn \__acro_tmp:nn ####1####2 {##2} + \cs_new_protected:cpx + {acro_ \__acro_remove_backslash:N ##1 :nnn} ####1####2####3 { \acro_begin: \acro_reset_specials: - \acro_check_and_mark_if:nn {########1} {########2} - \exp_not:o { \__acro_tmp_command:nn {####2} {####3} } + \acro_check_and_mark_if:nn {####1} {####3} + \__acro_tmp:nn {####3} {####2} \acro_end: } + #2 ##1 {smm} + { + \acro_case_insensitive_command:cnnn + {acro_ \__acro_remove_backslash:N ##1 :nnn} + {####1} + {####3} + {####2} + } } } \cs_generate_variant:Nn \acro_define_new_acro_pseudo_command:NN {cc} @@ -3594,10 +3573,6 @@ } {} } -% -------------------------------------------------------------------------- -% additional variables: -\tl_new:N \l__acro_current_property_tl - % -------------------------------------------------------------------------- % key and order checking \msg_new:nnn {acro} {no-id} @@ -3627,36 +3602,47 @@ % #2: property \cs_new_protected:Npn \__acro_property_check:nn #1#2 { - \tl_if_blank:VT \l__acro_current_property_tl + \str_if_empty:NT \l__acro_current_id_str { \acro_serious_message:n {no-id} } \str_if_eq:nnF {#2} {short} { - \bool_if:cF { l__acro_#1_short_set_bool } + \acro_property_if_set:nnF {#1} {short} { - \keys_set:nn { acro / declare-acronym } { short = {#1} } + \keys_set:nn {acro/declare-acronym} { short = {#1} } \acro_harmless_message:nn {substitute-short} {#1} } } - % \bool_new:c { l__acro_#1_#2_set_bool } - \bool_set_true:c { l__acro_#1_#2_set_bool } + \acro_property_mark_set:nn {#1} {#2} } \cs_new_protected:Npn \__acro_first_property_check:nn #1#2 { - \cs_if_exist:cTF { l__acro_#1_short_set_bool } + \cs_if_exist:cTF {l__acro_#1_short_set_bool} { - \bool_if:cT { l__acro_#1_short_set_bool } + \acro_property_if_set:nnT {#1} {short} { \acro_serious_message:nnn {doubled-property} {#1} {#2} } } - { - \bool_new:c { l__acro_#1_short_set_bool } - \bool_set_true:c { l__acro_#1_short_set_bool } - } + { \bool_new:c {l__acro_#1_short_set_bool} } + \acro_property_mark_set:nn {#1} {short} + } + +% #1: ID +% #2: property +\prg_new_conditional:Npnn \acro_property_if_set:nn #1#2 {T,F,TF} + { + \bool_if:cTF {l__acro_#1_#2_set_bool} + { \prg_return_true: } + { \prg_return_false: } } +% #1: ID +% #2: property +\cs_new_protected:Npn \acro_property_mark_set:nn #1#2 + { \bool_set_true:c { l__acro_#1_#2_set_bool } } +\cs_generate_variant:Nn \acro_property_mark_set:nn {V} + % -------------------------------------------------------------------------- % the internal property selection functions for \DeclareAcronym: -\prop_new:N \g__acro_properties_prop \cs_new_protected:Npn \acro_for_properties_do:n { \prop_map_inline:Nn \g__acro_properties_prop } @@ -3667,14 +3653,14 @@ \cs_new_protected:Npn \acro_declare_property_generic:nnn #1#2#3 { \prop_clear_new:c {l__acro_#1_prop} + \tl_clear_new:c {l__acro_#1_tl} \cs_new_protected:cpn {__acro_declare_#1:nn} ##1##2 {#3} \cs_generate_variant:cn {__acro_declare_#1:nn} {V} - % \bool_new:c {l__acro_ \l__acro_current_property_tl _#1_set_bool} \keys_define:nn {acro/declare-acronym} { #2 .code:n = - \use:c {__acro_declare_#1:Vn} \l__acro_current_property_tl {##1} - \bool_set_true:c {l__acro_ \l__acro_current_property_tl _#2_set_bool} + \use:c {__acro_declare_#1:Vn} \l__acro_current_id_str {##1} + \acro_property_mark_set:Vn \l__acro_current_id_str {#2} } \prop_gput:Nnn \g__acro_properties_prop {#2} {#1} } @@ -3696,13 +3682,12 @@ % #2: property name \cs_new_protected:Npn \acro_declare_property:nn #1#2 { \acro_declare_property:nnn {#1} {#2} {} } -\cs_generate_variant:Nn \acro_declare_property:nn { V } +\cs_generate_variant:Nn \acro_declare_property:nn {V} -\cs_new_protected:Npn \acro_declare_simple_property:n #1 +\cs_new_protected:Npn \acro_declare_property_simple:n #1 { \tl_set:Nn \l__acro_tmpa_tl {#1} \tl_replace_all:Nnn \l__acro_tmpa_tl {-} {_} - \tl_clear_new:c {l__acro_ \l__acro_tmpa_tl _tl} \acro_declare_property:Vn \l__acro_tmpa_tl {#1} } @@ -3754,42 +3739,42 @@ \acro_for_endings_do:n { \prop_put:cnn {l__acro_long_##1_form_prop} {#1} {false} - \bool_if:cF {l__acro_#1_long-##1_set_bool} + \acro_property_if_set:nnF {#1} {long-##1} { \prop_put:cnv {l__acro_long_##1_prop} {#1} {l__acro_default_long_##1_tl} } \prop_put:cnn {l__acro_foreign_##1_form_prop} {#1} {false} - \bool_if:cF {l__acro_#1_foreign-##1_set_bool} + \acro_property_if_set:nnF {#1} {foreign-##1} { \prop_put:cnv {l__acro_foreign_##1_prop} {#1} {l__acro_default_foreign_##1_tl} } } } -\acro_declare_simple_property:n {first-style} +\acro_declare_property_simple:n {first-style} % list: -\acro_declare_simple_property:n {list} +\acro_declare_property_simple:n {list} % defines `short-plural', `long-plural' and `long-plural-form' as well as the % options `plural-ending', `short-plural-ending' and `long-plural-ending': % \ProvideAcroEnding {plural} {s} {s} % short indefinite article: -\acro_declare_simple_property:n {short-indefinite} +\acro_declare_property_simple:n {short-indefinite} % long indefinite article: -\acro_declare_simple_property:n {long-indefinite} +\acro_declare_property_simple:n {long-indefinite} % pre long: -\acro_declare_simple_property:n {long-pre} +\acro_declare_property_simple:n {long-pre} % post long: -\acro_declare_simple_property:n {long-post} +\acro_declare_property_simple:n {long-post} % post: -\acro_declare_simple_property:n {post} +\acro_declare_property_simple:n {post} % sort: \acro_declare_property:nnn {sort} {sort} { - \bool_if:cF { l__acro_#1_index-sort_set_bool } + \acro_property_if_set:nnF {#1} {index-sort} { \prop_put:Nnn \l__acro_index_sort_prop {#1} {#2} } } @@ -3803,36 +3788,35 @@ \cs_set_protected:Npn \acro_alt_error:n #1 { - \bool_if:cF {l__acro_#1_alt_set_bool} + \acro_property_if_set:nnF {#1} {alt} { \acro_harmless_message:nn {no-alternative} {#1} } } % alt. indefinite article: -\acro_declare_simple_property:n {alt-indefinite} +\acro_declare_property_simple:n {alt-indefinite} % foreign: -\acro_declare_simple_property:n {foreign} +\acro_declare_property_simple:n {foreign} % foreign-lang: -\acro_declare_simple_property:n {foreign-lang} +\acro_declare_property_simple:n {foreign-lang} % format: -\acro_declare_simple_property:n {format} +\acro_declare_property_simple:n {format} % short format: \acro_declare_property_alias:nn {short-format} {format} % alt format: -\acro_declare_simple_property:n {alt-format} +\acro_declare_property_simple:n {alt-format} % long format: -\acro_declare_simple_property:n {long-format} +\acro_declare_property_simple:n {long-format} % first long format: -\acro_declare_simple_property:n {first-long-format} +\acro_declare_property_simple:n {first-long-format} % pdfstring -- currently needs to be done `by hand': -\prop_new:N \l__acro_pdfstring_short_prop \cs_new_protected:Npn \__acro_declare_pdfstring:nw #1#2/#3/#4 \acro_stop: { \__acro_property_check:nn {#1} {pdfstring} @@ -3850,17 +3834,17 @@ } } } -\cs_generate_variant:Nn \__acro_declare_pdfstring:nw { V } -\keys_define:nn { acro / declare-acronym } +\cs_generate_variant:Nn \__acro_declare_pdfstring:nw {V} + +\keys_define:nn {acro/declare-acronym} { pdfstring .code:n = - \__acro_declare_pdfstring:Vw \l__acro_current_property_tl #1 // \acro_stop: , + \__acro_declare_pdfstring:Vw \l__acro_current_id_str #1 // \acro_stop: } -\prop_new:N \l__acro_pdfstring_alt_prop \cs_new_protected:Npn \__acro_declare_pdfstring_alt:nw #1#2/#3/#4 \acro_stop: { - \__acro_property_check:nn {#1} { pdfstring-alt } + \__acro_property_check:nn {#1} {pdfstring-alt} \prop_put:Nnn \l__acro_pdfstring_alt_prop {#1} {#2} \acro_for_endings_do:n { @@ -3872,70 +3856,87 @@ { \prop_put:cnn {l__acro_pdfstring_alt_##1_prop} {#1} {#2#3} } } } -\cs_generate_variant:Nn \__acro_declare_pdfstring_alt:nw { V } -\keys_define:nn { acro / declare-acronym } +\cs_generate_variant:Nn \__acro_declare_pdfstring_alt:nw {V} + +\keys_define:nn {acro/declare-acronym} { pdfstring-alt .code:n = - \__acro_declare_pdfstring_alt:Vw \l__acro_current_property_tl #1 // \acro_stop: , + \__acro_declare_pdfstring_alt:Vw \l__acro_current_id_str #1 // \acro_stop: } % class: -\acro_declare_simple_property:n {class} +\acro_declare_property_simple:n {class} % extra information: -\acro_declare_simple_property:n {extra} +\acro_declare_property_simple:n {extra} % single appearances: -\acro_declare_simple_property:n {single} +\acro_declare_property_simple:n {single} % single format: -\acro_declare_simple_property:n {single-format} +\acro_declare_property_simple:n {single-format} % acc supp: \acro_declare_property:nn {acc_supp} {accsupp} % tooltip: -\acro_declare_simple_property:n {tooltip} +\acro_declare_property_simple:n {tooltip} -% citation -- currently needs to be done `by hand': -\prop_new:N \l__acro_citation_prop -\prop_new:N \l__acro_citation_pre_prop -\prop_new:N \l__acro_citation_post_prop +% before-citation: +\acro_declare_property_simple:n {before-citation} + +% after-citation: +\acro_declare_property_simple:n {after-citation} + +% citation -- this needs a bit more work: \cs_new_protected:Npn \__acro_declare_citation:nw #1#2[#3]#4[#5]#6#7 \acro_stop: { - % no options: #1: ID, #2: property, #3 is blank - % 1 option: #1: ID, #4: property, #3: option, #5 is blank + % no options: #1: ID, #2: property, #7 is blank + % 1 option: #1: ID, #4: property, #3: option, #5: \q_no_value % 2 options: #1: ID: #6: property, #3: first option, #5: second option - \tl_if_blank:nF { #2#4#6 } + \tl_if_blank:nTF {#7} { - \tl_if_empty:nTF {#3} - { \__acro_declare_citation_aux:nnnn {#1} { } { } {#2} } + \__acro_declare_citation_aux:nnnn {#1} + { \q_no_value } + { \q_no_value } + {#2} + } + { + \quark_if_no_value:nTF {#5} { - \tl_if_empty:nTF {#5} - { \__acro_declare_citation_aux:nnnn {#1} {#3} { } {#4} } - { \__acro_declare_citation_aux:nnnn {#1} {#3} {#5} {#6} } + \__acro_declare_citation_aux:nnnx {#1} + { \q_no_value } + {#3} + { \tl_head:n {#4} } } + { \__acro_declare_citation_aux:nnnn {#1} {#3} {#5} {#6} } } } -\cs_generate_variant:Nn \__acro_declare_citation:nw { V } +\cs_generate_variant:Nn \__acro_declare_citation:nw {V} -\keys_define:nn { acro / declare-acronym } +\keys_define:nn {acro/declare-acronym} { cite .code:n = \__acro_declare_citation:Vw - \l__acro_current_property_tl #1 [][] \scan_stop: \acro_stop: + \l__acro_current_id_str #1 [\q_no_value][\q_no_value] \scan_stop: \acro_stop: } - +\prop_gput:Nnn \g__acro_properties_prop {cite} {cite} + +% #1: ID +% #2: pre +% #3: post +% #4: citation key \cs_new_protected:Npn \__acro_declare_citation_aux:nnnn #1#2#3#4 { \__acro_property_check:nn {#1} {cite} \prop_put:Nnn \l__acro_citation_prop {#1} {#4} - \tl_if_empty:nF {#2} + \quark_if_no_value:nF {#2} { \prop_put:Nnn \l__acro_citation_pre_prop {#1} {#2} } - \tl_if_empty:nF {#3} + \quark_if_no_value:nF {#3} { \prop_put:Nnn \l__acro_citation_post_prop {#1} {#3} } } - +\cs_generate_variant:Nn \__acro_declare_citation_aux:nnnn {nnnx} + % TODO: % add index entries, by default \index{@} % index: overwrite default @ entry completely @@ -3949,13 +3950,13 @@ % TeX code after an acronym is typeset % index: -\acro_declare_simple_property:n {index} +\acro_declare_property_simple:n {index} % index-sort: -\acro_declare_simple_property:n {index-sort} +\acro_declare_property_simple:n {index-sort} % index-cmd: -\acro_declare_simple_property:n {index-cmd} +\acro_declare_property_simple:n {index-cmd} % -------------------------------------------------------------------------- % acronym macros: @@ -3976,13 +3977,16 @@ % -------------------------------------------------------------------------- % internal acronym declaring function: \cs_new_protected:Npn \acro_declare_acronym:nn #1#2 + { \acro_case_insensitive:Nnn \__acro_declare_acronym:nn {#1} {#2} } + +\cs_new_protected:Npn \__acro_declare_acronym:nn #1#2 { \seq_gput_right:Nn \g__acro_declared_acronyms_seq {#1} \bool_gset_true:N \g__acro_first_acronym_declared_bool - \tl_set:Nn \l__acro_current_property_tl {#1} + \str_set:Nn \l__acro_current_id_str {#1} \acro_for_properties_do:n - { \bool_new:c {l__acro_#1_##1_set_bool} } - \keys_set:nn { acro / declare-acronym } {#2} + { \bool_new:c {l__acro_ \l__acro_current_id_str _##1_set_bool} } + \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} @@ -3993,27 +3997,20 @@ { \bool_gset_true:c {g__acro_#1_in_list_bool} } \__acro_create_page_records:n {#1} \__acro_define_acronym_macro:n {#1} - \tl_clear:N \l__acro_current_property_tl - \bool_if:cF {l__acro_#1_short_set_bool} + \str_clear:N \l__acro_current_id_str + \acro_property_if_set:nnF {#1} {short} { \acro_serious_message:nnn {missing} {#1} {short} } - \bool_if:cF {l__acro_#1_long_set_bool} + \acro_property_if_set:nnF {#1} {long} { \acro_serious_message:nnn {missing} {#1} {long} } \__acro_log_acronym:n {#1} } -% -------------------------------------------------------------------------- -% the user command: -\NewDocumentCommand \DeclareAcronym {mm} - { \acro_declare_acronym:nn {#1} {#2} } - + % -------------------------------------------------------------------------- % print the list: % #1: list of classes % #2: list of excluded classes -\tl_new:N \l__acro_included_classes_tl -\tl_new:N \l__acro_excluded_classes_tl - -\keys_define:nn { acro / print-acronyms } +\keys_define:nn {acro/print-acronyms} { include-classes .tl_set:N = \l__acro_included_classes_tl , exclude-classes .tl_set:N = \l__acro_excluded_classes_tl , @@ -4032,7 +4029,8 @@ \cs_set:Npn \@noitemerr {} \tl_clear:N \l__acro_included_classes_tl \tl_clear:N \l__acro_excluded_classes_tl - \keys_set:nn { acro / print-acronyms } {#1} + \tl_if_blank:nF {#1} + { \keys_set:nn {acro/print-acronyms} {#1} } \__acro_aux_file_now:n { \acro@print@list } \bool_if:NT \l__acro_sort_bool { \acro_sort_prop:NN \l__acro_short_prop \l__acro_sort_prop } @@ -4050,9 +4048,6 @@ \group_end: } -\NewDocumentCommand \printacronyms { O{} } - { \acro_print_acronyms:n {#1} } - % -------------------------------------------------------------------------- % language support \RequirePackage {translations} @@ -4088,10 +4083,6 @@ } } -\NewDocumentCommand \DeclareAcroTranslation {mm} - { \acro_declare_translation:nn {#1} {#2} } -\@onlypreamble \DeclareAcroTranslation - % tokenlists using the translations: \tl_set:Nn \l__acro_list_name_tl { \GetTranslation {acronym-list-name} } \tl_set:Nn \l__acro_page_name_tl { \GetTranslation {acronym-page-name}\@\, } @@ -4101,478 +4092,27 @@ % -------------------------------------------------------------------------- % definition file: -% \tl_const:Nn \c_acro_definition_file_name_tl {acro} -% \tl_const:Nn \c_acro_definition_file_extension_tl {def} - -% \file_if_exist:nTF -% { \c_acro_definition_file_name_tl .\c_acro_definition_file_extension_tl } -% { -% \@onefilewithoptions -% {\c_acro_definition_file_name_tl} [] [] -% \c_acro_definition_file_extension_tl -% } -% { \acro_serious_message:n {definitions-missing} } - - -% -------------------------------------------------------------------------- -% first appearance styles: -\DeclareAcroFirstStyle {default} {inline} - { } - -\DeclareAcroFirstStyle {reversed} {inline} - { reversed = true } - -\DeclareAcroFirstStyle {short} {inline} - { - only-short = true , - brackets = false - } - -\DeclareAcroFirstStyle {long} {inline} - { - only-long = true , - brackets = false - } - -\DeclareAcroFirstStyle {square} {inline} - { brackets-type = [] } - -\DeclareAcroFirstStyle {plain} {inline} - { - brackets = false , - between = -- - } - -\DeclareAcroFirstStyle {plain-reversed} {inline} - { - brackets = false , - between = -- , - reversed = true - } - -\DeclareAcroFirstStyle {footnote} {note} - { } - -\DeclareAcroFirstStyle {footnote-reversed} {note} - { reversed = true } - -\DeclareAcroFirstStyle {sidenote} {note} - { note-command = \sidenote {#1} } - -\DeclareAcroFirstStyle {sidenote-reversed} {note} - { - note-command = \sidenote {#1} , - reversed = true - } - -\DeclareAcroFirstStyle {empty} {note} - { use-note = false } - -% -------------------------------------------------------------------------- -% extra info appearance styles: -\DeclareAcroExtraStyle {default} {inline} - { - brackets = false , - punct = true , - punct-symbol = . - } - -\DeclareAcroExtraStyle {plain} {inline} - { - brackets = false , - punct = true , - punct-symbol = - } - -\DeclareAcroExtraStyle {paren} {inline} - { - brackets = true , - punct = true , - punct-symbol = - } - -\DeclareAcroExtraStyle {bracket} {inline} - { - brackets = true , - punct = true , - punct-symbol = , - brackets-type = [] - } - -\DeclareAcroExtraStyle {comma} {inline} - { - punct = true, - punct-symbol = {,} , - brackets = false - } - -% -------------------------------------------------------------------------- -% page number appearance styles: -\DeclareAcroPageStyle {default} {inline} - { - punct = true , - punct-symbol = . - } - -\DeclareAcroPageStyle {plain} {inline} - { punct = false } - -\DeclareAcroPageStyle {comma} {inline} - { punct = true } - -\DeclareAcroPageStyle {paren} {inline} - { - brackets=true , - punct-symbol = ~ - } - -\DeclareAcroPageStyle {none} {inline} - { display = false } - -% -------------------------------------------------------------------------- -% list heading styles: -\DeclareAcroListHeading {part} {\part} -\DeclareAcroListHeading {part*} {\part*} -\DeclareAcroListHeading {chapter} {\chapter} -\DeclareAcroListHeading {chapter*} {\chapter*} -\DeclareAcroListHeading {addchap} {\addchap} -\DeclareAcroListHeading {section} {\section} -\DeclareAcroListHeading {section*} {\section*} -\DeclareAcroListHeading {addsec} {\addsec} -\DeclareAcroListHeading {subsection} {\subsection} -\DeclareAcroListHeading {subsection*} {\subsection*} -\DeclareAcroListHeading {subsubsection} {\subsubsection} -\DeclareAcroListHeading {subsubsection*} {\subsubsection*} -\DeclareAcroListHeading {none} {\use_none:n} - -% -------------------------------------------------------------------------- -% list styles: -\DeclareAcroListStyle {description} {list} - { } - -\DeclareAcroListStyle {toc} {list-of} - { } - -\DeclareAcroListStyle {lof} {list-of} - { style = lof } - -\DeclareAcroListStyle {tabular} {table} - { table = tabular } - -\DeclareAcroListStyle {longtable} {table} - { table = longtable } +\tl_const:Nn \c_acro_definition_file_name_tl {acro.definitions} +\tl_const:Nn \c_acro_definition_file_extension_tl {tex} -\DeclareAcroListStyle {extra-tabular} {extra-table} - { table = tabular } - -\DeclareAcroListStyle {extra-longtable} {extra-table} - { table = longtable } - -\DeclareAcroListStyle {extra-tabular-rev} {extra-table} - { - table = tabular , - reverse = true - } - -\DeclareAcroListStyle {extra-longtable-rev} {extra-table} - { - table = longtable , - reverse = true - } - -% -------------------------------------------------------------------------- -% register some tokens to be checked for: -\AcroRegisterTrailing . {dot} -\AcroRegisterTrailing - {dash} -\AcroRegisterTrailing \babelhyphen {babel-hyphen} - -\keys_set:nn {acro} { activate-trailing-tokens = dot } - -% -------------------------------------------------------------------------- -% the user commands -% automatic: -\NewAcroCommand \ac - { \acro_use:n {#1} } - -\NewAcroCommand \Ac - { - \acro_first_upper: - \acro_use:n {#1} - } - -\NewAcroCommand \iac - { - \acro_indefinite: - \acro_use:n {#1} - } - -\NewAcroCommand \Iac - { - \acro_first_upper: - \acro_indefinite: - \acro_use:n {#1} - } - -\NewAcroCommand \acp - { - \acro_plural: - \acro_use:n {#1} - } - -\NewAcroCommand \Acp - { - \acro_plural: - \acro_first_upper: - \acro_use:n {#1} - } - -\NewAcroCommand \acsingle - { - \acro_get:n {#1} - \acro_single:n {#1} - } - -\NewAcroCommand \Acsingle - { - \acro_get:n {#1} - \acro_first_upper: - \acro_single:n {#1} - } - -% short: -\NewAcroCommand \acs - { \acro_short:n {#1} } - -\NewAcroCommand \Acs - { - \acro_first_upper: - \acro_short:n {#1} - } - -\NewAcroCommand \iacs - { - \acro_indefinite: - \acro_short:n {#1} - } - -\NewAcroCommand \Iacs - { - \acro_first_upper: - \acro_indefinite: - \acro_short:n {#1} - } - -\NewAcroCommand \acsp - { - \acro_plural: - \acro_short:n {#1} - } - -\NewAcroCommand \Acsp - { - \acro_first_upper: - \acro_plural: - \acro_short:n {#1} - } - -% alt: -\NewAcroCommand \aca - { \acro_alt:n {#1} } - -\NewAcroCommand \Aca - { - \acro_first_upper: - \acro_alt:n {#1} - } - -\NewAcroCommand \iaca - { - \acro_indefinite: - \acro_alt:n {#1} - } - -\NewAcroCommand \Iaca - { - \acro_first_upper: - \acro_indefinite: - \acro_alt:n {#1} - } - -\NewAcroCommand \acap - { - \acro_plural: - \acro_alt:n {#1} - } - -\NewAcroCommand \Acap - { - \acro_first_upper: - \acro_plural: - \acro_alt:n {#1} - } - -% long: -\NewAcroCommand \acl - { \acro_long:n {#1} } - -\NewAcroCommand \Acl - { - \acro_first_upper: - \acro_long:n {#1} - } - -\NewAcroCommand \iacl - { - \acro_indefinite: - \acro_long:n {#1} - } - -\NewAcroCommand \Iacl - { - \acro_first_upper: - \acro_indefinite: - \acro_long:n {#1} - } - -\NewAcroCommand \aclp - { - \acro_plural: - \acro_long:n {#1} - } - -\NewAcroCommand \Aclp - { - \acro_plural: - \acro_first_upper: - \acro_long:n {#1} - } - -% first: -\NewAcroCommand \acf - { \acro_first:n {#1} } - -\NewAcroCommand \Acf - { - \acro_first_upper: - \acro_first:n {#1} - } - -\NewAcroCommand \iacf - { - \acro_indefinite: - \acro_first:n {#1} - } - -\NewAcroCommand \Iacf - { - \acro_first_upper: - \acro_indefinite: - \acro_first:n {#1} - } - -\NewAcroCommand \acfp +\file_if_exist:nTF + { \c_acro_definition_file_name_tl .\c_acro_definition_file_extension_tl } { - \acro_plural: - \acro_first:n {#1} - } - -\NewAcroCommand \Acfp - { - \acro_plural: - \acro_first_upper: - \acro_first:n {#1} - } - -% first-like: -\NewPseudoAcroCommand \acflike - { \acro_first_like:nn {#1} {#2} } - -\NewPseudoAcroCommand \iacflike - { - \acro_indefinite: - \acro_first_like:nn {#1} {#2} - } - -\NewPseudoAcroCommand \Iacflike - { - \acro_first_upper: - \acro_indefinite: - \acro_first_like:nn {#1} {#2} - } - -\NewPseudoAcroCommand \acfplike - { - \acro_plural: - \acro_first_like:nn {#1} {#2} - } - -% -------------------------------------------------------------------------- -% endings: -\ProvideAcroEnding {plural} {s} {s} - -% -------------------------------------------------------------------------- -% translations: -% list name -\DeclareAcroTranslation {acronym-list-name} - { - Fallback = Acronyms , - English = Acronyms , - French = Acronymes , - German = Abk\"urzungen , - Italian = Acronimi , - Portuguese = Acr\'onimos , - Spanish = Siglas , - Catalan = Sigles , - Turkish = K\i saltmalar - } - -% page name -\DeclareAcroTranslation {acronym-page-name} - { - Fallback = p. , - English = p. , - German = S. , - Portuguese = p. - } - -% pages name -\DeclareAcroTranslation {acronym-pages-name} - { - Fallback = pp. , - English = pp. , - German = S. , - Portuguese = pp. - } - -% following page -\DeclareAcroTranslation {acronym-next-page} - { - Fallback = f. , - English = f. , - German = f. , - Portuguese = s. - } - -% following pages -\DeclareAcroTranslation {acronym-next-pages} - { - Fallback = ff. , - English = ff. , - German = ff. , - Portuguese = ss. + \@onefilewithoptions + {\c_acro_definition_file_name_tl} [] [] + \c_acro_definition_file_extension_tl } + { \acro_serious_message:n {definitions-missing} } % -------------------------------------------------------------------------- % allow for a configuration file: -\tl_const:Nn \c_acro_config_file_name_tl {acro} -\tl_const:Nn \c_acro_config_file_extension_tl {cfg} \file_if_exist:nT - { \c_acro_config_file_name_tl .\c_acro_config_file_extension_tl } + { \l_acro_config_file_name_tl . \l_acro_config_file_extension_tl } { \@onefilewithoptions - {\c_acro_config_file_name_tl} [] [] - \c_acro_config_file_extension_tl + {\l_acro_config_file_name_tl} [] [] + \l_acro_config_file_extension_tl } \file_input_stop: -- cgit v1.2.3