%% See file 'doclicense.dtx' for copyright and license. \NeedsTeXFormat{LaTeX2e}[1998/12/01] \ProvidesPackage{doclicense} [2015/02/06 v0.8 Set and print the license of a document] %% Dependencies {{{ \RequirePackage{kvoptions} \RequirePackage{xifthen} \RequirePackage{etoolbox} %% \ifcsdef \RequirePackage{xspace} \AtEndPreamble{% \@ifpackageloaded{csquotes}{}{\RequirePackage{csquotes}} \@ifpackageloaded{ccicons}{}{\RequirePackage{ccicons}} %% For \doclicenseIcon \@ifpackageloaded{graphicx}{}{\RequirePackage{graphicx}} %% For \doclicenseImage \@ifpackageloaded{hyperref}{}{\RequirePackage{hyperref}} } %% }}} %% Parameters {{{ \DeclareStringOption[CC]{type} \DeclareStringOption[by-sa]{modifier} \DeclareStringOption{version} \DeclareStringOption{lang} \DeclareStringOption[10em]{imagewidth} %% }}} \ProcessLocalKeyvalOptions* %% Declare variables {{{ \newcommand{\doclicense@baseUrlCC}{https://creativecommons.org} \newcommand{\doclicense@versionFallback}{} \newcommand{\doclicense@versionUsed}{} \newboolean{doclicense@licenseKnown} \newlength{\doclicense@hsize} \newcommand{\doclicense@longName}{% \csname doclicense@lang@lic@\doclicense@type @\doclicense@modifier @\doclicense@versionUsed\endcsname } \newcommand{\doclicense@icon}{% \PackageError{doclicense}{Icon not defined} {Please check the documentation of doclicense to see what you can do about it.}% } %% }}} %% User macros {{{ \newcommand{\doclicenseType}{\doclicense@type\xspace} \newcommand{\doclicenseLongType}{} \newcommand{\doclicenseModifier}{\MakeUppercase{\doclicense@modifier}\xspace} \newcommand{\doclicenseVersion}{\doclicense@versionUsed\xspace} \newcommand{\doclicenseName}{\doclicense@type~\doclicense@modifier~\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{\doclicenseImage}[1][]{% \setkeys{doclicense}{#1} \href{\doclicenseURL}{% \includegraphics[width=\doclicense@imagewidth]% {doclicense-\doclicense@type-\doclicense@modifier}% } } \newcommand{\doclicenseLicense}{ \setlength{\doclicense@hsize}{\textwidth-\doclicense@imagewidth-2em} \ifthenelse{\lengthtest{\hsize > \vsize}}{%% landscape \setlength{\doclicense@hsize}{\doclicense@hsize-10em} }{} \begin{center} \begin{minipage}{\doclicense@hsize} \doclicenseLongText% \end{minipage} \hfill \begin{minipage}{\doclicense@imagewidth} \doclicenseImage% \end{minipage} \end{center} } %% }}} %% 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 not found. Please add one and submit a patch. Using English as fallback.} \renewcommand{\doclicense@lang}{english} \input{doclicense-\doclicense@lang.ldf} } %% }}} %% 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} \ifthenelse{\equal{\doclicense@lang@lic@CC@code}{}}{% \edef\doclicense@UrlLangPart{} }{% \edef\doclicense@UrlLangPart{/\doclicense@lang@lic@CC@code} } \doclicense@setVersion[3.0] \edef\doclicenseURL{% \doclicense@baseUrlCC/% licenses/% \doclicense@modifier/% \doclicense@versionUsed\doclicense@UrlLangPart} \ifthenelse{\equal{\doclicense@modifier}{by-sa}} {\renewcommand{\doclicense@icon}{\ccbysa}}{} \ifthenelse{\equal{\doclicense@modifier}{by-nd}} {\renewcommand{\doclicense@icon}{\ccbynd}}{} \ifthenelse{\equal{\doclicense@modifier}{by-nc}} {\renewcommand{\doclicense@icon}{\ccbync}}{} \ifthenelse{\equal{\doclicense@modifier}{by-nc-sa}} {\renewcommand{\doclicense@icon}{\ccbync}}{} \ifthenelse{\equal{\doclicense@modifier}{by-nc-nd}} {\renewcommand{\doclicense@icon}{\ccbync}}{} \ifthenelse{\equal{\doclicense@modifier}{zero}}{% \renewcommand{\doclicense@icon}{\cczero} \doclicense@setVersion[1.0] \edef\doclicenseURL{% \doclicense@baseUrlCC/% publicdomain/% \doclicense@modifier/% \doclicense@versionUsed\doclicense@UrlLangPart} }{} \ifthenelse{\equal{\doclicense@modifier}{pd}}{ \renewcommand{\doclicense@icon}{\ccpd} \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% \endinput %% %% End of file `doclicense.sty'.