summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/doclicense/doclicense.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/doclicense/doclicense.dtx')
-rw-r--r--macros/latex/contrib/doclicense/doclicense.dtx838
1 files changed, 838 insertions, 0 deletions
diff --git a/macros/latex/contrib/doclicense/doclicense.dtx b/macros/latex/contrib/doclicense/doclicense.dtx
new file mode 100644
index 0000000000..df2b141bf1
--- /dev/null
+++ b/macros/latex/contrib/doclicense/doclicense.dtx
@@ -0,0 +1,838 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2015-2019 by Robin Schneider <ypid@riseup.net>
+%
+% 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 Robin Schneider.
+%
+% This work consists of the files doclicense.dtx and doclicense.ins
+% and the derived files doclicense.sty and doclicense.pdf.
+%
+% \fi
+%
+% \iffalse
+%<*driver>
+\ProvidesFile{doclicense.dtx}
+%</driver>
+%<package>%% See file 'doclicense.dtx' for copyright and license.
+%<package>\NeedsTeXFormat{LaTeX2e}[1998/12/01]
+%<package>\ProvidesPackage{doclicense}
+%<*package>
+ [2019/06/05 v1.10.0 Support for putting documents under a license]
+%</package>
+%
+%<*driver>
+\documentclass[english]{ltxdoc}
+\setlength{\parindent}{0pt}
+\newcommand{\PackageURL}{https://github.com/ypid/latex-packages/tree/master/doclicense}
+\newcommand{\PackageCTANURL}{https://www.ctan.org/pkg/doclicense}
+\newcommand{\PackageAuthor}{Robin Schneider}
+\newcommand{\PackageAuthorEmail}{ypid@riseup.net}
+\newcommand{\PackageName}{\PrintPackage{doclicense}}
+\newcommand{\PrintPackage}[1]{\textsf{#1}}
+\newcommand{\PrintOptionF}[1]{\emph{#1}} %% ^^A This macro is used for
+%% ^^A explaining any parameter when they first come up in the documentation.
+\newcommand{\DescribePara}[1]{\marginpar{\raggedleft\strut\MacroFont\string#1}}
+\usepackage[
+ hyphens,
+ obeyspaces,
+ spaces,
+]{url}
+\usepackage{
+ babel,
+ csquotes,
+ xcolor,
+ hyperxmp,
+ hypdoc,
+ nameref,
+ xspace,
+ eqlist,
+}
+%% ^^A https://tex.stackexchange.com/a/95893/32320
+\setlength\IndexMin{100pt}
+\usepackage[
+ hyphenation={RaggedRight},
+]{doclicense}
+\GetFileInfo{doclicense.dtx}
+\hypersetup{
+ pdftitle={A manual for \PackageName},
+ pdfauthor={\PackageAuthor{} <\PackageAuthorEmail>},
+ pdfsubject={\fileinfo},
+ baseurl={\PackageURL},
+ pdfkeywords={This document corresponds to \PackageName\nobreakspace\fileversion,
+ dated \filedate},
+}
+
+\title{The \PackageName{} package\thanks{This document
+corresponds to \PackageName\nobreakspace\fileversion, dated \filedate.}}
+\author{\PackageAuthor\\
+ \texttt{\href{mailto:\PackageAuthorEmail?subject=LaTeX package doclicense%
+ \&body=Dear Robin Schneider,}%
+ {\PackageAuthorEmail}%
+ }%
+}
+
+\EnableCrossrefs%
+\CodelineIndex%
+\RecordChanges%
+\begin{document}
+ \DocInput{doclicense.dtx}
+ \PrintChanges%
+ \PrintIndex%
+\end{document}
+%</driver>
+% \fi
+%
+% ^^A \CheckSum{0}
+% ^^A I use version control and so on which has much better checksums :)
+%
+% \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{0.07}{2015/02/05}{Initial version}
+% \changes{0.08}{2015/02/06}{Added support for CC-zero and CC-pd and small improvements}
+% \changes{0.09}{2015/02/07}{Added list of supported licenses to docu and added option imagemodifier.
+% Also renamed macro \cmd{\doclicenseLicense} to \cmd{\doclicenseThis}}
+% \changes{0.10}{2015/02/13}{Added support for hyperxmp}
+% \changes{1.0}{2015/03/30}{Removed space before quotes (Example: \enquote{CC } $\rightarrow$ \enquote{CC})}
+% \changes{1.1}{2015/04/06}{Added support for Creative Commons 4.0 and added \cmd{\doclicenseImageFileName}}
+% \changes{1.2}{2015/04/06}{Allow \cmd{\doclicenseModifier} to be used with hyperref. Fixed \cmd{\doclicenseIcon} macro, added missing image and wrote test framework. Added notes about how to add translations. Added Spanish translation.}
+% \changes{1.4.0}{2015/12/13}{Added \cmd{\doclicensePlainFullText} and \cmd{\doclicenseFullText} macros Thanks to \href{https://github.com/siefkenj}{siefkenj} for the help.}
+% \changes{1.4.1}{2016/04/10}{Translation fixes for: fr, en-gb. Included missing CC-by-nc-nd icon (US dollar).}
+% \changes{1.5.0}{2016/04/24}{Allow to change the way text is typeset by \cmd{\doclicenseThis}.}
+% \changes{1.6.0}{2017/10/07}{Added Russian and Italian translation. Added `imageposition` and `imagedistance` parameters.}
+% \changes{1.7.0}{2018/02/17}{Update Russian and Spanish translation. Fix issue with unescaped newline causing two spaces between license name and 'license' word.}
+% \changes{1.7.1}{2018/04/24}{Include .eps versions of the images to allow using `latex` with dvi output. Thanks to robertpetry for reporting.}
+% \changes{1.8.0}{2018/06/10}{Added Polish translation.}
+% \changes{1.9.0}{2019/04/07}{Added Catalan, Galician, Chinese and Portuguese translation. Detect and give hint when enquote macro is already defined. Fix LaTeX Error: Too deeply nested.}
+% \changes{1.10.0}{2019/06/05}{Added Brazilian translation. Update Chinese and Portuguese translation. Do not use enumitem for list label customization (beamer compatibility).}
+%
+%% ^^A nag warned about the center environment and it really messes up spacing.
+%
+% \DoNotIndex{\RequirePackage, \DeclareOption, \ProcessOptions}
+% \DoNotIndex{\PackageWarning, \MessageBreak}
+% \DoNotIndex{\DeclareRobustCommand, \newcommand, \renewcommand, \def, \edef}
+% \DoNotIndex{\DeclareStringOption, \ProcessLocalKeyvalOptions}
+% \DoNotIndex{\ProcessKeyvalOptions, \SetupKeyvalOptions, \DeclareBoolOption}
+% \DoNotIndex{\newenvironment}
+% \DoNotIndex{\if, \else, \fi, \ifcase, \or, \ifthenelse, \AND, \OR, \value, \relax}
+% \DoNotIndex{\loop, \repeat, \the, \ifnum}
+% \DoNotIndex{\equal, \boolean, \@currname, \newcounter, \setcounter}
+% \DoNotIndex{\stepcounter, \addtocounter}
+% \DoNotIndex{\endinput, \begin, \end}
+% \DoNotIndex{\not}
+%
+% \maketitle
+%
+% \phantomsection
+% \addcontentsline{toc}{section}{\abstractname}
+% \begin{abstract}
+% Support for putting documents under a license. \\
+% Information site on CTAN: \url{\PackageCTANURL} \\
+% Example on Stackexchange: \url{https://tex.stackexchange.com/a/226788/32320} \\
+% Fork me on GitHub: \url{\PackageURL} \end{abstract}
+%
+% \tableofcontents
+%
+% \section{Introduction}
+% The \PrintPackage{doclicense} package allows you to put your document under a
+% license and include a link to read about the license or include an icon or
+% image of the license. Currently, only \doclicenseLongType is supported but this
+% package is designed to handle all kinds of licenses. See \nameref{sec:contributing}.
+%
+% \section{Usage}
+% Just load the package(s) placing
+% \begin{quote}
+% |\usepackage{| \\
+% |% babel,| \\
+% |% hyperref,| \\
+% |% hyperxmp,| \\
+% | doclicense,| \\
+% |}|
+% \end{quote}
+% in the preamble of your \LaTeXe{} source file. This will select the default
+% license which is \doclicenseNameRef, currently. Please always set your
+% license explicitly as package options like so:
+%
+% \begin{quote}
+% |\usepackage{| \\
+% |% babel,| \\
+% |% hyperref,| \\
+% |% hyperxmp,| \\
+% |}| \\
+% |\usepackage[| \\
+% | type={CC},| \\
+% | modifier={by-sa},| \\
+% | version={3.0},| \\
+% |]{doclicense}|
+% \end{quote}
+%
+% This will explicitly set the license to \doclicenseNameRef.
+%
+% If the \PrintPackage{hyperxmp} package is loaded, then the options
+% \PrintOptionF{pdflicenseurl} and \PrintOptionF{pdfcopyright} will be set
+% by \PrintPackage{doclicense} to the corresponding values
+% (\enquote{\url{\doclicenseURL}} and \enquote{\doclicenseLongText{}}).
+%
+% \section{Package options}
+%
+% Sets the license type. \DescribePara{type}
+% Like in the previous example, the type can be
+% \enquote{CC} to cover all the \doclicenseLongType licenses.
+% Please make sure that the type is all uppercase. See the \nameref{sec:supported-licenses} section for a complete list.
+%
+% Allows to
+% select different subclasses of a license. In the
+% example it is \enquote{by-sa}.
+% Please make sure that the type is all lowercase. See the \nameref{sec:supported-licenses} section for a complete list.
+%
+% As \DescribePara{version} there can be more than one version of a license, the version can also be set.
+%
+% This package can output some texts like the long license name.
+% \DescribePara{lang}
+% Because of this, there needs to be a way to specify the language to use.
+% If this parameter is omitted, then this package will default to
+% \cmd{\languagename} which is normally set by packages like
+% \PrintPackage{babel} or \PrintPackage{polyglossia}.
+%
+% Supported languages:
+% ^^A Sorted alphabetically.
+% \begin{eqlist}
+% \item[Brazilian] Added by \href{https://github.com/iagows}{Iago}.
+% \item[Catalan] Added by \href{https://github.com/elancha98}{Ernesto Lanchares}.
+% \item[Chinese] Added by \href{https://github.com/sd44}{sd44}.
+% \item[English] Added by \href{https://github.com/ypid}{Robin Schneider}.
+% \item[French] Added by \href{https://github.com/ericguirbal}{\'Eric Guirbal}.
+% \item[Galician] Submitted by Email.
+% \item[German] Added by \href{https://github.com/ypid}{Robin Schneider}.
+% \item[Italian] Added by \href{https://github.com/rig8f}{Filippo Rigotto}.
+% \item[Polish] Added by \href{https://github.com/jsbien}{jsbien}.
+% \item[Portuguese] Added by \href{https://github.com/alexandre1985}{Daniel Alexandre Cerqueira Santos}.
+% \item[Russian] Added by \href{https://github.com/bergentroll}{Anton Karmanov}.
+% \item[Spanish] Added by \href{https://github.com/elsudano}{Carlos}. Updated by \href{https://github.com/IgnacioFDM}{IgnacioFDM}.
+%
+%
+%
+%
+% \end{eqlist}
+%
+% Image position for \cmd{\doclicenseThis}: right (default) or left.
+% \DescribePara{imageposition}
+%
+% Default image width for the license image.
+% \DescribePara{imagewidth}
+%
+% Distance between text and image in \cmd{\doclicenseThis}.
+% \DescribePara{imagedistance}
+
+% Select different variations of license images.
+% \DescribePara{imagemodifier}
+% For example, Creative Commons provides sometimes more than one image for one version.
+% See the \href{https://creativecommons.org/about/downloads}{download page}.
+% You will note that there are by-nc.eu and by-nc which only differ in the money unit.
+% By default the by-nc image would be used but you can change this with:
+% \begin{quote}
+% |\usepackage[| \\
+% | imagemodifier={-eu},| \\
+% |]{doclicense}|
+% \end{quote}
+%
+% Note that if French or German is set as language then \enquote{-eu} will be used as
+% default for this option.
+%
+% Currently supported are \enquote{-eu} and \enquote{-us}.
+%
+% This option allows you to specify
+% \DescribePara{hyphenation}
+% a macro name which is going to be expanded
+% in the minipage environment of \cmd{\doclicenseThis}.
+% That allows you to change the behaviour how \cmd{\doclicenseLongText} is
+% typeset. By default, this option is not enabled.
+%
+% One possible use case is to set the option to \enquote{RaggedRight}.
+% This will use the \cmd{\RaggedRight} macro provided by the
+% \PrintPackage{ragged2e} package\footnote{The \PrintPackage{ragged2e} package will be loaded when it is required.}) with the intention of limiting the number of
+% hyphenations while still allowing a hyphenation by typesetting
+% \cmd{\doclicenseLongText} as ragged text.
+%
+% The idea of using ragged text is that the \cmd{\doclicenseLongText} is
+% usually one or two full line and one half full line so avoiding hyphenations
+% might look better compared to justified text.
+%
+% \enquote{RaggedRight} is also the setting used for this documentation.
+% \cmd{\doclicenseThis} did not produce a hyphenation in case of this
+% documentation but \TeX{} did fill up the first text line to it’s full width
+% by adding additional space between words. This has been be avoided by setting
+% the following option for this document:
+%
+% \begin{quote}
+% |\usepackage[| \\
+% | hyphenation={RaggedRight},| \\
+% |]{doclicense}|
+% \end{quote}
+%
+% Another option which can make sense is the \cmd{\raggedright} macro which
+% more drastically limits the number of hyphenations. This can be set as shown
+% below:
+%
+% \begin{quote}
+% |\usepackage[| \\
+% | hyphenation={raggedright},| \\
+% |]{doclicense}|
+% \end{quote}
+%
+% \section{Macros}
+% \DescribeMacro{\doclicenseType}
+% Expands to the type as set in the package options. Example: \enquote{\doclicenseType{}}
+%
+% \DescribeMacro{\doclicenseLongType}
+% Same as \cmd{\doclicenseType} except that it expands to the long license
+% type. Example: \enquote{\doclicenseLongType{}}
+%
+% \DescribeMacro{\doclicenseModifier}
+% Expands to the modifier as set in the package options. Example: \enquote{\doclicenseModifier{}}
+%
+% \DescribeMacro{\doclicenseVersion}
+% Expands to the version as set in the package options. Example: \enquote{\doclicenseVersion{}}
+%
+% \DescribeMacro{\doclicenseURL}
+% Expands to the official URL about the license. Note that it expands to the
+% raw URL string without the use of \cmd{\href} or similar. If you want the
+% link to be clickable then you can use \cmd{\href} or \cmd{\url} from the
+% \PrintPackage{hyperref} package or just read on because the following macros
+% can also do this for your. Example:
+% \enquote{\doclicenseURL{}}
+%
+% \DescribeMacro{\doclicenseName}
+% Expands to the short name of the license. Example: \enquote{\doclicenseName{}}
+%
+% \DescribeMacro{\doclicenseLongName}
+% Expands to the long name of the license. Example: \enquote{\doclicenseLongName{}}
+%
+% \DescribeMacro{\doclicenseNameRef}
+% Same as \cmd{\doclicenseName} except that it links to the URL of the license.
+% Example: \enquote{\doclicenseNameRef{}}
+%
+% \DescribeMacro{\doclicenseLongNameRef}
+% Same as \cmd{\doclicenseLongName} except that it links to the URL of the
+% license. Example:
+% \enquote{\doclicenseLongNameRef{}}
+%
+% \DescribeMacro{\doclicenseText}
+% Expands to a localized text which states that this document is licensed under
+% the license. Example:
+% \enquote{\doclicenseText{}}
+%
+% \DescribeMacro{\doclicenseLongText}
+% Same as \cmd{\doclicenseText} except that it uses the long name of the license.
+% Example: \enquote{\doclicenseLongText{}}
+%
+% \DescribeMacro{\doclicensePlainFullText}
+% Verbatim prints the full license text.
+%
+% ^^A Don’t ask why I inserted that line break … (LaTeX made the \doclicensePlainFullText red)
+%
+% An example can be found in the \nameref{sec:plain_license_text} section.
+%
+% \DescribeMacro{\doclicensePlainFullTextFileName}
+% \hspace{2.5em}Expands to the file name which the \cmd{\doclicensePlainFullTextFileName} macro uses to \cmd{\input} the license text file.
+%
+% \DescribeMacro{\doclicenseFullText}
+% Nicely prints the full license text.
+%
+% ^^A Don’t ask why I inserted that line break … (LaTeX made the \doclicenseFullText red)
+%
+% An example can be found in the \nameref{sec:pretty_license_text} section.
+%
+% \DescribeMacro{\doclicenseFullTextFileName}
+% Expands to the file name which the \cmd{\doclicenseFullText} macro uses to \cmd{\input} the license text file.
+%
+%
+% \DescribeMacro{\doclicenseIcon}
+% Expands to a icon of the license. Example:
+% \enquote{\doclicenseIcon{}}. This macro is based on the
+% \PrintPackage{ccicons} package.
+%
+% \DescribeMacro{\doclicenseTypeIcon}
+% Expands to a icon of the license type. Example:
+% \enquote{\doclicenseTypeIcon{}}. This macro is based on the
+% \PrintPackage{ccicons} package.
+%
+% \DescribeMacro{\doclicenseImage}
+% This is kind of similar to \cmd{\doclicenseIcon} but it will typeset an
+% bigger pictogram of the license. Example:
+% \enquote{\doclicenseImage}
+%
+% Note that you can change the image size with the \oarg{imagewidth} parameter
+% like this:
+% \enquote{\doclicenseImage[imagewidth=2em]}
+%
+% \begin{quote}
+% |\doclicenseImage[imagewidth=2em]|
+% \end{quote}
+%
+% The images are bundled with the \PackageName{} package as vector graphics.
+%
+% \DescribeMacro{\doclicenseImageFileName}
+% This macro expands to the file name of the image which the
+% \cmd{\doclicenseImage} typesets. You can use this file name with
+% \cmd{\includegraphics} if you need more flexibility over how the image is
+% typeset.
+%
+% The current file name is: \enquote{\doclicenseImageFileName}
+%
+% You do not have to worry about the file path. Normally your \LaTeX{} environment
+% will find the image for you.
+%
+% \DescribeMacro{\doclicenseThis}
+% And last but not least there is the \cmd{\doclicenseThis} macro which will
+% typeset the \cmd{\doclicenseText} next to the \cmd{\doclicenseImage} in a
+% \enquote{minipage} environment. This will look like the following:
+%
+% \doclicenseThis
+%
+% \section{Supported licenses}
+% \label{sec:supported-licenses}
+% \subsection{CC (Creative commons)}
+%
+% \makeatletter
+% \begin{eqlist}
+% \item[zero@1.0] \@nameuse{doclicense@lang@lic@CC@zero@1.0}
+% \item[pd@1.0] \@nameuse{doclicense@lang@lic@CC@pd@1.0}
+% \item[by@3.0] \@nameuse{doclicense@lang@lic@CC@by@3.0}
+% \item[by-sa@3.0] \@nameuse{doclicense@lang@lic@CC@by-sa@3.0}
+% \item[by-nd@3.0] \@nameuse{doclicense@lang@lic@CC@by-nd@3.0}
+% \item[by-nc@3.0] \@nameuse{doclicense@lang@lic@CC@by-nc@3.0}
+% \item[by-nc-sa@3.0] \@nameuse{doclicense@lang@lic@CC@by-nc-sa@3.0}
+% \item[by-nc-nd@3.0] \@nameuse{doclicense@lang@lic@CC@by-nc-nd@3.0}
+% \item[by@4.0] \@nameuse{doclicense@lang@lic@CC@by@4.0}
+% \item[by-sa@4.0] \@nameuse{doclicense@lang@lic@CC@by-sa@4.0}
+% \item[by-nd@4.0] \@nameuse{doclicense@lang@lic@CC@by-nd@4.0}
+% \item[by-nc@4.0] \@nameuse{doclicense@lang@lic@CC@by-nc@4.0}
+% \item[by-nc-sa@4.0] \@nameuse{doclicense@lang@lic@CC@by-nc-sa@4.0}
+% \item[by-nc-nd@4.0] \@nameuse{doclicense@lang@lic@CC@by-nc-nd@4.0}
+% \end{eqlist}
+% \makeatother
+%
+% \section{Contributing}
+% \label{sec:contributing}
+% This package is being developed on GitHub: \url{\PackageURL}. When you want
+% to modify the .sty file, make sure that you make your changes in the .dtx
+% file instead, as the .sty file is automatically generated.
+%
+% In case you want to add a translation for your language then just copy the
+% file \path{doclicense-english.ldf} and replace the \enquote{english} in
+% the filename with your language code (same as the language code used by
+% \PrintPackage{babel}) and translate the file.
+% If there are multiple language
+% codes which should map to the same translation then have a look at the file
+% \path{doclicense-american.ldf}.
+%
+% When you are done and have tested your translation (modify and run the
+% \path{run_tests} script) then please send me the translated file(s) either
+% via Email or preferably by opening a pull request on GitHub so that I can
+% include them in the next release.
+%
+% \section{Plaintext license text}
+% \label{sec:plain_license_text}
+%
+% The following is an example output of the \cmd{\doclicensePlainFullText} macro.
+%
+% \doclicensePlainFullText
+%
+% \section{Pretty license text}
+% \label{sec:pretty_license_text}
+%
+% The following is an example output of the \cmd{\doclicenseFullText} macro.
+%
+% \doclicenseFullText
+%
+% \StopEventually{}
+%
+% \newpage
+% \section{Implementation}
+% \iffalse
+%<*package>
+% \fi
+% \subsection{Declaring the options}
+% \begin{macrocode}
+%% Parameters (((
+\RequirePackage{kvoptions}
+\DeclareStringOption[CC]{type}
+\DeclareStringOption[by-sa]{modifier}
+\DeclareStringOption{version}
+\DeclareStringOption{lang}
+\DeclareStringOption{imagemodifier}
+\DeclareStringOption[right]{imageposition}
+\DeclareStringOption[10em]{imagewidth}
+\DeclareStringOption[2em]{imagedistance}
+\DeclareStringOption{hyphenation}
+%% )))
+
+% \end{macrocode}
+% To test if all parameters are valid the macro |\ProcessLocalKeyvalOptions*|
+% is expanded to ensure this before leaving the preamble. This is the only
+% purpose for the |\ProcessLocalKeyvalOptions*| macro in this case.
+% \begin{macrocode}
+\ProcessLocalKeyvalOptions*
+
+% \end{macrocode}
+% \subsection{Dependencies}
+% \begin{macrocode}
+%% Dependencies (((
+\RequirePackage{xifthen}
+\RequirePackage{etoolbox} %% \ifcsdef
+\RequirePackage{xspace}
+\RequirePackage{verbatim}
+%% )))
+
+%% Custom enumerate list with adjusted labels
+%% that match the license text convetions
+\newenvironment{doclicense@enumerate}{%
+ \begin{enumerate}
+ \renewcommand{\labelenumi}{(\alph{enumi})}%
+ \renewcommand{\labelenumii}{(\arabic{enumii})}%
+ \renewcommand{\labelenumiii}{(\Alph{enumiii})}%
+ \renewcommand{\labelenumiv}{(\roman{enumiv})}%
+}{\end{enumerate}}
+
+\ifthenelse{
+ \equal{\doclicense@hyphenation}{}
+}{}{%
+ \RequirePackage{ragged2e}
+
+ \ifthenelse{\isnamedefined{\doclicense@hyphenation}}{}{%
+ \PackageError{doclicense}{Hyphenation macro not defined}
+ {The macro name given via the hyphenation option is not defined.}%
+ }
+}
+\AtEndPreamble{%
+ \@ifpackageloaded{csquotes}{
+ %% csquotes has already been loaded so we are fine.
+ }{
+ \ifcsdef{enquote}{
+ %% \enquote is defined but not by csquotes.
+ \@ifpackageloaded{biblatex}{
+ \PackageError{doclicense}{The enquote macro is defined by biblatex}
+ {This package assumes that the enquote macro is defined by the
+ csquotes package. Please load csquotes before you load biblatex so
+ that biblatex does not define enquote instead.}%
+ }{
+ \PackageError{doclicense}{The enquote macro is defined by unknown package}
+ {This package assumes that the enquote macro is defined by the
+ csquotes package. Please check why enquote is defined without
+ csquotes being loaded. Maybe try loading csquotes early so that it
+ can define the enquote macro instead.}%
+ }
+ }{
+ \RequirePackage{csquotes}
+ }
+ }
+ \@ifpackageloaded{ccicons}{}{\RequirePackage{ccicons}}
+ %% For \doclicenseIcon
+ \@ifpackageloaded{graphicx}{}{\RequirePackage{graphicx}}
+ %% For \doclicenseImage
+ \@ifpackageloaded{hyperref}{}{\RequirePackage{hyperref}}
+ \@ifpackageloaded{hyperxmp}{%
+ %% The following options are only defined when the hyperxmp package was loaded.
+ \hypersetup{
+ pdfcopyright = {\doclicenseLongText},
+ pdflicenseurl = {\doclicenseURL},
+ }
+ }{}
+}
+%% )))
+
+% \end{macrocode}
+% \subsection{Declare variables and macros}
+% \begin{macrocode}
+%% Declare variables (((
+\newcommand{\doclicense@baseUrlCC}{https://creativecommons.org}
+\newcommand{\doclicense@versionFallback}{}
+\newcommand{\doclicense@versionUsed}{}
+\newboolean{doclicense@licenseKnown}
+\newlength{\doclicense@hsize}
+\newcommand{\doclicense@longName}{%
+ \@nameuse{doclicense@lang@lic@\doclicense@type @\doclicense@modifier%
+ @\doclicense@versionUsed}%
+}
+\newcommand{\doclicense@icon}{%
+ \PackageError{doclicense}{Icon not defined}
+ {Please check the documentation of doclicense to see what you can do about it.}%
+}
+\newcommand{\doclicense@modifier@uppercase}{\texorpdfstring{%
+ \MakeUppercase{\doclicense@modifier}%
+ }{%
+ \doclicense@modifier}%
+}
+%% )))
+
+% \end{macrocode}
+% \subsection{User macros}
+% \begin{macrocode}
+%% User macros (((
+\newcommand{\doclicenseType}{\doclicense@type\xspace}
+\newcommand{\doclicenseLongType}{}
+\newcommand{\doclicenseModifier}{\doclicense@modifier@uppercase\xspace}
+\newcommand{\doclicenseVersion}{\doclicense@versionUsed\xspace}
+\newcommand{\doclicenseName}{%
+ \doclicense@type\nobreakspace\doclicense@modifier@uppercase\nobreakspace%
+ \doclicense@versionUsed\xspace%
+}
+\newcommand{\doclicenseNameRef}{\href{\doclicenseURL}{\doclicenseName}\xspace}
+\newcommand{\doclicenseLongName}{\doclicenseLongType\space%
+ \doclicense@longName\xspace}
+\newcommand{\doclicenseLongNameRef}{\href{\doclicenseURL}{\doclicenseLongName}}
+\newcommand{\doclicenseText}{%
+ \doclicense@lang@thisDoc\space
+ \href{\doclicenseURL}{\enquote{\doclicenseName{}}}%
+ \doclicense@lang@word@license.\xspace%
+}
+\newcommand{\doclicenseLongText}{%
+ \doclicense@lang@thisDoc\space
+ \href{\doclicenseURL}{\doclicenseLongType\space\enquote{\doclicense@longName}}%
+ \doclicense@lang@word@license.\xspace%
+}
+\newcommand{\doclicenseIcon}{\doclicense@icon\xspace}
+\newcommand{\doclicenseTypeIcon}{\doclicenseType}
+% \newcommand{\doclicenseModifierIcon}{} %% Not directly provided by ccicons.
+\newcommand{\doclicenseImageFileName}{%
+ doclicense-\doclicense@type-\doclicense@modifier\doclicense@imagemodifier}
+\newcommand{\doclicenseImage}[1][]{%
+ \setkeys{doclicense}{#1}
+ \href{\doclicenseURL}{%
+ \includegraphics[
+ width=\doclicense@imagewidth%
+ ]{\doclicenseImageFileName}%
+ }
+}
+\newcommand{\doclicensePlainFullTextFileName}{%
+ doclicense-\doclicense@type-\doclicense@modifier%
+ -\doclicense@versionUsed-plaintext
+}
+\newcommand{\doclicensePlainFullText}{%
+ \verbatiminput{\doclicensePlainFullTextFileName}
+}
+\newcommand{\doclicenseFullTextFileName}{%
+ doclicense-\doclicense@type-\doclicense@modifier-\doclicense@versionUsed-latex}
+\newcommand{\doclicenseFullText}{\input{\doclicenseFullTextFileName}}
+
+\newcommand{\doclicenseLicense}{\doclicenseThis} %% legacy support
+\newcommand{\doclicenseThis}{%
+ \setlength{\doclicense@hsize}{\textwidth-\doclicense@imagewidth-\doclicense@imagedistance}%
+ \ifthenelse{\equal{\doclicense@imageposition}{left}}{%
+ \begin{center}
+ \begin{minipage}{\doclicense@imagewidth}
+ \doclicenseImage%
+ \end{minipage}
+ \hfill
+ \begin{minipage}{\doclicense@hsize}
+ \ifthenelse{\isempty{\doclicense@hyphenation}}{}{%
+ \@nameuse{\doclicense@hyphenation}%
+ }%
+ \doclicenseLongText%
+ \end{minipage}
+ \end{center}
+ }{%
+ % \ifthenelse{\isnamedefined{iflandscape}}{%
+ % \iflandscape{%
+ % \setlength{\doclicense@hsize}{\doclicense@hsize-10em}%
+ % }{}%
+ % }{}%
+ % {%
+ \begin{center}
+ \begin{minipage}{\doclicense@hsize}
+ \ifthenelse{\isempty{\doclicense@hyphenation}}{}{%
+ \@nameuse{\doclicense@hyphenation}%
+ }%
+ \doclicenseLongText%
+ \end{minipage}
+ \hfill
+ \begin{minipage}{\doclicense@imagewidth}
+ \doclicenseImage%
+ \end{minipage}
+ \end{center}
+ % }
+ }
+}
+%% )))
+
+% \end{macrocode}
+% \subsection{Language selection}
+% The following lines include the ldf file. All language dependent things
+% should be stored and changed there. Note that one could also redefine
+% macros like \cmd{\doclicenseLongText} if necessary.
+% \begin{macrocode}
+%% Language support (((
+\ifthenelse{\equal{\doclicense@lang}{}}{%
+ \renewcommand{\doclicense@lang}{\languagename}}{}
+\IfFileExists{doclicense-\doclicense@lang.ldf}{%
+ \input{doclicense-\doclicense@lang.ldf}
+}{%
+ \PackageWarning{doclicense}{%
+ No language definition for \doclicense@lang found.
+ Please add one and submit a patch. Using English as fallback.}
+ \renewcommand{\doclicense@lang}{english}
+ \input{doclicense-\doclicense@lang.ldf}
+}
+\ifthenelse{\equal{\doclicense@imagemodifier}{-us}}{%
+ \@namedef{doclicense@imagemodifier}{}
+}{}
+
+%% )))
+
+% \end{macrocode}
+% \subsection{Internals}
+% \begin{macrocode}
+%% Set license (((
+\newcommand{\doclicense@setVersion}[1][]{%
+ \ifthenelse{\equal{#1}{}}{}{%
+ \renewcommand{\doclicense@versionFallback}{#1}
+ }
+ \ifthenelse{\equal{\doclicense@version}{}}{%
+ \renewcommand{\doclicense@versionUsed}{\doclicense@versionFallback}
+ }{%
+ \renewcommand{\doclicense@versionUsed}{\doclicense@version}
+ }
+}
+\newcommand{\doclicense@set}{%
+ %% CC (((
+ \ifthenelse{\equal{\doclicense@type}{CC}}{%
+ \renewcommand{\doclicenseLongType}{Creative Commons\xspace}
+ \renewcommand{\doclicenseTypeIcon}{\ccLogo\xspace}
+
+ \doclicense@setVersion[3.0]
+
+ %% Allow to predefine the following macros in ldf files.
+ \ifcsdef{doclicense@UrlLangPart}{}{%
+ \ifthenelse{\equal{\doclicense@lang@lic@CC@code}{}}{%
+ \edef\doclicense@UrlLangPart{}
+ }{%
+ \edef\doclicense@UrlLangPart{/deed.\doclicense@lang@lic@CC@code}
+ }
+ }
+ \ifcsdef{doclicenseURL}{}{%
+ \edef\doclicenseURL{%
+ \doclicense@baseUrlCC/%
+ licenses/%
+ \doclicense@modifier/%
+ \doclicense@versionUsed\doclicense@UrlLangPart%
+ }
+ }
+ \ifthenelse{\equal{\doclicense@modifier}{by}}{%
+ \renewcommand{\doclicense@icon}{\ccby}
+ \renewcommand{\doclicense@imagemodifier}{}
+ }{}
+ \ifthenelse{\equal{\doclicense@modifier}{by-sa}}{%
+ \renewcommand{\doclicense@icon}{\ccbysa}
+ \renewcommand{\doclicense@imagemodifier}{}
+ }{}
+ \ifthenelse{\equal{\doclicense@modifier}{by-nd}}{%
+ \renewcommand{\doclicense@icon}{\ccbynd}
+ \renewcommand{\doclicense@imagemodifier}{}
+ }{}
+ \ifthenelse{\equal{\doclicense@modifier}{by-nc}}{%
+ \renewcommand{\doclicense@icon}{\ccbync}
+ \ifthenelse{\equal{\doclicense@imagemodifier}{-eu}}{%
+ \renewcommand{\doclicense@icon}{\ccbynceu}
+ }{}
+ \ifthenelse{\equal{\doclicense@imagemodifier}{-jp}}{%
+ \renewcommand{\doclicense@icon}{\ccbyncjp}
+ }{}
+ \renewcommand{\doclicense@imagemodifier}{}
+ }{}
+ \ifthenelse{\equal{\doclicense@modifier}{by-nc-sa}}{
+ \renewcommand{\doclicense@icon}{\ccbyncsa}
+ \ifthenelse{\equal{\doclicense@imagemodifier}{-eu}}{%
+ \renewcommand{\doclicense@icon}{\ccbyncsaeu}
+ }{}
+ \ifthenelse{\equal{\doclicense@imagemodifier}{-jp}}{%
+ \renewcommand{\doclicense@icon}{\ccbyncsajp}
+ }{}
+ }{}
+ \ifthenelse{\equal{\doclicense@modifier}{by-nc-nd}}{
+ \renewcommand{\doclicense@icon}{\ccbyncnd}
+ \ifthenelse{\equal{\doclicense@imagemodifier}{-eu}}{%
+ \renewcommand{\doclicense@icon}{\ccbyncndeu}
+ }{}
+ \ifthenelse{\equal{\doclicense@imagemodifier}{-jp}}{%
+ \renewcommand{\doclicense@icon}{\ccbyncndjp}
+ }{}
+ }{}
+ \ifthenelse{\equal{\doclicense@modifier}{zero}}{%
+ \renewcommand{\doclicense@icon}{\cczero}
+ \renewcommand{\doclicense@imagemodifier}{}
+ \doclicense@setVersion[1.0]
+ \edef\doclicenseURL{%
+ \doclicense@baseUrlCC/%
+ publicdomain/%
+ \doclicense@modifier/%
+ \doclicense@versionUsed\doclicense@UrlLangPart}
+ }{}
+ \ifthenelse{\equal{\doclicense@modifier}{pd}}{
+ \renewcommand{\doclicense@icon}{\ccpd}
+ \renewcommand{\doclicense@imagemodifier}{}
+ \doclicense@setVersion[1.0]
+ \edef\doclicenseURL{%
+ \doclicense@baseUrlCC/%
+ licenses/publicdomain/%
+ \doclicense@versionUsed\doclicense@UrlLangPart}
+ }{}
+
+ \ifcsdef{doclicense@lang@lic@\doclicense@type%
+ @\doclicense@modifier @\doclicense@versionUsed}{}{%
+
+ \PackageError{doclicense}{License long name not defined}%
+ {%
+ Please check the documentation of doclicense
+ to see what you can do about it.%
+ }%
+ }
+
+ \setboolean{doclicense@licenseKnown}{true}
+ }{}%% )))
+ \ifthenelse{\not\boolean{doclicense@licenseKnown}}{%
+ \PackageError{doclicense}{License unknown}%
+ {%
+ Please check the documentation of doclicense
+ to see what you can do about it.%
+ }%
+ }{}%
+}
+%% )))
+
+\doclicense@set%
+% \end{macrocode}
+% That's it.
+% \begin{macrocode}
+\endinput
+% \end{macrocode}
+%
+% \iffalse
+%</package>
+% \fi
+%
+% \Finale
+\endinput