\documentclass[11pt]{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\\\href{mailto:michal.h21@gmail.com}{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.

It looks up the Catalogue entry for each PKGNAME on CTAN (at
\url{https://ctan.org/xml/2.0/pkg/PKGNAME}), and convert relevant information
to a BibTeX entry.

By default, the url field in the output entry is the package's home
field value if that is specified in the Catalogue entry; if it isn't,
\url{https://ctan.org/pkg/PKGNAME is used}.

\section{Usage}


It can be used in the following way:


\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.


\section{Available options}

\begin{description}
  \item[-c,-\/-ctan] always use CTAN /pkg/ url instead of the package homepage 
  \item[-C,-\/-ctanpath] use the package's CTAN path as url (e.g.: /support/ctanbib)
  \item[-e,-\/-entrypoint] explicitly set the Bib\TeX\ entry type.
  \item[-h,-\/-help] print the help message.
  \item[-p,-\/-pkgname] wrap the package name in a \verb|\ctanbibpkgname| command.
  \item[-v,-\/-version] print the version info.
\end{description}


\section{Examples}

\begin{verbatim}
ctanbib latex  
\end{verbatim}


\noindent This invocation will print data in the Bib(La)\TeX\ format to the standard output:

\begin{verbatim}
@manual{latex,
  title = {The latex package},
  subtitle = {A TeX macro package that defines LaTeX},
  author = {{The LaTeX Team} and Lamport, Leslie},
  url = {http://www.latex-project.org/},
  urldate = {2021-06-26},
  date = {},
  version = {2021-06-01},
}
\end{verbatim}

\noindent The \texttt{--ctan} option:

\begin{verbatim}
ctanbib -c latex
\end{verbatim}

\noindent This produces a bib record that uses the CTAN package entry for the URL, 
instead of the original package URL.


\begin{verbatim}
@manual{latex,
  title = {The latex package},
  ...
  url = {https://ctan.org/pkg/latex},
  ...
}
\end{verbatim}

\noindent The \texttt{--ctanpath} option:

\begin{verbatim}
ctanbib -C biblatex
\end{verbatim}

\noindent This produces a bib record that uses the CTAN package tree location for the URL.

\begin{verbatim}
@manual{biblatex,
  ...
  url = {/macros/latex/contrib/biblatex},
  ...
}
\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}

\noindent The \texttt{--pkgname} option:

\begin{verbatim}
ctanbib -p latex
\end{verbatim}

\noindent Puts the package name into the \verb|\ctanbibpkgname| command, which can be
redefined by user to produce a special formatting of the name:

\begin{verbatim}
@preamble{ "\providecommand\ctanbibpkgname[1]{\textsl{#1}}" }
@manual{latex,
  title = {The \ctanbibpkgname{latex} package},
  ...
}
\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. Herbert Voss added the \verb|--CTAN| option.
Karl Berry and Boris Veytsman suggested addition of the \verb|--pkgname| option 
and leaving package names uncapitalized.

\newpage
\section{Changelog}

\begin{changelog}
  \change{2026-05-26}{Version 0.2e released}
  \change{2026-05-26}{Use repository address as URL if the home field is missing}
  \change{2026-05-26}{Rewrote the man page, thanks to Karl Berry}
  \change{2023-10-25}{Version 0.2d released}
  \change{2023-10-20}{Sort authors alphabetically}
  \change{2023-10-19}{Updated the \verb|--help| message}
  \change{2023-10-16}{Use larger font in the documentation}
  \change{2023-10-16}{Indent the Bib\TeX\ entry by two spaces}
  \change{2023-10-08}{Get date from the copyright field if we cannot retrieve it from version}
  \change{2023-09-18}{Version 0.2c released}
  \change{2023-09-14}{Renamed the \verb|--tugboat| option to \verb|--pkgname|}
  \change{2023-09-12}{Don't capitalize package names}
  \change{2023-09-12}{Added the \verb|--tugboat| option for creation of records suitable for the TUGboat journal}
  \change{2023-02-20}{Verson 0.2b released}
  \change{2023-02-20}{Use \verb|--ssl-no-revoke| option for Curl, to prevent SSL certificate errors}
  \change{2023-02-20}{Better handling of errors in package info downloading}
  \change{2023-02-20}{Fixed link to the author mail address}
  \change{2021-06-29}{Version 0.2a released}
  \change{2021-06-29}{Added the \verb|--ctanpath| option.}
  \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}
  \change{2019-09-21}{Try to find the author in full CTAN author list if the author cannot be found in the package info}
  \change{2019-09-16}{Use the CTAN API 2.0 to fetch the package info}
  \change{2019-05-04}{Version 0.1c released}
  \change{2019-05-04}{Use the \texttt{curl} command to download the package info}
  \change{2019-05-04}{Added information about the need to have the \texttt{curl} command installed}
  \change{2019-03-11}{Version 0.1b released}
  \change{2018-09-10}{Added support for institutional names}
  \change{2018-09-10}{Escape TeX commands in the title and subtitle}
  \change{2018-08-29}{Added man page}
  \change{2018-08-27}{Added --ctan option}
  \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}
