summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2024-07-28 19:57:25 +0000
committerKarl Berry <karl@freefriends.org>2024-07-28 19:57:25 +0000
commit5ff04eab9ac69ddcda399570b3e2e0df59db7f5e (patch)
tree2db7da9d1f7f91a0519c7a81f958e0134f5e93db /Master/texmf-dist/source/latex
parentf7419711082f24f6189f1dc56d0f3e13e9b3cd6d (diff)
doibanner (28jul24)
git-svn-id: svn://tug.org/texlive/trunk@71919 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex')
-rw-r--r--Master/texmf-dist/source/latex/doibanner/doibanner.dtx313
-rw-r--r--Master/texmf-dist/source/latex/doibanner/doibanner.ins23
2 files changed, 209 insertions, 127 deletions
diff --git a/Master/texmf-dist/source/latex/doibanner/doibanner.dtx b/Master/texmf-dist/source/latex/doibanner/doibanner.dtx
index 099cfb61965..e004b53e313 100644
--- a/Master/texmf-dist/source/latex/doibanner/doibanner.dtx
+++ b/Master/texmf-dist/source/latex/doibanner/doibanner.dtx
@@ -14,12 +14,12 @@
%
% This work has the LPPL maintenance status `maintained'.
%
-% The current maintainer of this work is
-% Christian Schreinemachers.
+% The current maintainer of this work is Christian Schreinemachers.
%
% This work consists of the files
% doibanner.dtx
% doibanner.ins
+% README.md
% and the derived files
% doibanner.sty
% doibanner.pdf
@@ -30,11 +30,16 @@
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{doibanner}
-%<package> [2024-07-23 v0.2 Generate DOI banners and links]
+%<package> [2024-07-28 v0.3 Generate DOI banners and links]
%
%<*driver>
\documentclass[a4paper]{ltxdoc}
-\usepackage[T1]{fontenc}
+\usepackage[%
+ pdfusetitle,%
+ hyperindex=false,%
+ pdfsubject={LaTeX package documentation},%
+ pdfkeywords={doibanner, latex, documentation}%
+]{hyperref}
\usepackage{doibanner}
\usepackage[toc]{multitoc}
\usepackage{geometry}
@@ -42,10 +47,11 @@
\EnableCrossrefs
\CodelineIndex
\RecordChanges
-\DoNotIndex{\def,\definecolor,\adjustbox,\begin,\bfseries,\DeclareStringOption,
- \end,\endinput,\fill,\fontfamily,\href,\hspace,\IfBooleanTF,\Large,
- \NewDocumentCommand,\node,\ProcessKeyvalOptions,\RequirePackage,
- \SetupKeyvalOptions,\selectfont,\sfdefault,\vspace}
+\DoNotIndex{\adjustbox,\begin,\bfseries,\DeclareKeys,\definecolor,\end,\fill,
+ \fontfamily,\href,\IfBooleanTF,\Large,\NewDocumentCommand,\node,
+ \ProcessKeyOptions,\RequirePackage,\relax,\selectfont,\SetKeys,
+ \sfdefault,\tikzstyle}
+\setcounter{IndexColumns}{2}
\setlength{\IndexMin}{40ex}
\setlength{\columnseprule}{.4pt}
\addtolength{\oddsidemargin}{2cm}
@@ -55,31 +61,6 @@
\end{document}
%</driver>
% \fi
-% \CheckSum{60}
-% \CharacterTable
-% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-% Digits \0\1\2\3\4\5\6\7\8\9
-% Exclamation \! Double quote \" Hash (number) \#
-% Dollar \$ Percent \% Ampersand \&
-% Acute accent \' Left paren \( Right paren \)
-% Asterisk \* Plus \+ Comma \,
-% Minus \- Point \. Solidus \/
-% Colon \: Semicolon \; Less than \<
-% Equals \= Greater than \> Question mark \?
-% Commercial at \@ Left bracket \[ Backslash \\
-% Right bracket \] Circumflex \^ Underscore \_
-% Grave accent \` Left brace \{ Vertical bar \|
-% Right brace \} Tilde \~}
-%
-% \changes{v0.2}{2024-07-23}{Add documentation}
-% \changes{v0.2}{2024-07-23}{Convert into dtx}
-% \changes{v0.1}{2021/05/09}{Initial version}
-%
-% \GetFileInfo{doibanner.sty}
-%
-%
-% ^^A -----------------------------
%
% \pagestyle{headings}
%
@@ -90,6 +71,23 @@
%
% ^^A -----------------------------
%
+% \changes{v0.3}{2024-07-28}{%
+% Add package options \opt{width} and \opt{label},
+% fix mistakes,
+% improve documentation,
+% remove unnecessary dependencies}
+% \changes{v0.2}{2024-07-23}{%
+% Initial release,
+% convert into dtx,
+% add documentation,
+% add \opt{urlbase} package option}
+% \changes{v0.1}{2021/05/09}{Initial version}
+%
+% \GetFileInfo{doibanner.sty}
+%
+%
+% ^^A -----------------------------
+%
% \title{The \package{doibanner} package}
% \author{Christian Schreinemachers}
% \date{%
@@ -97,23 +95,18 @@
% \package{doibanner}~\fileversion
% ~(\href{https://codeberg.org/Cs137/doibanner/releases/tag/\fileversion}{source code})}%
% }
-% \hypersetup{%
-% pdfauthor={Christian Schreinemachers},%
-% pdftitle={The doibanner package},%
-% pdfsubject={LaTeX package documentation},%
-% pdfkeywords={doibanner, latex, documentation}%
-% }
% \maketitle
%
%
% ^^A -----------------------------
%
% \begin{abstract}
-% The \package{doibanner} package allows to generate a banner for a
-% declared DOI. It provides the \cs{doibanner} macro, which draws the
-% banner using \package{TikZ} and adds a link via \package{hyperref},
-% if desired. Its output might look as follows:
-% \par\medskip\centering{\doibanner*{xx.xxxx/yyyyyy.zzzzzzzz}}
+% The \package{doibanner} package allows to generate a banner for a declared
+% \href{https://www.doi.org/the-identifier/what-is-a-doi/}{digital object identifier}
+% (DOI). It provides the \cs{doibanner} macro, which draws the banner using
+% \package{TikZ} and adds a link via \package{hyperref}, if desired. Its
+% output can be scaled by \package{adjustbox} and it might look as follows:
+% \par\medskip\centering{\doibanner*[width=5cm]{xx.xxxx/yyyyyy.zzzzzzzz}}
% \end{abstract}
%
%
@@ -126,21 +119,27 @@
%
% \section{Introduction}
% ^^A
-% I published several documents on \href{https://zenodo.org/}{\textit{Zenodo}},
-% a general-purpose open repository. They offer to register a DOI for an
-% entry and download a banner of it. The latter can be added to contents
-% foreseen for the entry, or when referring to it.
+% I published several documents on \href{https://zenodo.org/}{\emph{Zenodo}},
+% a general-purpose open repository. They offer to register a
+% \href{https://www.doi.org/the-identifier/what-is-a-doi/}{digital object identifier}
+% (DOI) for an entry and download a banner of it. The latter can be added to
+% contents foreseen for the entry, or e.g. when referring to the entry in a
+% slide deck.
+%
+% Since I frequently use such banners in \LaTeX{} documents, I decided to
+% create a package that generates a similar banner and includes a link to the
+% corresponding URL. Additionally, this package eliminates the need to
+% manually download the banner and manage a file that might be used across
+% multiple documents.
%
-% In order to avoid the manual step of downloading a banner to add to
-% my material, I decided to create a \LaTeX{} package that draws a comparable
-% banner and includes a link to the corresponding URL. Due to the motivation,
-% the resulting banner is heavily inspired by the design applied in the
-% banner offered by \textit{Zenodo}. It is drawn using the \package{tikz}
-% package the link is included with \package{hyperref}.
+% Due to the motivation, the resulting banner is heavily inspired by the
+% design applied in the banner offered by \emph{Zenodo}. It is drawn using
+% the \package{tikz} package, a link to its URL can be included with
+% \package{hyperref}, and it can be scaled using \package{adjustbox}.
%
-% The application of this package is not limited to \textit{Zenodo}
-% depositions, it can be used to create a banner from a DOI string that
-% can be included in any \LaTeX{} document.
+% The application of this package is not limited to \emph{Zenodo}
+% depositions, it can be used to create a banner for a DOI that can
+% be included in any \LaTeX{} document.
%
%
% ^^A -----------------------------
@@ -159,43 +158,63 @@
%
% \subsection{Options}
% ^^A
+% In order to change the default behaviour of this package, declare one
+% or more of the options described in this subsection with your desired
+% value.
+%
+% \DescribeMacro{label=\meta{string}}
+% \default{DOI} specifies the label (left part) of the DOI banner generated
+% by \cs{doibanner}. The widths of the left and right part of the banner
+% are fixed and do currently not take the length of the text displayed on
+% top into account. Consequently, only a short expression should be declared
+% as value for the option \opt{label}.
+%
% \DescribeMacro{urlbase=\meta{string}}
-% \default{https://doi.org/} specifies the prefix to convert a DOI string
-% into an URL, for normal usecases this does not require any adjustment.
+% \default{https://doi.org/} specifies the base URL to convert a DOI string
+% into its URL, for normal use cases this does not require any adjustment.
+%
+% \DescribeMacro{width=\meta{dimen}}
+% \default{3.6cm} specifies the total width of the DOI banner generated by
+% \cs{doibanner}. The widths of the individual parts of the banner are
+% fixed and can currently not be changed.
%
%
% ^^A -----------------------------
%
% \subsection{Macros}
% ^^A
-% The following subsections list the content that can be generated with this package.
+% \subsubsection*{\cs{doibanner}\oarg{dimen}\marg{string}}
%
-% \subsubsection*{doibanner}
-% ^^A
-% \DescribeMacro{\doibanner\marg{string}}
-% A DOI banner can be created using the command \cs{doibanner}, which
-% requires a DOI string as argument.
-% An execiton of \cs{doibanner\{xx.xxxx/yyyyyy.zzzzzzzz\}}, generates the
-% following banner: \doibanner{xx.xxxx/yyyyyy.zzzzzzzz}
+% A DOI banner can be created using the command \cs{doibanner}, which requires
+% a DOI string as argument. Moreover, a \oarg{dimen} option can be defined.
+% The latter specifies the banner's width. If it is not declared, the value
+% of the \opt{width} package option is taken into account \default{3.6cm}.
+%
+% \DescribeMacro{\doibanner}
+% An execution of \cs{doibanner\{xx.xxxx/yyyyyy.zzzzzzzz\}} results in this
+% banner: \doibanner{xx.xxxx/yyyyyy.zzzzzzzz} If a banner with a width of
+% let's say 3\,cm is desired, it can be achieved by specifying the macro option
+% \opt{width} accordingly (\cs{doibanner}\opt{[width=3cm]\{xx.xxxx/yyyyyy.zzzzzzzz\}}):
+% \doibanner[width=3cm]{xx.xxxx/yyyyyy.zzzzzzzz}
%
-% \DescribeMacro{\doibanner*\marg{string}}
+% \DescribeMacro{\doibanner*}
% The starred version of the command leads to the same banner, but it does
% not contain a link to the DOI's URL:
% \doibanner*{xx.xxxx/yyyyyy.zzzzzzzz}
%
-% \subsubsection*{doiurl}
+% \subsubsection*{\cs{doiurl}\marg{string}}
% ^^A
-% \DescribeMacro{\doiurl\marg{string}}
+% \DescribeMacro{\doiurl}
% An URL is generated by appending the provided \emph{string} to the string
% defined as the package option \opt{urlbase}. The resulting link is labelled
% with the DOI string.
% A call of \cs{doiurl\{xx.xxxx/yyyyyy.zzzzzzzz\}} results in
% \doiurl{xx.xxxx/yyyyyy.zzzzzzzz}.
%
-% \DescribeMacro{\doiurl*\marg{string}}
+% \DescribeMacro{\doiurl*}
% The command is also available as starred version, which prints the full
% URL instead of the DOI string and does not include a link. Its output for
-% the aforementioned example will be as follows:
+% the aforementioned example is as follows:
% \doiurl*{xx.xxxx/yyyyyy.zzzzzzzz}.
%
%
@@ -212,14 +231,25 @@
%
% \MaybeStop{
%
+% \IndexPrologue{%
+% \section{Index}
+% Numbers written in italic refer to the page where the corresponding entry
+% is described; numbers underlined refer to the code line of the definition;
+% numbers in roman refer to the code lines where the entry is used.
+% }
% \PrintIndex
%
+% \GlossaryPrologue{%
+% \section{Change History}
+% The changes listed in this section aim to provide a brief overview of the
+% changes introduced into the package \package{doibanner}. The
+% \href{https://codeberg.org/Cs137/doibanner/}{package repository on Codeberg}
+% contains a
+% \href{https://codeberg.org/Cs137/doibanner/src/branch/main/CHANGELOG.md}{changelog file},
+% consult it to read a detailed description of the changes introduced into
+% this package.
+% }
% \PrintChanges
-% \par\noindent
-% The
-% \href{https://codeberg.org/Cs137/doibanner/}{package repository on Codeberg}
-% contains a detailed
-% \href{https://codeberg.org/Cs137/doibanner/src/branch/main/CHANGELOG.md}{changelog file}.
%
% }
%
@@ -232,11 +262,9 @@
% ^^A
% In order to use \package{doibanner}, the packages
% \href{https://www.ctan.org/pkg/adjustbox}{\package{adjustbox}},
-% \href{https://www.ctan.org/pkg/hyperref}{\package{hyperref}},
-% \href{https://www.ctan.org/pkg/kvoptions}{\package{kvoptions}},
-% \href{https://www.ctan.org/pkg/tikz}{\package{tkiz}}, and
-% \href{https://www.ctan.org/pkg/xparse}{\package{xparse}}
-% are required as dependencies.
+% \href{https://www.ctan.org/pkg/hyperref}{\package{hyperref}}, and
+% \href{https://www.ctan.org/pkg/tikz}{\package{tkiz}}
+% are required as package dependencies.
%
% \iffalse
%<*package>
@@ -244,9 +272,30 @@
% \begin{macrocode}
\RequirePackage{adjustbox}
\RequirePackage{hyperref}
-\RequirePackage{kvoptions}
\RequirePackage{tikz}
-\RequirePackage{xparse}
+% \end{macrocode}
+%
+%
+% ^^A -----------------------------
+%
+% \subsection{Constants}
+% ^^A
+% Definition of colours for the banner areas and labels, custom colour
+% definitions are currently not supported.
+% \begin{macrocode}
+\definecolor{leftcolor}{RGB}{82,82,82}
+\definecolor{rightcolor}{RGB}{6,119,183}
+%
+\definecolor{toptextcolor}{RGB}{235,235,235}
+\definecolor{bottomtextcolor}{RGB}{59,59,59}
+% \end{macrocode}
+% ^^A
+% Definition of font and colour for the banner's top and bottom text layers.
+% \begin{macrocode}
+\tikzstyle{toptextstyle} = [
+ font=\fontfamily{\sfdefault}\selectfont\bfseries\Large,toptextcolor]
+\tikzstyle{bottomtextstyle} = [
+ font=\fontfamily{\sfdefault}\selectfont\bfseries\Large,bottomtextcolor]
% \end{macrocode}
%
%
@@ -254,15 +303,31 @@
%
% \subsection{Options}
% ^^A
-% \begin{macro}{\doibanner@urlbase}
-% \changes{v0.2}{2024-07-23}{Add \opt{urlbase} option}
-% The package options and are internally available as \cs{doibanner@}\meta{option}.
+% The package options are internally available as \cs{@doibanner@}\meta{option}.
% \begin{macrocode}
-\SetupKeyvalOptions{family=doibanner,prefix=doibanner@}
-\DeclareStringOption[https://doi.org/]{urlbase}
-\ProcessKeyvalOptions{doibanner}
+\DeclareKeys[@doibanner]{
+ label.store = \@doibanner@label,
+ label.usage = load,
+ urlbase.store = \@doibanner@urlbase,
+ urlbase.usage = load,
+ width.store = \@doibanner@width,
+ width.usage = load,
+}
+% \end{macrocode}
+%
+% \subsubsection*{Assignement of default values}
+% \begin{macrocode}
+\SetKeys[@doibanner]{
+ label=DOI,
+ urlbase=https://doi.org/,
+ width=3.6cm,
+}
+% \end{macrocode}
+%
+% \subsubsection*{Processing of package options}
+% \begin{macrocode}
+\ProcessKeyOptions[@doibanner]\relax
% \end{macrocode}
-% \end{macro}
%
%
% ^^A -----------------------------
@@ -272,28 +337,29 @@
% \changes{v0.2}{2024-07-23}{Remove \cs{doi} macro}
%
% \begin{macro}{\doiurl}
-% \changes{v0.2}{2024-07-23}{Remove trailing whitespace}
-% The \meta{string} is appended to the option \opt{urlbase} to
-% generate an URL.
+% \changes{v0.2}{2024-07-23}{Remove trailing space}
+% \oarg{dimen}\\
+% The \meta{string} is appended to the package option \opt{urlbase} to
+% generate the URL.
% \begin{macrocode}
\NewDocumentCommand\doiurl{s m}{%
\IfBooleanTF#1
- {\doibanner@urlbase#2}%
- {\href{\doibanner@urlbase#2}{#2}}%
+ {\@doibanner@urlbase#2}%
+ {\href{\@doibanner@urlbase#2}{#2}}%
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\doibanner@draw}
-% Draw the DOI banner including its \meta{string}.
+% \begin{macro}{\@doibanner@draw}
+% \changes{v0.3}{2024-07-28}{Rename macro, remove top part}
+% \oarg{dimen}\marg{string}\\
+% Draw the DOI banner including its \opt{label} and \meta{string}, provide
+% \opt{width=\meta{dimen}} to define the banners width as well.
% \begin{macrocode}
-\definecolor{leftcolor}{RGB}{85,85,85}
-\definecolor{rightcolor}{RGB}{0,126,198}
-\definecolor{topcolor}{RGB}{59,59,59}
-\definecolor{bottomtextcolor}{RGB}{60,60,60}
-\NewDocumentCommand\doibanner@draw{ O{width=3.6cm} m}{%
+\NewDocumentCommand\@doibanner@draw{o m}{%
\adjustbox{#1}{%
\begin{tikzpicture}
+% left part
\fill [leftcolor,draw]
(1.5,0) --
++(0,.8) {[rounded corners=5] --
@@ -301,8 +367,9 @@
++(0,-.8)} --
cycle
{};
- \node[bottomtextcolor] at (.75,.35) {{\fontfamily{\sfdefault}\selectfont\bfseries \Large DOI}};
- \node[white] at (.75,.4) {{\fontfamily{\sfdefault}\selectfont\bfseries \Large DOI}};
+ \node[bottomtextstyle] at (.75,.35) {\@doibanner@label};
+ \node[toptextstyle] at (.75,.4) {\@doibanner@label};
+% right part
\fill [rightcolor,draw]
(1.5,0) {[rounded corners=5] --
++(6.5,0) --
@@ -310,38 +377,30 @@
++(-6.5,0) --
cycle
{};
- \node[bottomtextcolor] at (4.75,.35) {{\fontfamily{\sfdefault}\selectfont\bfseries \Large #2}};
- \node[white] at (4.75,.4) {{\fontfamily{\sfdefault}\selectfont\bfseries \Large #2}};
- \fill [topcolor,draw,opacity=0.1]
- (0,0) [rounded corners=5] --
- ++(8,0) --
- ++(0,.8) --
- ++(-8,0) --
- cycle
- {};
- \end{tikzpicture}
- \hspace{-4mm}
- \vspace{-4mm}
- }
+ \node[bottomtextstyle] at (4.75,.35) {#2};
+ \node[toptextstyle] at (4.75,.4) {#2};
+ \end{tikzpicture}%
+ }%
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\doibanner@draw}
-% \changes{v0.2}{2024-07-23}{Remove trailing whitespace}
-% Display the DOI banner with or without (*) a link to its URL.
+% \begin{macro}{\doibanner}
+% \changes{v0.3}{2024-07-28}{Add \opt{width} option}
+% \changes{v0.2}{2024-07-23}{Remove trailing space}
+% \oarg{dimen}\marg{string}\\
+% Display the DOI banner with or without (*) a link to its URL. Specify a
+% \oarg{dimen}, if you want a banner width deviating from the one defined
+% as \opt{width} package option.
% \begin{macrocode}
-\NewDocumentCommand\doibanner{s m}{%
+\NewDocumentCommand\doibanner{s O{width=\@doibanner@width} m}{%
\IfBooleanTF#1
- {\doibanner@draw{#2}}%
- {\href{\doibanner@urlbase#2}{\doibanner@draw{#2}}}%
+ {\@doibanner@draw[#2]{#3}}%
+ {\href{\@doibanner@urlbase#3}{\@doibanner@draw[#2]{#3}}}%
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macrocode}
-\endinput
-% \end{macrocode}
% \iffalse
%</package>
% \fi
diff --git a/Master/texmf-dist/source/latex/doibanner/doibanner.ins b/Master/texmf-dist/source/latex/doibanner/doibanner.ins
index 177fe7e6f61..97cfbb3fbb1 100644
--- a/Master/texmf-dist/source/latex/doibanner/doibanner.ins
+++ b/Master/texmf-dist/source/latex/doibanner/doibanner.ins
@@ -11,6 +11,29 @@
%% and version 1.3c or later is part of all distributions of
%% LaTeX version 2008-05-04 or later.
%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The current maintainer of this work is Christian Schreinemachers.
+%%
+%% This work consists of the files
+%% doibanner.dtx
+%% doibanner.ins
+%% README.md
+%% and the derived files
+%% doibanner.sty
+%% doibanner.pdf
+%%
+This work has the LPPL maintenance status `maintained'.
+
+The current maintainer of this work is Christian Schreinemachers.
+
+This work consists of the files
+ doibanner.dtx
+ doibanner.ins
+ README.md
+and the derived files
+ doibanner.sty
+ doibanner.pdf
\input docstrip.tex
\keepsilent