summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2018-08-24 22:24:44 +0000
committerKarl Berry <karl@freefriends.org>2018-08-24 22:24:44 +0000
commit7976f25a5f69446c038495311c84616348963731 (patch)
treed9cfa29a4ca67bb942b9ebf0bbe2e628db844ffa /Master
parent9dec02fb03afe114f68ce75e31f6c5f8ee0adcf8 (diff)
ctanbib (24aug18)
git-svn-id: svn://tug.org/texlive/trunk@48478 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
l---------Master/bin/aarch64-linux/ctanbib1
l---------Master/bin/amd64-freebsd/ctanbib1
l---------Master/bin/amd64-netbsd/ctanbib1
l---------Master/bin/armhf-linux/ctanbib1
l---------Master/bin/i386-cygwin/ctanbib1
l---------Master/bin/i386-freebsd/ctanbib1
l---------Master/bin/i386-linux/ctanbib1
l---------Master/bin/i386-netbsd/ctanbib1
l---------Master/bin/i386-solaris/ctanbib1
l---------Master/bin/sparc-solaris/ctanbib1
-rwxr-xr-xMaster/bin/win32/ctanbib.exebin0 -> 1536 bytes
l---------Master/bin/x86_64-cygwin/ctanbib1
l---------Master/bin/x86_64-darwin/ctanbib1
l---------Master/bin/x86_64-darwinlegacy/ctanbib1
l---------Master/bin/x86_64-linux/ctanbib1
l---------Master/bin/x86_64-linuxmusl/ctanbib1
l---------Master/bin/x86_64-solaris/ctanbib1
-rw-r--r--Master/texmf-dist/doc/support/ctanbib/README.md25
-rw-r--r--Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.pdfbin0 -> 30489 bytes
-rw-r--r--Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.tex72
-rwxr-xr-xMaster/texmf-dist/scripts/ctanbib/ctanbib139
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check3
-rwxr-xr-xMaster/tlpkg/libexec/ctan2tds1
-rw-r--r--Master/tlpkg/tlpsrc/collection-binextra.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/ctanbib.tlpsrc1
25 files changed, 257 insertions, 1 deletions
diff --git a/Master/bin/aarch64-linux/ctanbib b/Master/bin/aarch64-linux/ctanbib
new file mode 120000
index 00000000000..04302f54f16
--- /dev/null
+++ b/Master/bin/aarch64-linux/ctanbib
@@ -0,0 +1 @@
+../../texmf-dist/scripts/ctanbib/ctanbib \ No newline at end of file
diff --git a/Master/bin/amd64-freebsd/ctanbib b/Master/bin/amd64-freebsd/ctanbib
new file mode 120000
index 00000000000..04302f54f16
--- /dev/null
+++ b/Master/bin/amd64-freebsd/ctanbib
@@ -0,0 +1 @@
+../../texmf-dist/scripts/ctanbib/ctanbib \ No newline at end of file
diff --git a/Master/bin/amd64-netbsd/ctanbib b/Master/bin/amd64-netbsd/ctanbib
new file mode 120000
index 00000000000..04302f54f16
--- /dev/null
+++ b/Master/bin/amd64-netbsd/ctanbib
@@ -0,0 +1 @@
+../../texmf-dist/scripts/ctanbib/ctanbib \ No newline at end of file
diff --git a/Master/bin/armhf-linux/ctanbib b/Master/bin/armhf-linux/ctanbib
new file mode 120000
index 00000000000..04302f54f16
--- /dev/null
+++ b/Master/bin/armhf-linux/ctanbib
@@ -0,0 +1 @@
+../../texmf-dist/scripts/ctanbib/ctanbib \ No newline at end of file
diff --git a/Master/bin/i386-cygwin/ctanbib b/Master/bin/i386-cygwin/ctanbib
new file mode 120000
index 00000000000..04302f54f16
--- /dev/null
+++ b/Master/bin/i386-cygwin/ctanbib
@@ -0,0 +1 @@
+../../texmf-dist/scripts/ctanbib/ctanbib \ No newline at end of file
diff --git a/Master/bin/i386-freebsd/ctanbib b/Master/bin/i386-freebsd/ctanbib
new file mode 120000
index 00000000000..04302f54f16
--- /dev/null
+++ b/Master/bin/i386-freebsd/ctanbib
@@ -0,0 +1 @@
+../../texmf-dist/scripts/ctanbib/ctanbib \ No newline at end of file
diff --git a/Master/bin/i386-linux/ctanbib b/Master/bin/i386-linux/ctanbib
new file mode 120000
index 00000000000..04302f54f16
--- /dev/null
+++ b/Master/bin/i386-linux/ctanbib
@@ -0,0 +1 @@
+../../texmf-dist/scripts/ctanbib/ctanbib \ No newline at end of file
diff --git a/Master/bin/i386-netbsd/ctanbib b/Master/bin/i386-netbsd/ctanbib
new file mode 120000
index 00000000000..04302f54f16
--- /dev/null
+++ b/Master/bin/i386-netbsd/ctanbib
@@ -0,0 +1 @@
+../../texmf-dist/scripts/ctanbib/ctanbib \ No newline at end of file
diff --git a/Master/bin/i386-solaris/ctanbib b/Master/bin/i386-solaris/ctanbib
new file mode 120000
index 00000000000..04302f54f16
--- /dev/null
+++ b/Master/bin/i386-solaris/ctanbib
@@ -0,0 +1 @@
+../../texmf-dist/scripts/ctanbib/ctanbib \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/ctanbib b/Master/bin/sparc-solaris/ctanbib
new file mode 120000
index 00000000000..04302f54f16
--- /dev/null
+++ b/Master/bin/sparc-solaris/ctanbib
@@ -0,0 +1 @@
+../../texmf-dist/scripts/ctanbib/ctanbib \ No newline at end of file
diff --git a/Master/bin/win32/ctanbib.exe b/Master/bin/win32/ctanbib.exe
new file mode 100755
index 00000000000..5777d90a17a
--- /dev/null
+++ b/Master/bin/win32/ctanbib.exe
Binary files differ
diff --git a/Master/bin/x86_64-cygwin/ctanbib b/Master/bin/x86_64-cygwin/ctanbib
new file mode 120000
index 00000000000..04302f54f16
--- /dev/null
+++ b/Master/bin/x86_64-cygwin/ctanbib
@@ -0,0 +1 @@
+../../texmf-dist/scripts/ctanbib/ctanbib \ No newline at end of file
diff --git a/Master/bin/x86_64-darwin/ctanbib b/Master/bin/x86_64-darwin/ctanbib
new file mode 120000
index 00000000000..04302f54f16
--- /dev/null
+++ b/Master/bin/x86_64-darwin/ctanbib
@@ -0,0 +1 @@
+../../texmf-dist/scripts/ctanbib/ctanbib \ No newline at end of file
diff --git a/Master/bin/x86_64-darwinlegacy/ctanbib b/Master/bin/x86_64-darwinlegacy/ctanbib
new file mode 120000
index 00000000000..04302f54f16
--- /dev/null
+++ b/Master/bin/x86_64-darwinlegacy/ctanbib
@@ -0,0 +1 @@
+../../texmf-dist/scripts/ctanbib/ctanbib \ No newline at end of file
diff --git a/Master/bin/x86_64-linux/ctanbib b/Master/bin/x86_64-linux/ctanbib
new file mode 120000
index 00000000000..04302f54f16
--- /dev/null
+++ b/Master/bin/x86_64-linux/ctanbib
@@ -0,0 +1 @@
+../../texmf-dist/scripts/ctanbib/ctanbib \ No newline at end of file
diff --git a/Master/bin/x86_64-linuxmusl/ctanbib b/Master/bin/x86_64-linuxmusl/ctanbib
new file mode 120000
index 00000000000..04302f54f16
--- /dev/null
+++ b/Master/bin/x86_64-linuxmusl/ctanbib
@@ -0,0 +1 @@
+../../texmf-dist/scripts/ctanbib/ctanbib \ No newline at end of file
diff --git a/Master/bin/x86_64-solaris/ctanbib b/Master/bin/x86_64-solaris/ctanbib
new file mode 120000
index 00000000000..04302f54f16
--- /dev/null
+++ b/Master/bin/x86_64-solaris/ctanbib
@@ -0,0 +1 @@
+../../texmf-dist/scripts/ctanbib/ctanbib \ No newline at end of file
diff --git a/Master/texmf-dist/doc/support/ctanbib/README.md b/Master/texmf-dist/doc/support/ctanbib/README.md
new file mode 100644
index 00000000000..edd016e5619
--- /dev/null
+++ b/Master/texmf-dist/doc/support/ctanbib/README.md
@@ -0,0 +1,25 @@
+# The `ctanbib` package
+
+This script can generate BibTeX records for LaTeX packages hosted on CTAN.
+
+
+## Usage
+
+ ctanbib graphicx
+
+More details can be found on [TeX.sx](https://tex.stackexchange.com/a/200856/2891)
+
+
+Copyright: 2018 Michal Hoftich
+
+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 Michal Hoftich.
diff --git a/Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.pdf b/Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.pdf
new file mode 100644
index 00000000000..74fa918fa00
--- /dev/null
+++ b/Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.tex b/Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.tex
new file mode 100644
index 00000000000..3a6c3a77ee6
--- /dev/null
+++ b/Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.tex
@@ -0,0 +1,72 @@
+\documentclass{ltxdoc}
+\newcommand\package[1]{\texttt{#1}}
+\usepackage{longtable}
+\usepackage{tabularx}
+\newenvironment{changelog}{\longtable{@{} l p{30em}}}{\endlongtable}
+\newcommand\change[2]{#1 & #2\\}
+\title{The \texttt{ctanbib} package}
+\author{Michal Hoftich\\\url{michal.h21@gmail.com}}
+\date{\gitdate, version \gitversion}
+\usepackage{hyperref}
+\usepackage{fontspec}
+\setmainfont{TeX Gyre Schola}
+\setmonofont[Scale=MatchLowercase]{Inconsolatazi4}
+\usepackage{microtype}
+\begin{document}
+\maketitle
+
+\section{Introduction}
+This package provides script named \package{ctanbib} which can be used for retrieving of the bibliographic information for packages hosted on CTAN.
+
+\section{Usage}
+
+
+It can be used in the following way:
+
+
+\noindent\package{ctanbib $\langle$packagename$\rangle$ > filename.bib}
+
+\section{Example}
+
+\begin{verbatim}
+ctanbib latex
+\end{verbatim}
+
+\noindent This invocation will print data in the Bib\LaTeX\ format to the standard output:
+
+\begin{verbatim}
+@manual{latex,
+title = {The Latex package},
+subtitle = {A TeX macro package that defines LaTeX},
+author = {Lamport, Leslie and The LaTeX Team},
+url = {http://www.latex-project.org/},
+urldate = {2018-08-23},
+date = {2018-04-01},
+version = {PL 5}
+}
+\end{verbatim}
+
+\section{License}
+
+Permission is granted to copy, distribute and/or modify this software
+under the terms of the LaTeX Project Public License, version 1.3.
+
+\section{Acknowledgements}
+
+This package was created thanks to TeX.sx user
+Daniel\footnote{\url{https://tex.stackexchange.com/users/3751/daniel}}. Lukas
+C. Bossert had useful comments which led to update of the original script and
+it's eventual release on CTAN.
+
+\section{Changelog}
+
+\begin{changelog}
+ \change{2018-08-23}{Version 0.1 released.}
+ \change{2018-08-23}{Created documentation.}
+ \change{2018-08-21}{Rewrote the script to use the DOM api provided by LuaXML. This provides greater flexibility in the XML processing.}
+ \change{2018-08-20}{Fixed the script for the current XML format provided by CTAN.}
+ \change{2014-09-12}{Initial version of the script have been released in answer on TeX.sx\footnote{\url{https://tex.stackexchange.com/a/200856/2891}}.}
+\end{changelog}
+
+
+\end{document}
diff --git a/Master/texmf-dist/scripts/ctanbib/ctanbib b/Master/texmf-dist/scripts/ctanbib/ctanbib
new file mode 100755
index 00000000000..7f8ac74cb85
--- /dev/null
+++ b/Master/texmf-dist/scripts/ctanbib/ctanbib
@@ -0,0 +1,139 @@
+#!/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)
+--
+-- 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 Michal Hoftich
+
+if #arg < 1 or arg[1]=="--help" or arg[1]=="-h" then
+ print [[ctanbib - convert ctan package information to bibtex format
+ Usage:
+ texlua ctanbib <package name>
+
+ This command will bibtex entry to the terminal output
+ ]]
+ os.exit(1)
+elseif arg[1]=="--version" or arg[1]=="-v" then
+ print "ctanbib version v0.1a"
+ os.exit(1)
+end
+
+local pkgname = arg[1]
+local url = "https://www.ctan.org/xml/pkg/" .. pkgname
+
+-- change that for different title scheme
+local titleformat = "The %s package"
+
+local bibtexformat = [[
+@manual{$package,
+title = {$title},
+subtitle = {$subtitle},
+author = {$author},
+url = {$url},
+urldate = {$urldate},
+date = {$date},
+version = {$version}
+}
+]]
+
+local dom = require('luaxml-domobject')
+
+
+local load_xml = function(url)
+ local command = io.popen("wget -qO- ".. url,"r")
+
+ local info = command:read("*all")
+ command:close()
+
+ if string.len(info) == 0 then
+ return false
+ end
+ return dom.parse(info)
+end
+
+local get_authors = function(a)
+ local retrieved_authors = {}
+ for _, author in ipairs(a) do
+ local current = {}
+ current[#current+1] = author:get_attribute("familyname")
+ current[#current+1] = author:get_attribute("givenname")
+ table.insert(retrieved_authors, table.concat(current, ", "))
+ end
+ return table.concat(retrieved_authors," and ")
+end
+
+local get_title = function(record)
+ local title = record:query_selector("name")[1]
+ if title then
+ title = title:get_text()
+ title = title:gsub("^(.)", function(a) return unicode.utf8.upper(a) end)
+ else
+ title = pkgname
+ end
+ return string.format(titleformat, title)
+end
+
+
+local get_url = function(record)
+ local home = record:query_selector("home")[1]
+ if home then return home:get_attribute("href") end
+ return "http://www.ctan.org/pkg/"..pkgname
+end
+
+local get_caption = function(record)
+ local caption = record:query_selector("caption")[1]
+ if caption then return caption:get_text() end
+ return nil
+end
+
+local get_version = function(record)
+ local version = record:query_selector("version")[1]
+ if version then
+ return version:get_attribute("number"), version:get_attribute("date")
+ end
+end
+
+local bibtex_escape = function(a)
+ local a = a or ""
+ return a:gsub("([%$%{%}])", function(x) return '\\'..x end)
+end
+
+local compile = function(template, records)
+ return template:gsub("$([a-z]+)", function(a)
+ return bibtex_escape(records[a]) or ""
+ end)
+end
+
+local record = load_xml(url)
+
+if not record then
+ print("Cannot find entry for package "..pkgname)
+ os.exit(1)
+end
+
+-- root element is also saved, so we use this trick
+-- local record = entry.entry
+
+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)
+e.version, e.date = get_version(record)
+e.urldate = os.date("%Y-%m-%d")
+
+local result = compile(bibtexformat, e)
+
+print(result)
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index 1f5fa1f7465..a71d78e7469 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -191,7 +191,8 @@ my @TLP_working = qw(
cryptocode cryst
cs csbulletin cslatex csplain csquotes csquotes-de
css-colors cstypo csvsimple cstex
- ctan-o-mat ctan_chk ctanify ctanupload ctable ctablestack ctex ctex-faq
+ ctan-o-mat ctan_chk ctanbib ctanify ctanupload
+ ctable ctablestack ctex ctex-faq
cursolatex cuisine
currency currfile currvita curve curve2e curves
custom-bib cutwin cv cv4tw cweb-latex
diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds
index 14275fa3271..4c1d7bccab9 100755
--- a/Master/tlpkg/libexec/ctan2tds
+++ b/Master/tlpkg/libexec/ctan2tds
@@ -2901,6 +2901,7 @@ $standardttf = '\.ttf|\.TTC';
'convbkmk' => '\.rb$',
'crossrefware' => '\.pl$',
'ctan-o-mat' => 'ctan-o-mat$',
+ 'ctanbib' => 'ctanbib$',
'ctanify' => '^ctanify$',
'ctanupload' => '\.pl$',
'de-macro' => 'de-macro',
diff --git a/Master/tlpkg/tlpsrc/collection-binextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-binextra.tlpsrc
index 5a0e108d016..2f65fc52adb 100644
--- a/Master/tlpkg/tlpsrc/collection-binextra.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-binextra.tlpsrc
@@ -17,6 +17,7 @@ depend checklistings
depend chktex
depend ctan-o-mat
depend ctan_chk
+depend ctanbib
depend ctanify
depend ctanupload
depend ctie
diff --git a/Master/tlpkg/tlpsrc/ctanbib.tlpsrc b/Master/tlpkg/tlpsrc/ctanbib.tlpsrc
new file mode 100644
index 00000000000..dca338c719c
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/ctanbib.tlpsrc
@@ -0,0 +1 @@
+binpattern f bin/${ARCH}/${PKGNAME}