summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/gfdl
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2022-12-31 20:41:57 +0000
committerKarl Berry <karl@freefriends.org>2022-12-31 20:41:57 +0000
commit8871a9e4f3b8df5593e27751a20cc18019c1fa0d (patch)
tree4b632550accfa04acea0e2d4600731acb8950d89 /Master/texmf-dist/source/latex/gfdl
parent74fd318e9b1ffca5a102c9a9922e3de890ce53ee (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.dtx629
-rw-r--r--Master/texmf-dist/source/latex/gfdl/gfdl.ins46
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