diff options
author | Karl Berry <karl@freefriends.org> | 2024-07-28 19:57:25 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2024-07-28 19:57:25 +0000 |
commit | 5ff04eab9ac69ddcda399570b3e2e0df59db7f5e (patch) | |
tree | 2db7da9d1f7f91a0519c7a81f958e0134f5e93db /Master/texmf-dist/source/latex | |
parent | f7419711082f24f6189f1dc56d0f3e13e9b3cd6d (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.dtx | 313 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/doibanner/doibanner.ins | 23 |
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 |