diff options
author | Karl Berry <karl@freefriends.org> | 2021-06-26 20:36:50 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-06-26 20:36:50 +0000 |
commit | 68fdb8a3001008c2e51dd154f92e0964935e77b3 (patch) | |
tree | 035848061b87e85a41c28716862ccca6ad8b0ce0 | |
parent | ad598f4c314e9692378b6534d4f73e72e23c6cf5 (diff) |
ctanbib (26jun21)
git-svn-id: svn://tug.org/texlive/trunk@59718 c570f23f-e606-0410-a88d-b1316a301751
-rwxr-xr-x | Build/source/texk/texlive/linked_scripts/ctanbib/ctanbib | 110 | ||||
-rwxr-xr-x | Build/source/texk/texlive/linked_scripts/ptex-fontmaps/kanji-config-updmap.pl | 16 | ||||
-rwxr-xr-x | Build/source/texk/texlive/linked_scripts/ptex-fontmaps/kanji-fontmap-creator.pl | 4 | ||||
-rw-r--r-- | Master/texmf-dist/doc/man/man1/ctanbib.man1.pdf | bin | 21346 -> 21346 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/support/ctanbib/README.md | 2 | ||||
-rw-r--r-- | Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.pdf | bin | 35575 -> 35307 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.tex | 62 | ||||
-rwxr-xr-x | Master/texmf-dist/scripts/ctanbib/ctanbib | 110 |
8 files changed, 175 insertions, 129 deletions
diff --git a/Build/source/texk/texlive/linked_scripts/ctanbib/ctanbib b/Build/source/texk/texlive/linked_scripts/ctanbib/ctanbib index a16976acdc4..f54e1691ca2 100755 --- a/Build/source/texk/texlive/linked_scripts/ctanbib/ctanbib +++ b/Build/source/texk/texlive/linked_scripts/ctanbib/ctanbib @@ -1,7 +1,7 @@ #!/usr/bin/env texlua kpse.set_program_name("luatex") -- ctanbib -- export ctan entries to bib format --- Copyright: Michal Hoftich <michal.h21@gmail.com> (2014-2018) +-- Copyright: Michal Hoftich <michal.h21@gmail.com> (2014-2021) -- -- This work may be distributed and/or modified under the -- conditions of the LaTeX Project Public License, either version 1.3 @@ -15,40 +15,48 @@ kpse.set_program_name("luatex") -- -- The Current Maintainer of this work is Michal Hoftich +local lapp = require "lapp-mk4" + local bibtype = "manual" local pkgurl = false -if #arg < 1 or arg[1]=="--help" or arg[1]=="-h" then - print([[ctanbib - convert ctan package information to bibtex format +local msg = [[ctanbib - convert ctan package information to bibtex format Usage: -ctanbib [options] <package name> +ctanbib [options] name1 name2 ... Available options: - -c,--ctan Use @ctan type instead of @manual and long url - -C,--CTAN Use @ctan type and short ... /pkg/url + -c,--ctan Use CTAN URL instead of the package homepage + -e,--entrytype (default manual) Change entry type -h,--help Print this message -v,--version Print version info - ]]) + ]] +local args = lapp(msg) +if args.help then + print(msg) os.exit(0) -elseif arg[1]=="--version" or arg[1]=="-v" then - print "ctanbib version 0.1e" +elseif args.version then + print "ctanbib version 0.2" os.exit(0) -elseif arg[1]=="--ctan" or arg[1]=="-c" then - table.remove(arg, 1) - bibtype = "ctan" -elseif arg[1]=="--CTAN" or arg[1]=="-C" then - table.remove(arg, 1) - bibtype = "ctan" +elseif args.ctan then pkgurl = true end -local pkgname = arg[1] +-- manual is set by default in --entrytype, we don't want it to override the --ctan option +if args.entrytype~="manual" then + bibtype = args.entrytype +end + + + + +local pkgname = args[1] if not pkgname then print "[ctanbib] Error: missing package name" + print(msg) os.exit(1) end -local url = "https://ctan.org/xml/2.0/pkg/" .. pkgname .. "?author-name=true" local authors_url = "https://ctan.org/xml/2.0/authors" +local license_url = "http://www.ctan.org/xml/2.0/licenses" -- change that for different title scheme local titleformat = "The %s package" @@ -61,7 +69,7 @@ author = {$author}, url = {$url}, urldate = {$urldate}, date = {$date}, -version = {$version} +version = {$version}, } ]] @@ -77,7 +85,7 @@ local load_xml = function(url) if string.len(info) == 0 then return false end - return dom.parse(info) + return dom.parse(info ), info end local bibtex_escape = function(a) @@ -149,8 +157,13 @@ local get_title = function(record) return string.format(titleformat, bibtex_escape(title)) end +local function verify_record(record) + -- verify that we found a package + if not record then return false end + return #record:query_selector("name") > 0 +end -local get_url = function(record) +local get_url = function(record,pkgname) local home = record:query_selector("home")[1] if home then return home:get_attribute("href") end return "https://ctan.org/pkg/"..pkgname @@ -169,12 +182,8 @@ local get_version = function(record) end end -local ctan_url = function(record) - local ctan = record:query_selector("ctan")[1] - -- some package don't contain the CTAN path - if not ctan then return get_url(record) end - local path = ctan:get_attribute("path") - return path +local ctan_url = function(record, pkgname) + return "https://ctan.org/pkg/"..pkgname end @@ -184,32 +193,35 @@ local compile = function(template, records) end) end -local record = load_xml(url) +for _, pkgname in ipairs(args) do + local url = "https://ctan.org/xml/2.0/pkg/" .. pkgname .. "?author-name=true" + local record, info = load_xml(url) -if not record then - print("Cannot find entry for package "..pkgname) - os.exit(1) -end + if not verify_record(record) then + print("% Cannot find entry for package "..pkgname) + break + end --- root element is also saved, so we use this trick --- local record = entry.entry + -- root element is also saved, so we use this trick + -- local record = entry.entry -local e = {} + local e = {} -e.author = get_authors(record:query_selector("authorref")) -e.package = pkgname -e.title = get_title(record) -e.subtitle = get_caption(record) -e.url = get_url(record) --- use the CTAN path as url for the CTAN type -if (bibtype == "ctan") and not pkgurl then - e.url = ctan_url(record) -end -e.version, e.date = get_version(record) -e.urldate = os.date("%Y-%m-%d") + e.author = get_authors(record:query_selector("authorref")) + e.package = pkgname + e.title = get_title(record) + e.subtitle = get_caption(record) + e.url = get_url(record, pkgname) + -- use the CTAN path as url for the CTAN type + if pkgurl then + e.url = ctan_url(record, pkgname) + end + e.version, e.date = get_version(record) + e.urldate = os.date("%Y-%m-%d") -local result = compile(bibtexformat, e) --- update the bibliography type -result = result:gsub("^@manual", "@" .. bibtype) + local result = compile(bibtexformat, e) + -- update the bibliography type + result = result:gsub("^@manual", "@" .. bibtype) -print(result) + print(result) +end diff --git a/Build/source/texk/texlive/linked_scripts/ptex-fontmaps/kanji-config-updmap.pl b/Build/source/texk/texlive/linked_scripts/ptex-fontmaps/kanji-config-updmap.pl index eee71cf2bba..bb385d1d1a4 100755 --- a/Build/source/texk/texlive/linked_scripts/ptex-fontmaps/kanji-config-updmap.pl +++ b/Build/source/texk/texlive/linked_scripts/ptex-fontmaps/kanji-config-updmap.pl @@ -1,12 +1,12 @@ #!/usr/bin/env perl # kanji-config-updmap: setup Japanese font embedding -# Version 20201227.0 +# Version 20210625.0 # # formerly known as updmap-setup-kanji # # Copyright 2004-2006 by KOBAYASHI R. Taizo for the shell version (updmap-otf) -# Copyright 2011-2020 by PREINING Norbert -# Copyright 2016-2020 by Japanese TeX Development Community +# Copyright 2011-2021 by PREINING Norbert +# Copyright 2016-2021 by Japanese TeX Development Community # # This file is licensed under GPL version 3 or any later version. # For copyright statements see end of file. @@ -22,7 +22,7 @@ use Getopt::Long qw(:config no_autoabbrev ignore_case_always); use strict; my $prg = "kanji-config-updmap"; -my $version = '20201227.0'; +my $version = '20210625.0'; my $updmap_real = "updmap"; my $updmap = $updmap_real; @@ -149,10 +149,10 @@ sub macosx_new { $macos_ver_major =~ s/^(\d+)\.(\d+).*/$1/; my $macos_ver_minor = $macos_ver; $macos_ver_minor =~ s/^(\d+)\.(\d+).*/$2/; - if ($macos_ver_major==10) { - if ($macos_ver_minor>=11) { - return 1; - } + if ($macos_ver_major==10 && $macos_ver_minor>=11) { + return 1; # macOS 10.11 (El Capitan) or later + } elsif ($macos_ver_major>=11) { + return 1; # macOS 11.0 (Big Sur) or later } } return 0; diff --git a/Build/source/texk/texlive/linked_scripts/ptex-fontmaps/kanji-fontmap-creator.pl b/Build/source/texk/texlive/linked_scripts/ptex-fontmaps/kanji-fontmap-creator.pl index bfad277bc51..87775b6aba1 100755 --- a/Build/source/texk/texlive/linked_scripts/ptex-fontmaps/kanji-fontmap-creator.pl +++ b/Build/source/texk/texlive/linked_scripts/ptex-fontmaps/kanji-fontmap-creator.pl @@ -2,7 +2,7 @@ # # kanji-fontmap-creator # (c) 2012-2014 Norbert Preining -# Version: 20201227.0 +# Version: 20210625.0 # Licenced under the GPLv2 or any higher version # # gui to create map files for (kanji-config-)updmap @@ -41,7 +41,7 @@ my $opt_help = 0; my $opt_version = 0; my $prg = "kanji-fontmap-creator"; -my $version = "20201227.0"; +my $version = "20210625.0"; # # global vars configuring operation diff --git a/Master/texmf-dist/doc/man/man1/ctanbib.man1.pdf b/Master/texmf-dist/doc/man/man1/ctanbib.man1.pdf Binary files differindex 7741af220b5..5d4342c0ca1 100644 --- a/Master/texmf-dist/doc/man/man1/ctanbib.man1.pdf +++ b/Master/texmf-dist/doc/man/man1/ctanbib.man1.pdf diff --git a/Master/texmf-dist/doc/support/ctanbib/README.md b/Master/texmf-dist/doc/support/ctanbib/README.md index 263cd82a1a1..a6147f125d7 100644 --- a/Master/texmf-dist/doc/support/ctanbib/README.md +++ b/Master/texmf-dist/doc/support/ctanbib/README.md @@ -10,7 +10,7 @@ This script can generate BibTeX records for LaTeX packages hosted on CTAN. More details can be found on [TeX.sx](https://tex.stackexchange.com/a/200856/2891) -Copyright: 2019 Michal Hoftich +Copyright: 2021 Michal Hoftich This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3 diff --git a/Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.pdf b/Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.pdf Binary files differindex ec58084d270..1fb514277c7 100644 --- a/Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.pdf +++ b/Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.pdf diff --git a/Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.tex b/Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.tex index 89b99279b51..c9d2a96abeb 100644 --- a/Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.tex +++ b/Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.tex @@ -25,7 +25,11 @@ This package provides script named \package{ctanbib} which can be used for retri It can be used in the following way: -\noindent\package{ctanbib [options] $\langle$packagename$\rangle$ > filename.bib} +\medskip + +\noindent\package{ctanbib [options] $\langle$packagename1$\rangle$ \ldots\ $\langle$packagenameX$\rangle$ > filename.bib} + +\medskip The \texttt{curl} utility needs to be installed on the user's system in order to support the package info download. @@ -33,10 +37,8 @@ The \texttt{curl} utility needs to be installed on the user's system in order to \section{Available options} \begin{description} - \item[-c,-\/-ctan] use the \texttt{@ctan} type instead of \texttt{@manual}. - The difference between the two is that the url field contains packages CTAN - path, instead of a link to the package. - \item[-C,-\/-CTAN] like \verb|--ctan| option, but use original url instead of CTAN path. + \item[-c,-\/-ctan] use the CTAN package entry as package URL instead of URL provided by the package. + \item[-e,-\/-entrypoint] explicitly set the Bib\TeX\ entry type. \item[-h,-\/-help] print the help message. \item[-v,-\/-version] print the version info. \end{description} @@ -55,31 +57,44 @@ ctanbib latex @manual{latex, title = {The Latex package}, subtitle = {A TeX macro package that defines LaTeX}, -author = {Lamport, Leslie and The LaTeX Team}, +author = {{The LaTeX Team} and Lamport, Leslie}, url = {http://www.latex-project.org/}, -urldate = {2018-08-23}, -date = {2018-04-01}, -version = {PL 5} +urldate = {2021-06-26}, +date = {}, +version = {2021-06-01}, } \end{verbatim} -The \texttt{--ctan} option: +\noindent The \texttt{--ctan} option: \begin{verbatim} -ctanbib -c hyperref +ctanbib -c latex \end{verbatim} -\noindent This produces a bib record with the \texttt{@ctan} type: +\noindent This produces a bib record that uses the CTAN package entry for the URL, +instead of the original package URL. + \begin{verbatim} -@ctan{hyperref, -title = {The Hyperref package}, -subtitle = {Extensive support for hypertext in LaTeX}, -author = {Rahtz, Sebastian and Oberdiek, Heiko}, -url = {/macros/latex/contrib/hyperref}, -urldate = {2018-08-27}, -date = {}, -version = {6.86b} +@manual{latex, +title = {The Latex package}, +... +url = {https://ctan.org/pkg/latex}, +... +} +\end{verbatim} + +\noindent The \texttt{--entrytype} option: + +\begin{verbatim} +ctanbib -e ctan latex +\end{verbatim} + +\noindent It selects different entry type for the record: + +\begin{verbatim} +@ctan{latex, +... } \end{verbatim} @@ -100,6 +115,13 @@ it's eventual release on CTAN. Herbert Voss added the \verb|--CTAN| option. \section{Changelog} \begin{changelog} + \change{2021-06-26}{Version 0.2 released} + \change{2021-06-26}{Removed the \verb|--CTAN| option, entry type can be set using \verb|--entrytype| and CTAN URL is requested using \verb|--ctan|} + \change{2021-06-26}{Added \verb|--entrytype| option for explicit specification of the Bib\TeX\ entry type} + \change{2021-06-26}{Fixed package name verification} + \change{2021-06-26}{Added support for multiple package names} + \change{2021-06-26}{Print \verb|https://www.ctan.org/pkg/<pkgname>| with the \texttt{-c} option} + \change{2021-06-20}{Version 0.1e released} \change{2021-06-20}{Added \verb|--CTAN| option, thanks to Herbert Voss} \change{2019-12-23}{Don't return non-zero exit codes for non-error runs} \change{2019-12-23}{Test for the packagename with the \texttt{-c} option} diff --git a/Master/texmf-dist/scripts/ctanbib/ctanbib b/Master/texmf-dist/scripts/ctanbib/ctanbib index a16976acdc4..f54e1691ca2 100755 --- a/Master/texmf-dist/scripts/ctanbib/ctanbib +++ b/Master/texmf-dist/scripts/ctanbib/ctanbib @@ -1,7 +1,7 @@ #!/usr/bin/env texlua kpse.set_program_name("luatex") -- ctanbib -- export ctan entries to bib format --- Copyright: Michal Hoftich <michal.h21@gmail.com> (2014-2018) +-- Copyright: Michal Hoftich <michal.h21@gmail.com> (2014-2021) -- -- This work may be distributed and/or modified under the -- conditions of the LaTeX Project Public License, either version 1.3 @@ -15,40 +15,48 @@ kpse.set_program_name("luatex") -- -- The Current Maintainer of this work is Michal Hoftich +local lapp = require "lapp-mk4" + local bibtype = "manual" local pkgurl = false -if #arg < 1 or arg[1]=="--help" or arg[1]=="-h" then - print([[ctanbib - convert ctan package information to bibtex format +local msg = [[ctanbib - convert ctan package information to bibtex format Usage: -ctanbib [options] <package name> +ctanbib [options] name1 name2 ... Available options: - -c,--ctan Use @ctan type instead of @manual and long url - -C,--CTAN Use @ctan type and short ... /pkg/url + -c,--ctan Use CTAN URL instead of the package homepage + -e,--entrytype (default manual) Change entry type -h,--help Print this message -v,--version Print version info - ]]) + ]] +local args = lapp(msg) +if args.help then + print(msg) os.exit(0) -elseif arg[1]=="--version" or arg[1]=="-v" then - print "ctanbib version 0.1e" +elseif args.version then + print "ctanbib version 0.2" os.exit(0) -elseif arg[1]=="--ctan" or arg[1]=="-c" then - table.remove(arg, 1) - bibtype = "ctan" -elseif arg[1]=="--CTAN" or arg[1]=="-C" then - table.remove(arg, 1) - bibtype = "ctan" +elseif args.ctan then pkgurl = true end -local pkgname = arg[1] +-- manual is set by default in --entrytype, we don't want it to override the --ctan option +if args.entrytype~="manual" then + bibtype = args.entrytype +end + + + + +local pkgname = args[1] if not pkgname then print "[ctanbib] Error: missing package name" + print(msg) os.exit(1) end -local url = "https://ctan.org/xml/2.0/pkg/" .. pkgname .. "?author-name=true" local authors_url = "https://ctan.org/xml/2.0/authors" +local license_url = "http://www.ctan.org/xml/2.0/licenses" -- change that for different title scheme local titleformat = "The %s package" @@ -61,7 +69,7 @@ author = {$author}, url = {$url}, urldate = {$urldate}, date = {$date}, -version = {$version} +version = {$version}, } ]] @@ -77,7 +85,7 @@ local load_xml = function(url) if string.len(info) == 0 then return false end - return dom.parse(info) + return dom.parse(info ), info end local bibtex_escape = function(a) @@ -149,8 +157,13 @@ local get_title = function(record) return string.format(titleformat, bibtex_escape(title)) end +local function verify_record(record) + -- verify that we found a package + if not record then return false end + return #record:query_selector("name") > 0 +end -local get_url = function(record) +local get_url = function(record,pkgname) local home = record:query_selector("home")[1] if home then return home:get_attribute("href") end return "https://ctan.org/pkg/"..pkgname @@ -169,12 +182,8 @@ local get_version = function(record) end end -local ctan_url = function(record) - local ctan = record:query_selector("ctan")[1] - -- some package don't contain the CTAN path - if not ctan then return get_url(record) end - local path = ctan:get_attribute("path") - return path +local ctan_url = function(record, pkgname) + return "https://ctan.org/pkg/"..pkgname end @@ -184,32 +193,35 @@ local compile = function(template, records) end) end -local record = load_xml(url) +for _, pkgname in ipairs(args) do + local url = "https://ctan.org/xml/2.0/pkg/" .. pkgname .. "?author-name=true" + local record, info = load_xml(url) -if not record then - print("Cannot find entry for package "..pkgname) - os.exit(1) -end + if not verify_record(record) then + print("% Cannot find entry for package "..pkgname) + break + end --- root element is also saved, so we use this trick --- local record = entry.entry + -- root element is also saved, so we use this trick + -- local record = entry.entry -local e = {} + local e = {} -e.author = get_authors(record:query_selector("authorref")) -e.package = pkgname -e.title = get_title(record) -e.subtitle = get_caption(record) -e.url = get_url(record) --- use the CTAN path as url for the CTAN type -if (bibtype == "ctan") and not pkgurl then - e.url = ctan_url(record) -end -e.version, e.date = get_version(record) -e.urldate = os.date("%Y-%m-%d") + e.author = get_authors(record:query_selector("authorref")) + e.package = pkgname + e.title = get_title(record) + e.subtitle = get_caption(record) + e.url = get_url(record, pkgname) + -- use the CTAN path as url for the CTAN type + if pkgurl then + e.url = ctan_url(record, pkgname) + end + e.version, e.date = get_version(record) + e.urldate = os.date("%Y-%m-%d") -local result = compile(bibtexformat, e) --- update the bibliography type -result = result:gsub("^@manual", "@" .. bibtype) + local result = compile(bibtexformat, e) + -- update the bibliography type + result = result:gsub("^@manual", "@" .. bibtype) -print(result) + print(result) +end |