From a3dbcbcf3fb731c4edf0addd1d36c54dbc77c620 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 23 Sep 2022 20:42:52 +0000 Subject: citation-style-language (23sep22) git-svn-id: svn://tug.org/texlive/trunk@64484 c570f23f-e606-0410-a88d-b1316a301751 --- .../citation-style-language.sty | 63 ++++++++++++++-------- 1 file changed, 42 insertions(+), 21 deletions(-) (limited to 'Master/texmf-dist/tex/latex/citation-style-language') diff --git a/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language.sty b/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language.sty index bc4acd29e23..30aaefdf426 100644 --- a/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language.sty +++ b/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language.sty @@ -9,7 +9,7 @@ \RequirePackage{expl3} \RequirePackage{xparse} -\ProvidesExplPackage {citation-style-language} {2022-09-18} {v0.2.1} +\ProvidesExplPackage {citation-style-language} {2022-09-23} {v0.2.2} {Citation Style Language for LaTeX} \RequirePackage { l3keys2e } @@ -414,26 +414,25 @@ \sys_if_engine_luatex:TF { \bool_if:NTF \l__csl_engine_initialized_bool - { \lua_now:n { csl.bibliography() } } + { + \__csl_collect_bibliography:n { \lua_now:n { csl.bibliography() } } + % \tl_show:N \g__csl_bibliography_tl + \tl_use:N \g__csl_bibliography_tl + } { \msg_warning:nnn { citation-style-language } { bibliography / empty } } } { \tl_if_empty:NTF \g__csl_bibliography_tl { \msg_warning:nnn { citation-style-language } { bibliography / empty } } - { \exp_args:NV \__csl_print_bibliography:n \g__csl_bibliography_tl } + { + \tl_use:N \g__csl_bibliography_tl + } } } \msg_new:nnn { citation-style-language } { bibliography / empty } { The~ bibliography~ is~ empty. } -\cs_new:Npn \__csl_print_bibliography:n #1 - { - \begin { thebibliography } - #1 - \end { thebibliography } - } - \tl_new:N \l__csl_style_tl \clist_new:N \l__csl_bib_resources_clist @@ -708,20 +707,39 @@ % In this procedure, the \cslcite command is processed and the contents % of `thebibliography` is stored into \g__csl_bibliography_tl. \cs_new:Npn \__csl_load_bbl: + { + % The \@input@ prints "No file ....bbl" in the .log file from which + % the latexmk decides to run $bibtex or not. + \__csl_collect_bibliography:n { \@input@ { \jobname .bbl } } + % \file_if_exist_input:nF { \jobname .bbl } + % { + % \msg_warning:nnx { citation-style-language } { file / non-exist} { \jobname .bbl } + % } + } + +% Collection the bibliography (as well as \cslsetup) into \g__csl_bibliography_setup_tl +\cs_new:Npn \__csl_collect_bibliography:n #1 { \group_begin: \RenewDocumentCommand \cslsetup { m } - { \tl_set:Nn \g__csl_bibliography_setup_tl {##1} } + { \tl_gset:Nn \g__csl_bibliography_setup_tl { \cslsetup { ##1 } } } \RenewDocumentEnvironment { thebibliography } { m +b } - { \tl_gset:Nn \g__csl_bibliography_tl { {##1} ##2 } } + { + \tl_gset:Nn \g__csl_bibliography_tl + { + \begin { thebibliography } {##1} + ##2 + \end { thebibliography } + } + } { } - % The \@input@ prints "No file ....bbl" in the .log file from which - % the latexmk decides to run $bibtex or not. - \@input@ { \jobname .bbl } - % \file_if_exist_input:nF { \jobname .bbl } - % { - % \msg_warning:nnx { citation-style-language } { file / non-exist} { \jobname .bbl } - % } + % Perform the execution + #1 + \tl_if_empty:NF \g__csl_bibliography_setup_tl + { + \tl_gput_left:Nn \g__csl_bibliography_tl { \par } + \tl_gput_left:NV \g__csl_bibliography_tl \g__csl_bibliography_setup_tl + } \group_end: } @@ -745,8 +763,11 @@ { \clist_put_right:Nn \l__csl_bib_resources_clist {#2} } +% In earlier time, \bibdata{xxx.json} was used but this causes latexmk unable +% to find xxx.json.bib and it refuses to run the $bibtex procedure. +% John Collins suggests using a different command than \bibdata. \clist_new:N \g__csl_aux_bib_files_clist -\cs_set:Npn \bibdata #1 +\cs_new:Npn \csl@data #1 { \clist_gput_right:Nn \g__csl_aux_bib_files_clist {#1} } @@ -759,7 +780,7 @@ \cs_new:Npn \__csl_write_aux_bibdata:n #1 { \if@filesw - \iow_now:Nx \@auxout { \token_to_str:N \bibdata {#1} } + \iow_now:Nx \@auxout { \token_to_str:N \csl@data {#1} } \fi } -- cgit v1.2.3