summaryrefslogtreecommitdiff
path: root/texmf-dist/source/latex/lmacs/lmacs.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'texmf-dist/source/latex/lmacs/lmacs.dtx')
-rw-r--r--texmf-dist/source/latex/lmacs/lmacs.dtx138
1 files changed, 138 insertions, 0 deletions
diff --git a/texmf-dist/source/latex/lmacs/lmacs.dtx b/texmf-dist/source/latex/lmacs/lmacs.dtx
new file mode 100644
index 00000000..23c3d08a
--- /dev/null
+++ b/texmf-dist/source/latex/lmacs/lmacs.dtx
@@ -0,0 +1,138 @@
+% \iffalse meta-comment
+% http://www.texdev.net/2009/10/06/a-model-dtx-file/
+% !TEX program = pdfLaTeX
+%<*internal>
+\iffalse
+%</internal>
+%<*internal>
+\fi
+\def\nameofplainTeX{plain}
+\ifx\fmtname\nameofplainTeX\else
+ \expandafter\begingroup
+\fi
+%</internal>
+%<*install>
+\input docstrip.tex
+\keepsilent
+\askforoverwritefalse
+\preamble
+\endpreamble
+\ifx\fmtname\nameofplainTeX
+\generate{
+ \file{\jobname.sty}{\from{\jobname.dtx}{package}}
+}
+\fi
+%</install>
+%<install>\endbatchfile
+%<*internal>
+\ifx\fmtname\nameofplainTeX
+ \expandafter\endbatchfile\else
+ \expandafter\endgroup\fi
+%</internal>
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{lmacs}
+%<package> [2012/05/30 v1.1 Imports local macro files]
+%<*driver>
+\documentclass{ltxdoc}
+%\usepackage{\jobname}
+%\usepackage[numbered]{hypdoc}
+%\EnableCrossrefs
+%\CodelineIndex
+%\RecordChanges
+\begin{document}
+ \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+%\GetFileInfo{\jobname.sty}
+%
+%\title{The \textsf{\jobname} Package}
+%\author{D. P. Story}
+%\date{Released \today}
+%
+%\maketitle
+%
+%\StopEventually{^^A
+% \PrintChanges
+% \PrintIndex
+%}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+% \paragraph*{Description.} This package is used to clean up the
+% preamble of {\LaTeX} files. Some preambles have a (large) number of definitions
+% in them. To clean up the preamble, move the definitions in the preamble into a separate file, and
+% use this package in import them into your preamble. Normally,
+% \textsf{lmacs} would have a position that follows all packages for the
+% document.
+%
+% \textsf{lmacs} stands for \underbar{l}ocal \underbar{mac}ro\underbar{s}. Normally, the files referenced are in the same folder
+% as the main source file; they should not (but can) be in the search path of {\LaTeX}.
+%
+% \paragraph*{Demo files:} \texttt{lmacs\_tst.tex} (a simple latex source)
+% and \texttt{lmacs\_aeb.tex} (a file that uses the \textsf{web} and \textsf{exerquiz} packages).
+% These are found in the \texttt{examples} folder.
+%
+% \paragraph*{Documentation and Code.}
+% We begin by requiring \texttt{kvoptions}, this package does not test for the presence
+% of a class file, so we can use it. It allows us to define key-values as options of the
+% package.
+% \begin{macrocode}
+\RequirePackage{kvoptions}[2009/07/21]
+% \end{macrocode}
+% \begin{macrocode}
+% \end{macrocode}
+% \begin{macro}{cfg}
+% \begin{macro}{def}
+% \begin{macro}{js}
+% With these keys, you can specify the file with the specified extension be imported.
+% For example, the following line
+%\begin{verbatim}
+% \usepackage[cfg=myconf,def=mydef,js=myjs]{lmacs}
+%\end{verbatim}
+% will import (using \cs{InputIfFileExists}) the files \texttt{myconf.cfg},
+% \texttt{mydef.def}, and \texttt{myjs.js}. Multiple specifications of the same
+% extension is permitted, for example,
+%\begin{verbatim}
+% \usepackage[def=mydef1,def=mydef2]{lmacs}
+%\end{verbatim}
+% \begin{macrocode}
+\let\LM@inputlist\@empty
+% \end{macrocode}
+% \cmd{\LM@input} inputs \texttt{\#1.\#2}, while \cmd{\LM@warning} issues
+% a package warning if \texttt{\#1.\#2} is not found.
+% \begin{macrocode}
+\newcommand{\LM@input}[2]{\InputIfFileExists{#1.#2}{}%
+ {\LM@warning{#1}{#2}}}
+\newcommand{\LM@warning}[2]{\PackageWarning{lmacs}
+ {The file #1.#2 cannot be found}}
+% \end{macrocode}
+% \DescribeMacro{!cfg}\DescribeMacro{!def}\DescribeMacro{!js}For each of these options, we add the specified file to
+% \cs{LM@inputlist}, this will be executed at the end of the package. The three options
+% \texttt{!cfg}, \texttt{!def}, \texttt{!js} do nothing, making it easy to include, or
+% not include a file.
+% \begin{macrocode}
+\define@key{lmacs}{cfg}{\g@addto@macro\LM@inputlist{\LM@input{#1}{cfg}}}
+\define@key{lmacs}{!cfg}{}
+\define@key{lmacs}{def}{\g@addto@macro\LM@inputlist{\LM@input{#1}{def}}}
+\define@key{lmacs}{!def}{}
+\define@key{lmacs}{js}{\g@addto@macro\LM@inputlist{\LM@input{#1}{js}}}
+\define@key{lmacs}{!js}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+\ProcessKeyvalOptions{lmacs}
+% \end{macrocode}
+% Once the options have been process, we execute the command
+% \cs{LM@inputlist} which contains a list of the files to be input.
+% \begin{macrocode}
+\LM@inputlist
+% \end{macrocode}
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%\Finale