diff options
Diffstat (limited to 'macros/latex/contrib/doclicense/doclicense.dtx')
-rw-r--r-- | macros/latex/contrib/doclicense/doclicense.dtx | 838 |
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 |