summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2021-02-17 22:08:25 +0000
committerKarl Berry <karl@freefriends.org>2021-02-17 22:08:25 +0000
commita2ba8a971f46c2c840a676b9b0815ada278b3edb (patch)
treef4587a5c6af211ac29b934995f7f6982c76a7973 /Master/texmf-dist/tex/latex
parentb852142166a7ba3bf497cb43d2755057487141b9 (diff)
langsci-affiliations (17feb21)
git-svn-id: svn://tug.org/texlive/trunk@57774 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r--Master/texmf-dist/tex/latex/langsci-affiliations/langsci-affiliations.sty305
1 files changed, 305 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/langsci-affiliations/langsci-affiliations.sty b/Master/texmf-dist/tex/latex/langsci-affiliations/langsci-affiliations.sty
new file mode 100644
index 00000000000..a1f37dba663
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/langsci-affiliations/langsci-affiliations.sty
@@ -0,0 +1,305 @@
+%%
+%% This is file `langsci-affiliations.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% langsci-affiliations.dtx (with options: `package')
+%% ------------------------------------------------------------------------------
+%%
+%% langsci-affiliations collects, orders, and outputs author-affiliation pairs.
+%% It makes use of data types from LaTeX3.
+%%
+%% The package is aimed to be helpful to class authors, i.e. those who design
+%% and maintain document templates in publishing houses, universities, etc. The
+%% package is probably of only limited use to document authors/end users.
+%%
+%% langsci-affiliations was developed at Language Science Press to help in the
+%% production of scientific texts in linguistics.
+%%
+%% Copyright (C) 2021 by Felix Kopecky, Language Science Press
+%%
+%% This work consists of the file langsci-affiliations.dtx
+%% and the derived files langsci-affiliations.ins,
+%% langsci-affiliations.pdf.
+%%
+%% It may be distributed and/or modified under the conditions of the
+%% LaTeX Project Public License (LPPL), either version 1.3c of this
+%% license or (at your option) any later version. The latest version
+%% of this license is at <http://www.latex-project.org/lppl.txt>.
+%%
+%% This work is ``maintained'' (per LPPL maintenance status) by
+%% Felix Kopecky <felix.kopecky@langsci-press.org>.
+%%
+%% The development version can be found at
+%%
+%% https://github.com/langsci/langsci-affiliations
+%%
+%% for those who are interested. Pull requests are welcome.
+%%
+%% Please report any bugs or feature requests to
+%%
+%% https://github.com/langsci/langsci-affiliations/issues
+%%
+%% ------------------------------------------------------------------------------
+
+
+\RequirePackage{xparse}
+\ProvidesExplPackage {langsci-affiliations}
+{2021-02-17} {1.0.0}
+{A LaTeX3 package to collect and order authors and affiliations}
+
+\NewDocumentCommand{\ResolveAffiliations}{ O{} +m }
+ {%
+ \group_begin:
+ \keys_set:nn { affiliations } { #1 }%
+ \exp_args:No \affiliations_resolve:n { #2 }%
+ \group_end:
+ }
+
+\NewDocumentCommand{\SetupAffiliations}{ m }
+ {%
+ \keys_set:nn { affiliations } { #1 }
+ }
+\keys_define:nn { affiliations }
+ {
+ mark~style .tl_set:N
+ = \l__affiliations_style_tl,
+ mark~style .initial:n
+ = { alphabetic },
+ output~affiliation .bool_set:N
+ = \l__affiliations_output_affiliation_bool,
+ output~affiliation .initial:n
+ = { true },
+ output~in~groups .bool_set:N
+ = \l__affiliations_output_grouped_bool,
+ output~in~groups .initial:n
+ = { true },
+ separator~between~two .tl_set:N
+ = \l__affiliations_separator_between_two_tl,
+ separator~between~two .initial:n
+ = {~\&~},
+ separator~between~multiple .tl_set:N
+ = \l__affiliations_separator_between_mult_tl,
+ separator~between~multiple .initial:n
+ = {,~},
+ separator~between~final~two .tl_set:N
+ = \l__affiliations_separator_between_last_two_tl,
+ separator~between~final~two .initial:n
+ = {~\&~},
+ separator~between~affiliations .tl_set:N
+ = \l__affiliations_afil_separator_tl,
+ separator~between~affiliations .initial:n
+ = {,},
+ output~authors~font .cs_set:Np
+ = \__affiliations_output_authors_font:,
+ output~authors~font .initial:n
+ = {\Large},
+ output~affiliation~font .cs_set:Np
+ = \__affiliations_output_affiliation_font:,
+ output~affiliation~font .initial:n
+ = {\normalsize},
+ input~names~separator .tl_set:N
+ = \l__affiliations_input_names_sep_tl,
+ input~names~separator .initial:n
+ = {~and~},
+ input~affiliation~separator .tl_set:N
+ = \l_affiliations_input_afil_sep_tl,
+ input~affiliation~separator .initial:n
+ = {;}
+ }
+
+\cs_generate_variant:Nn \prop_put:Nnn { Nxx }
+\cs_generate_variant:Nn \prop_put:Nnn { Nnx }
+\cs_generate_variant:Nn \seq_set_split:Nnn { NVn }
+\clist_new:N \l__affiliations_tmpa_clist
+\int_new:N \l__affiliations_tmpa_int
+\prop_new:N \l__affiliations_tmpa_prop
+\seq_new:N \l__affiliations_affiliations_seq
+\seq_new:N \l__affiliations_authors_seq
+\seq_new:N \l__affiliations_names_seq
+\seq_new:N \l__affiliations_tmpa_seq
+\seq_new:N \l__affiliations_tmpb_seq
+\tl_new:N \l__affiliations_tmpa_tl
+\tl_new:N \l__affiliations_tmpb_tl
+\prop_new:N \l__affiliations_output_prop
+\prop_new:N \l__affiliations_affiliations_prop
+\prop_const_from_keyval:Nn \l__affiliations_icons_prop
+ {
+ 0 = \char"2460, 1 = \char"2461, 2 = \char"2462, 3 = \char"2463,
+ 4 = \char"2464, 5 = \char"2465, 6 = \char"2466, 7 = \char"2467,
+ 8 = \char"2468, 9 = \char"2469, 10 = \char"246A, 11 = \char"246B,
+ 12 = \char"246C, 13 = \char"246D, 14 = \char"246E, 15 = \char"246F,
+ 16 = \char"2470, 17 = \char"2471, 18 = \char"2472, 19 = \char"2473
+ }
+\cs_new:Npn \__affiliations_resolve_affiliations: #1#2
+ {
+ \clist_clear:N \l__affiliations_tmpa_clist
+ \tl_if_empty:nTF {#2}
+ {
+ \prop_put:Nnn \l__affiliations_output_prop {#1} {}
+ }
+ {
+ \seq_set_split:NVn \l__affiliations_tmpa_seq
+ \l_affiliations_input_afil_sep_tl
+ { #2 }
+ \seq_map_inline:Nn \l__affiliations_tmpa_seq
+ {
+ \prop_get:NnNTF \l__affiliations_affiliations_prop
+ {##1}
+ \l__affiliations_tmpa_tl
+ {
+ \clist_put_right:NV \l__affiliations_tmpa_clist
+ \l__affiliations_tmpa_tl
+ }
+ {
+ %Not yet present
+ \clist_put_right:Nx \l__affiliations_tmpa_clist
+ {
+ \prop_count:N \l__affiliations_affiliations_prop
+ }
+ \prop_put:Nnx \l__affiliations_affiliations_prop {##1}
+ { \prop_count:N \l__affiliations_affiliations_prop }
+ }
+ }
+ \prop_put:NnV \l__affiliations_output_prop
+ {#1}
+ \l__affiliations_tmpa_clist
+ }
+ }
+\cs_new:Nn \__affiliations_output_affiliations:
+ {
+ \prop_map_inline:Nn \l__affiliations_affiliations_prop
+ {
+ \int_set:Nn \l__affiliations_tmpa_int { ##2 }
+ \str_case_e:nn { \l__affiliations_style_tl }
+ {
+ {alphabetic}
+ {
+ \textsuperscript{\int_to_alph:n{ \int_eval:n
+ { \l__affiliations_tmpa_int + 1 }
+ } }
+ }
+ {numeric}
+ { \textsuperscript{\int_eval:n {\l__affiliations_tmpa_int + 1} } }
+ {circled}
+ {
+ \prop_item:Nn \l__affiliations_icons_prop
+ {\l__affiliations_tmpa_int}
+ }
+ {none} { }
+ }
+ ##1 ~
+ }
+ }
+\cs_new:Npn \__affiliations_return_afil_text:n #1
+ {
+ \int_set:Nn \l__affiliations_tmpa_int { #1 }
+ \str_case_e:nn { \l__affiliations_style_tl }
+ {
+ {alphabetic}
+ {
+ \seq_put_right:Nx \l__affiliations_tmpb_seq
+ { \int_to_alph:n{ \int_eval:n {#1 + 1} } }
+ }
+ {numeric}
+ {
+ \seq_put_right:Nx \l__affiliations_tmpb_seq
+ { \int_eval:n {\l__affiliations_tmpa_int + 1} }
+ }
+ {circled}
+ {
+ \seq_put_right:Nx \l__affiliations_tmpb_seq
+ { \prop_item:Nn \l__affiliations_icons_prop
+ { \l__affiliations_tmpa_int} }
+ }
+ {none} { }
+ }
+ }
+
+\cs_new:Nn \__affiliations_output_authors:
+ {
+ \seq_clear:N \l__affiliations_tmpa_seq
+ \prop_map_inline:Nn \l__affiliations_output_prop
+ {
+ \seq_clear:N \l__affiliations_tmpb_seq
+ \clist_map_function:nN {##2} \__affiliations_return_afil_text:n
+ \tl_set:Nn \l__affiliations_tmpb_tl
+ {
+ \seq_use:Nn \l__affiliations_tmpb_seq
+ {\l__affiliations_afil_separator_tl}
+ }
+ \seq_put_right:Nx \l__affiliations_tmpa_seq
+ {
+ \tl_rescan:nn {} {##1}
+ \exp_not:N \textsuperscript{\tl_use:N \l__affiliations_tmpb_tl}
+ }
+ }
+ \seq_use:Nnnn \l__affiliations_tmpa_seq
+ {\l__affiliations_separator_between_two_tl}
+ {\l__affiliations_separator_between_mult_tl}
+ {\l__affiliations_separator_between_last_two_tl}
+ }
+
+\cs_new:Npn \affiliations_resolve:n #1
+ {
+ \seq_set_split:NVn \l__affiliations_names_seq
+ \l__affiliations_input_names_sep_tl
+ { #1 }
+ \seq_map_inline:Nn \l__affiliations_names_seq
+ {
+ \seq_clear_new:N \l__affiliations_names_tmp_seq
+ \seq_set_split:Nnn \l__affiliations_names_tmp_seq { \affiliation }
+ { ##1 }
+ \prop_put:Nxx \l__affiliations_tmpa_prop
+ { \seq_item:Nn \l__affiliations_names_tmp_seq {1} }
+ { \seq_item:Nn \l__affiliations_names_tmp_seq {2} }
+ }
+ \bool_if:NTF \l__affiliations_output_affiliation_bool
+ {
+ \bool_if:NTF \l__affiliations_output_grouped_bool
+ {
+ \prop_map_function:NN \l__affiliations_tmpa_prop
+ \__affiliations_resolve_affiliations:
+ \group_begin:
+ \__affiliations_output_authors_font:
+ \__affiliations_output_authors:
+ \group_end:\\[0.5ex]
+ \group_begin:
+ \__affiliations_output_affiliation_font:
+ \__affiliations_output_affiliations:
+ \group_end:
+ }
+ {
+ \prop_map_inline:Nn \l__affiliations_tmpa_prop
+ {
+ \__affiliations_output_authors_font:
+ \tl_rescan:nn {} {##1}\\[0.5ex]
+ \group_begin:
+ \__affiliations_output_affiliation_font:
+ \tl_rescan:nn {} {##2}
+ \group_end:
+ \medskip\\
+ }
+ }
+ }
+ {
+ \group_begin:
+ \__affiliations_output_authors_font:
+ \seq_clear:N \l__affiliations_tmpa_seq
+ \prop_map_inline:Nn \l__affiliations_tmpa_prop
+ {
+ \seq_put_right:Nx \l__affiliations_tmpa_seq
+ {\tl_rescan:nn {} {##1} }
+ }
+ \seq_use:Nnnn \l__affiliations_tmpa_seq
+ {\l__affiliations_separator_between_two_tl}
+ {\l__affiliations_separator_between_mult_tl}
+ {\l__affiliations_separator_between_last_two_tl}
+ \group_end:
+ }
+ }
+
+%%
+%%
+%% End of file `langsci-affiliations.sty'.