diff options
author | Karl Berry <karl@freefriends.org> | 2022-12-31 20:41:57 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2022-12-31 20:41:57 +0000 |
commit | 8871a9e4f3b8df5593e27751a20cc18019c1fa0d (patch) | |
tree | 4b632550accfa04acea0e2d4600731acb8950d89 /Master/texmf-dist/source/latex/gfdl | |
parent | 74fd318e9b1ffca5a102c9a9922e3de890ce53ee (diff) |
gfdl (31dec22)
git-svn-id: svn://tug.org/texlive/trunk@65415 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/gfdl')
-rw-r--r-- | Master/texmf-dist/source/latex/gfdl/gfdl.dtx | 629 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/gfdl/gfdl.ins | 46 |
2 files changed, 675 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/gfdl/gfdl.dtx b/Master/texmf-dist/source/latex/gfdl/gfdl.dtx new file mode 100644 index 00000000000..464ba10f80e --- /dev/null +++ b/Master/texmf-dist/source/latex/gfdl/gfdl.dtx @@ -0,0 +1,629 @@ +% \iffalse meta-comment +% +% File: gfdl.dtx +% ------------------------------------------------------------- +% Package: gfdl +% Version: v0.1 (January 1, 2023) +% Author: निरंजन +% Description: For using GFDL in LaTeX. +% Repository: https://puszcza.gnu.org.ua/projects/gfdl-tex +% License: GPLv3+, GFDLv1.3+ +% ------------------------------------------------------------- +% +% The LaTeX package gfdl v0.1 +% Copyright © 2022, 2023 निरंजन +% +% This program is free software: you can redistribute it +% and/or modify it under the terms of the GNU General Public +% License as published by the Free Software Foundation, +% either version 3 of the License, or (at your option) any +% later version. +% +% This program is distributed in the hope that it will be +% useful, but WITHOUT ANY WARRANTY; without even the implied +% warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +% PURPOSE. See the GNU General Public License for more +% details. +% +% You should have received a copy of the GNU General Public +% License along with this program. If not, see +% <https://www.gnu.org/licenses/>. +% \fi +% \iffalse +%<*internal> +\iffalse +%</internal> +%<*readme> +------------------------------------------------------------- +Package: gfdl +Version: v0.1 (January 1, 2023) +Author: निरंजन +Description: For using GFDL in LaTeX. +Repository: https://puszcza.gnu.org.ua/projects/gfdl-tex +License: GPLv3+, GFDLv1.3+ +------------------------------------------------------------- +%</readme> +%<*internal> +\fi +%</internal> +%<*driver> +\documentclass{l3doc} +\usepackage{xcolor} +\usepackage{fontawesome5} +\usepackage{gfdl} +\usepackage{fontspec} +\usepackage{hyperref,hyperxmp} +\colorlet{myblue}{blue!60!black} +\colorlet{myred}{red!60!black} +\colorlet{mygreen}{green!60!black} +\hypersetup{% + unicode,% + colorlinks,% + urlcolor = {myblue},% + linkcolor = {myred},% + citecolor = {mygreen},% + pdftitle = {The gfdl package},% + pdfauthor = {निरंजन},% + pdfsubject = {For using GFDL in LaTeX.},% + pdfcreator = {निरंजन},% + pdfkeywords = {% + GFDL, LaTeX, FSF, Licensing, Documentation% + },% + pdfcopyright = {% + The LaTeX package gfdl\textLF + Copyright © 2022, 2023 निरंजन\textLF + Permission is granted to copy, distribute and/or modify + this document under the terms of the GNU Free + Documentation License, Version 1.3 or any later version + published by the Free Software Foundation; with no + Invariant Sections, no Front-Cover Texts, and no + Back-Cover Texts. A copy of the license is included in + the section entitled “GNU Free Documentation License”.% + },% + pdflicenseurl = {% + https://www.gnu.org/licenses/fdl-1.3.txt% + }% +}% +\usepackage{cleveref} +\newfontfamily\devanagari[% + Script = {Devanagari},% + Renderer = {Harfbuzz},% + Scale = {0.8}% +]% +{Shobhika} +\NewDocumentEnvironment{dedication}{ }{% + % Based on egreg's answer: + % https://tex.stackexchange.com/a/102849 + \clearpage % for a new page. + \thispagestyle{empty}% no header and footer. + \vspace*{\stretch{1}}% some space at the top. + \itshape % to get the text in italics. + \raggedleft % flush to the right margin. +}{% + \par % end the paragraph + \vspace{\stretch{3}}%% space at bottom is three times that + \clearpage %% at the top finish off the page. +} +\NewCommandCopy\oldamp\& +\renewcommand*{\&}{\textit{\oldamp}} +\gfdlcopyrightdescription{The \LaTeX\ package \pkg{gfdl}} +\gfdlcopyrightholders{\texorpdfstring{{\devanagari निरंजन}}{निरंजन}} +\gfdlcopyrightableyears{2022, 2023} + +\begin{document} +\DocInput{\jobname.dtx} +\end{document} +%</driver> +% \fi +% \title{The \pkg{gfdl} package} +% \author{^^A +% {^^A +% \devanagari +% निरंजन^^A +% }^^A +% \thanks{^^A +% \href{mailto:hi.niranjan@pm.me}^^A +% {\texttt{hi.niranjan@pm.me}}^^A +% }^^A +% } +% \date{^^A +% Version 0.1^^A +% ---^^A +% January 1, 2023\\[1ex]^^A +% {^^A +% \small\faIcon{link}\quad +% \url{https://ctan.org/pkg/gfdl}^^A +% }\\^^A +% {^^A +% \small\faIcon{bug}\quad +% \url{https://puszcza.gnu.org.ua/bugs/?group=gfdl-tex}^^A +% }^^A +% } +% +% \maketitle +% +% \begin{documentation} +% \begin{abstract} +% The GFDL is a popular license used for programming +% manuals, documentations \& various other textual works +% too, but using this license with \LaTeX\ isn't very +% convenient. This package aims to help users in easily +% using the license without violating any rules of the +% license. With a handful of commands, users can rest +% assured that their document will be perfectly licensed +% under GFDL. +% \end{abstract} +% +% \tableofcontents +% +% \begin{dedication} +% Dedicated to the FSF \& it's continuous fight for +% the freedom of software\dots +% \end{dedication} +% +% \section*{Acknowledgment} +% +% I acknowledge my friend Sahil Patel for reviewing the +% output of this package \& suggesting some corrections. +% I would also like to thank Karl Berry for pointing out +% some critical issues in my package \& suggesting +% alternative ways of dealing with them. This package +% modifies \& uses a few \LaTeX-files provided on the +% web-pages of respective versions of GFDL\footnote{^^A +% GFDLv1.3: +% \texttt{^^A +% \url{https://www.gnu.org/licenses/fdl-1.3.tex}^^A +% }.\\^^A +% GFDLv1.2: +% \texttt{^^A +% \url{https://www.gnu.org/licenses/fdl-1.2.tex}^^A +% }.\\^^A +% GFDLv1.1: +% \texttt{^^A +% \url{https://www.gnu.org/licenses/fdl-1.1.tex}^^A +% }.\\^^A +% } which are unlicensed \& their authors are unknown, but +% with a few typographic modifications I have used them in +% the package. I would like to thank FSF/GNU-hackers for +% providing a basic skeleton of the \LaTeX-files which I +% could modify. +% +% \section{Documentation} +% +% This section describes all the macros \& parameters that +% the package provides. +% +% \subsection{Macros} +% +% \begin{function}{^^A +% \gfdlcopyrightdescription,^^A +% \gfdlcopyrightableyears,^^A +% \gfdlcopyrightholders +% } +% \begin{syntax} +% \cs{gfdlcopyrightdescription}\marg{project-description} +% \cs{gfdlcopyrightableyears}\marg{copyright-able years} +% \cs{gfdlcopyrighthoders}\marg{copyright-holders} +% \end{syntax} +% The names of these macros are pretty self-explanatory. +% These macros store the information which is then printed +% automatically at necessary places. Only if one has +% loaded the |manual| option (documented in \cref{opts}); +% they will have to use the macros following this one to +% print the notice \& the license-text. +% \end{function} +% +% \begin{function}{\printgfdlnotice} +% This text prints the copyright-notice. \LaTeX's +% float-mechanism is used for printing it. It is printed +% on the first page of the document with default +% settings. With option |manual| user is free to print it +% anywhere, but not printing it will produce an error. +% \end{function} +% +% \begin{function}{\printgfdltext} +% This text prints the entire license text. In default +% settings this command is run after the last page of the +% document. With option |manual|, the user is free to use +% it anywhere, but not using it will produce an error. +% \end{function} +% +% \subsection{Options} +% \label{opts} +% +% \begin{function}{manual} +% By default the package prints the copyright-notice along +% with the license-text of GFDL in the document by +% default. The former is printed at the bottom of the +% first page whereas the latter is printed just after the +% last page. If anyone wants to suppress this behavior \& +% print both of these things anywhere in the document with +% \cs{printgfdlnotice} \& \cs{printgfdltext} as documented +% earlier. +% \end{function} +% +% \subsubsection{Legacy support} +% +% The following options are just for legacy support \& +% should be avoided for newer works. It is advised to use +% these options only when the document demands certain old +% conventions which are obsolete these days. +% +% \begin{function}{(C)} +% The \textcopyright\ symbol was at times written as (C) +% \& if someone needs to use this style, then they can use +% this package-option. The package essentially prints this +% symbol at two places. One in the actual PDF text \& one +% in it's metadata. At both of these places users will see +% the change if this option is used. By default this +% option is inactive. +% \end{function} +% +% \begin{function}{version} +% \begin{syntax} +% |version|=\marg{version-number}\hfill ^^A +% |1.1|, |1.2| \textit{or} \textcolor{myred}{|1.3|} +% \end{syntax} +% 1.3 is the current version of GFDL, but there were two +% old versions before it (i.e., 1.2 \& 1.1). By default +% the latest version is used, but with this package +% option, users can select previous versions too. It is +% important to note that as of now this option does +% \emph{not} allow any other value than |1.1|, |1.2| \& +% \textcolor{myred}{|1.3|}. +% +% If a newer version is released by the FSF, the default +% behavior of the package will most likely change to +% produce the latest version of GFDL at that time. In that +% case recompiling an old document with the new version of +% this package will break your documents, but as a +% developer I find that incompatibility reasonable \& +% desirable, because I believe using the newer versions of +% this license will only help the cause for which hackers +% are fighting. +% \end{function} +% \end{documentation} +% +% \begin{implementation} +% \section{Implementation} +% +% Provide package with its basic information. +% +% \begin{macrocode} +%<*package> +\ProvidesPackage{gfdl}[2023/01/01 v0.1 +For using the GFDL in LaTeX.] +% \end{macrocode} +% +% Load necessary packages. +% +% \begin{macrocode} +\RequirePackage{float} +\RequirePackage{expkv-def,expkv-opt} +% \end{macrocode} +% +% Define conditionals which we will be using in the package +% \& set some initial values for them. +% +% The package issues a warning if copyright-holders aren't +% declared \& it doesn't print the GFDL-notice in this case, +% because a copyright-notice without copyright-holders makes +% no sense. The following conditional is at work for this. +% +% \begin{macrocode} +\newif\ifgfdl@copyrightholdersgiven +\gfdl@copyrightholdersgivenfalse +% \end{macrocode} +% +% With the following code we first define various internal +% conditionals which we require. We also set their initial +% values here. +% +% \begin{macrocode} +\newif\ifgfdl@copyrightableyearsgiven +\gfdl@copyrightableyearsgivenfalse +\newif\ifgfdl@copyrightedmaterialdesc +\gfdl@copyrightedmaterialdescfalse +\newif\ifgfdl@licensetextnotprinted +\gfdl@licensetextnotprintedtrue +\newif\ifgfdl@noticenotprinted +\gfdl@noticenotprintedtrue +% \end{macrocode} +% +% Define package options with \pkg{expkv}. +% +% \begin{macrocode} +\ekvdefinekeys{gfdl}{ +% \end{macrocode} +% +% \begin{macro}{manual} +% +% The |invbool| type is used to define package option +% |manual|\footnote{Read the documentation of \pkg{expkv} +% for explanation.}. We define the conditional +% |\ifgfdl@printgfdl| with it. +% +% \begin{macrocode} + invbool manual = {\ifgfdl@printgfdl}, +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{(C)} +% +% The following code defines the package option |(C)| +% which defines an internally used conditional +% |\ifgfdl@bracketedcopyright|. The default value of this +% conditional is false. +% +% \begin{macrocode} + bool (C) = {\ifgfdl@bracketedcopyright}, +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{version} +% +% The following code develops the option |version| which +% takes three options seen in the documentation. By using +% the |initial| key-type, we set the initial value of this +% option to |1.3|. +% +% \begin{macrocode} + choice version = {% + 1.1 = {\def\gfdl@version{1p1}},% + 1.2 = {\def\gfdl@version{1p2}},% + 1.3 = {\def\gfdl@version{1p3}}% + }, + initial version = {1.3} +} +% \end{macrocode} +% \end{macro} +% +% After developing all the options, we set process them with +% the following code. +% +% \begin{macrocode} +\ekvoProcessLocalOptions{gfdl} +% \end{macrocode} +% +% We have used the |bool| type from \pkg{expkv} for +% developing the package option |(C)|. It defines the +% conditional |\ifgfdl@bracketedcopyright| which is by +% default false. We use an internal macro, i.e., +% |\gfdl@copyrightsymbol| for printing the copyright symbol +% with the following code. We |\let| it be |\textcopyright| +% when the aforementioned conditional is false \& it is +% defined as |(C)| when the conditional is true (i.e., when +% the option is explicitly used by the user). +% +% \begin{macrocode} +\ifgfdl@bracketedcopyright + \def\gfdl@copyrightsymbol{(C)}% +\else + \let\gfdl@copyrightsymbol\textcopyright +\fi +% \end{macrocode} +% +% \begin{macro}{\gfdlcopyrightdescription} +% The following |\NewDocumentCommand| is used to develop +% this command. +% \begin{macrocode} +\NewDocumentCommand{ \gfdlcopyrightdescription }{ m }{% + \def\@copyrightedmaterialdesc{#1}% + \gfdl@copyrightedmaterialdesctrue +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\gfdlcopyrightableyears} +% For this command we have the following code. +% \begin{macrocode} +\NewDocumentCommand{ \gfdlcopyrightableyears }{ m }{% + \def\@copyrightableyears{#1}% + \gfdl@copyrightableyearsgiventrue +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\gfdlcopyrightholders} +% And lastly, we have this command coded as follows. +% \begin{macrocode} +\NewDocumentCommand{ \gfdlcopyrightholders }{ m }{% + \def\@copyrightholders{#1}% + \gfdl@copyrightholdersgiventrue +} +% \end{macrocode} +% \end{macro} +% We issue a warning when copyright-able years are not +% given. The following code generates the warning. We define +% the internal macro containing the copyright-able years as +% |??| in bold font here itself. +% \begin{macrocode} +\AddToHook{begindocument/before}{% + \ifgfdl@copyrightableyearsgiven + \else + \def\@copyrightableyears{\textbf{??}}% + \PackageWarningNoLine{gfdl}{% + Copyright-able years not given. I can't print the + \MessageBreak + copyright notice without them. To give me this + \MessageBreak + information use the \string\gfdlcopyrightableyears\space + command.\MessageBreak Using `??' as a placeholder% + }% + \fi +% \end{macrocode} +% The following code is used to check if user has given +% information about copyright-holders. If not, then we issue +% a warning with this code \& again define the internal +% macro containing this information as bold |??|. +% \begin{macrocode} + \ifgfdl@copyrightholdersgiven + \else + \def\@copyrightholders{\textbf{??}}% + \PackageWarningNoLine{gfdl}{% + Copyright-holders not given. I can't print the + \MessageBreak + copyright notice without them. To give me this + \MessageBreak + information use the \string\gfdlcopyrightholders\space + command.\MessageBreak Using `??' as a placeholder% + }% + \fi +% \end{macrocode} +% +% With default settings of this package, \pkg{hyperref}, +% \pkg{csquotes} \& \pkg{hyperxmp} are loaded, but to avoid +% potential conflicts, we load them conditionally. With the +% following code this is achieved. +% +% \begin{macrocode} + \@ifpackageloaded{csquotes}{}{% + \RequirePackage{csquotes}% + }% + \@ifpackageloaded{hyperref}{}{% + \RequirePackage{hyperref}% + }% + \@ifpackageloaded{hyperxmp}{}{% + \RequirePackage{hyperxmp}% + }% +% \end{macrocode} +% +% For setting the metadata we use the following code. +% +% \begin{macrocode} + \hypersetup{% + pdfcopyright = {% + \ifgfdl@copyrightedmaterialdesc + \@copyrightedmaterialdesc + \textLF + \fi + Copyright + \gfdl@copyrightsymbol\ + \@copyrightableyears\ + \@copyrightholders\textLF + Permission is granted to copy, distribute and/or + modify this document under the terms of the GNU Free + Documentation License, Version 1.3 or any later + version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and + no Back-Cover Texts. A copy of the license is included + in the section entitled “GNU Free Documentation + License”.% + },% + pdflicenseurl = {% + https://www.gnu.org/licenses/fdl-1.3.txt% + }% + }% +} +% \end{macrocode} +% +% Printing the text automatically at the bottom of the first +% page is achieved with the help of a float. It is developed +% using package \pkg{float} for the following commands. +% +% \begin{macrocode} +\newfloat{gfdl@float}{b}{delme} +% \end{macrocode} +% +% \begin{macro}{\printgfdlnotice} +% This command is developed using the following code. +% \begin{macrocode} +\NewDocumentCommand{ \printgfdlnotice }{ }{% + \begin{gfdl@float}[b!] + \hrule\medskip + \ifgfdl@copyrightedmaterialdesc + \@copyrightedmaterialdesc\par + \fi + Copyright + \gfdl@copyrightsymbol\ + \@copyrightableyears\ + \@copyrightholders + + Permission is granted to copy, distribute and/or modify + this document under the terms of the GNU Free + Documentation License, Version 1.3 or any later version + published by the Free Software Foundation; with no + Invariant Sections, no Front-Cover Texts, and no + Back-Cover Texts. A copy of the license is included in + the section entitled \enquote{% + GNU Free Documentation License% + }.% + \end{gfdl@float}% + \gfdl@noticenotprintedfalse +} +% \end{macrocode} +% \end{macro} +% +% We use |\printgfdlnotice| at the first page of the +% document with the following code. +% +% \begin{macrocode} +\AddToHook{begindocument/end}{% + \ifgfdl@printgfdl + \printgfdlnotice + \fi +} +% \end{macrocode} +% +% \begin{macro}{\printgfdltext} +% +% The following code is used to define this command. +% +% \begin{macrocode} +\NewDocumentCommand{ \printgfdltext }{ }{% + \input{gfdl-tex-\gfdl@version.tex}% + \gfdl@licensetextnotprintedfalse +} +% \end{macrocode} +% \end{macro} +% +% In default settings the entire license text is printed +% with the following code. +% +% \begin{macrocode} +\AddToHook{enddocument}{% + \ifgfdl@printgfdl + \newpage + \phantomsection + \addcontentsline{toc}{section}{% + GNU Free Documentation License% + }% + \printgfdltext + \fi + \ifgfdl@noticenotprinted + \PackageError{gfdl}{% + You didn't print the copyright notice% + }{% + You are in the `manual' mode of the GFDL package and + hence you\MessageBreak are supposed to print the + copyright notice at a suitable place\MessageBreak of + your choice, but you haven't printed it at all. This + violates\MessageBreak the requirement of the GFDL. To + print it use:\MessageBreak + \space\space\string\printgfdlnotice.% + }% + \fi + \ifgfdl@licensetextnotprinted + \PackageError{gfdl}{% + You didn't print the license text% + }% + {% + You are in the `manual' mode of the GFDL package and hence you% + \MessageBreak + are supposed to print the full license text at a suitable place% + \MessageBreak + of your choice, but you haven't printed it at all. This violates% + \MessageBreak + the requirement of the GFDL. To print it use:% + \MessageBreak + \space\space\string\printgfdltext.% + }% + \fi +} +% \end{macrocode} +% +% This is the end of the package. +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% \end{implementation} +% \Finale
\ No newline at end of file diff --git a/Master/texmf-dist/source/latex/gfdl/gfdl.ins b/Master/texmf-dist/source/latex/gfdl/gfdl.ins new file mode 100644 index 00000000000..e8bae2e6773 --- /dev/null +++ b/Master/texmf-dist/source/latex/gfdl/gfdl.ins @@ -0,0 +1,46 @@ +% File: linguistix.ins +\input l3docstrip.tex + +\keepsilent +\askforoverwritefalse + +\preamble +---------------------------------------------------------- +Package: gfdl +Version: v0.1 (January 1, 2023) +Author: निरंजन +Description: Enhanced support for linguistics. +Repository: https://puszcza.gnu.org.ua/projects/gfdl +License: GPLv3+, GFDLv1.3+ +---------------------------------------------------------- + +The LaTeX package gfdl v0.1 +Copyright © 2022, 2023 निरंजन + +This program is free software: you can redistribute it +and/or modify it under the terms of the GNU General Public +License as published by the Free Software Foundation, either +version 3 of the License, or (at your option) any later +version. + +This program is distributed in the hope that it will be +useful, but WITHOUT ANY WARRANTY; without even the implied +warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +PURPOSE. See the GNU General Public License for more +details. + +You should have received a copy of the GNU General Public +License along with this program. If not, see +<https://www.gnu.org/licenses/>. +---------------------------------------------------------- +\endpreamble +\usedir{tex/latex/\jobname} +\generate{% + \file{\jobname.sty}{\from{\jobname.dtx}{package}}% +} +\nopreamble\nopostamble +\usedir{doc/latex/\jobname} +\generate{% + \file{README.txt}{\from{\jobname.dtx}{readme}}% +} +\endbatchfile |