diff options
author | Karl Berry <karl@freefriends.org> | 2019-01-14 22:07:57 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-01-14 22:07:57 +0000 |
commit | 2464f44948bb379ec3bb813d9fa0c937dcb4e6a8 (patch) | |
tree | 2116c31c02792206e268c6271d45ff8819f60d87 /Master/texmf-dist | |
parent | 6950156f10651c7d5f976001ab97f0e8e5bcffb4 (diff) |
ltxguidex (14jan19)
git-svn-id: svn://tug.org/texlive/trunk@49705 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r-- | Master/texmf-dist/doc/latex/ltxguidex/LICENSE.txt | 416 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/ltxguidex/README.md | 17 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/ltxguidex/ltxguidex.pdf | bin | 0 -> 62875 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/ltxguidex/ltxguidex.tex | 600 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/ltxguidex/ltxguidex.cls | 217 |
5 files changed, 1250 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/ltxguidex/LICENSE.txt b/Master/texmf-dist/doc/latex/ltxguidex/LICENSE.txt new file mode 100644 index 00000000000..22443139013 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ltxguidex/LICENSE.txt @@ -0,0 +1,416 @@ +The LaTeX Project Public License +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + +LPPL Version 1.3c 2008-05-04 + +Copyright 1999 2002-2008 LaTeX3 Project + Everyone is allowed to distribute verbatim copies of this + license document, but modification of it is not allowed. + + +PREAMBLE +======== + +The LaTeX Project Public License (LPPL) is the primary license under +which the LaTeX kernel and the base LaTeX packages are distributed. + +You may use this license for any work of which you hold the copyright +and which you wish to distribute. This license may be particularly +suitable if your work is TeX-related (such as a LaTeX package), but +it is written in such a way that you can use it even if your work is +unrelated to TeX. + +The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE', +below, gives instructions, examples, and recommendations for authors +who are considering distributing their works under this license. + +This license gives conditions under which a work may be distributed +and modified, as well as conditions under which modified versions of +that work may be distributed. + +We, the LaTeX3 Project, believe that the conditions below give you +the freedom to make and distribute modified versions of your work +that conform with whatever technical specifications you wish while +maintaining the availability, integrity, and reliability of +that work. If you do not see how to achieve your goal while +meeting these conditions, then read the document `cfgguide.tex' +and `modguide.tex' in the base LaTeX distribution for suggestions. + + +DEFINITIONS +=========== + +In this license document the following terms are used: + + `Work' + Any work being distributed under this License. + + `Derived Work' + Any work that under any applicable law is derived from the Work. + + `Modification' + Any procedure that produces a Derived Work under any applicable + law -- for example, the production of a file containing an + original file associated with the Work or a significant portion of + such a file, either verbatim or with modifications and/or + translated into another language. + + `Modify' + To apply any procedure that produces a Derived Work under any + applicable law. + + `Distribution' + Making copies of the Work available from one person to another, in + whole or in part. Distribution includes (but is not limited to) + making any electronic components of the Work accessible by + file transfer protocols such as FTP or HTTP or by shared file + systems such as Sun's Network File System (NFS). + + `Compiled Work' + A version of the Work that has been processed into a form where it + is directly usable on a computer system. This processing may + include using installation facilities provided by the Work, + transformations of the Work, copying of components of the Work, or + other activities. Note that modification of any installation + facilities provided by the Work constitutes modification of the Work. + + `Current Maintainer' + A person or persons nominated as such within the Work. If there is + no such explicit nomination then it is the `Copyright Holder' under + any applicable law. + + `Base Interpreter' + A program or process that is normally needed for running or + interpreting a part or the whole of the Work. + + A Base Interpreter may depend on external components but these + are not considered part of the Base Interpreter provided that each + external component clearly identifies itself whenever it is used + interactively. Unless explicitly specified when applying the + license to the Work, the only applicable Base Interpreter is a + `LaTeX-Format' or in the case of files belonging to the + `LaTeX-format' a program implementing the `TeX language'. + + + +CONDITIONS ON DISTRIBUTION AND MODIFICATION +=========================================== + +1. Activities other than distribution and/or modification of the Work +are not covered by this license; they are outside its scope. In +particular, the act of running the Work is not restricted and no +requirements are made concerning any offers of support for the Work. + +2. You may distribute a complete, unmodified copy of the Work as you +received it. Distribution of only part of the Work is considered +modification of the Work, and no right to distribute such a Derived +Work may be assumed under the terms of this clause. + +3. You may distribute a Compiled Work that has been generated from a +complete, unmodified copy of the Work as distributed under Clause 2 +above, as long as that Compiled Work is distributed in such a way that +the recipients may install the Compiled Work on their system exactly +as it would have been installed if they generated a Compiled Work +directly from the Work. + +4. If you are the Current Maintainer of the Work, you may, without +restriction, modify the Work, thus creating a Derived Work. You may +also distribute the Derived Work without restriction, including +Compiled Works generated from the Derived Work. Derived Works +distributed in this manner by the Current Maintainer are considered to +be updated versions of the Work. + +5. If you are not the Current Maintainer of the Work, you may modify +your copy of the Work, thus creating a Derived Work based on the Work, +and compile this Derived Work, thus creating a Compiled Work based on +the Derived Work. + +6. If you are not the Current Maintainer of the Work, you may +distribute a Derived Work provided the following conditions are met +for every component of the Work unless that component clearly states +in the copyright notice that it is exempt from that condition. Only +the Current Maintainer is allowed to add such statements of exemption +to a component of the Work. + + a. If a component of this Derived Work can be a direct replacement + for a component of the Work when that component is used with the + Base Interpreter, then, wherever this component of the Work + identifies itself to the user when used interactively with that + Base Interpreter, the replacement component of this Derived Work + clearly and unambiguously identifies itself as a modified version + of this component to the user when used interactively with that + Base Interpreter. + + b. Every component of the Derived Work contains prominent notices + detailing the nature of the changes to that component, or a + prominent reference to another file that is distributed as part + of the Derived Work and that contains a complete and accurate log + of the changes. + + c. No information in the Derived Work implies that any persons, + including (but not limited to) the authors of the original version + of the Work, provide any support, including (but not limited to) + the reporting and handling of errors, to recipients of the + Derived Work unless those persons have stated explicitly that + they do provide such support for the Derived Work. + + d. You distribute at least one of the following with the Derived Work: + + 1. A complete, unmodified copy of the Work; + if your distribution of a modified component is made by + offering access to copy the modified component from a + designated place, then offering equivalent access to copy + the Work from the same or some similar place meets this + condition, even though third parties are not compelled to + copy the Work along with the modified component; + + 2. Information that is sufficient to obtain a complete, + unmodified copy of the Work. + +7. If you are not the Current Maintainer of the Work, you may +distribute a Compiled Work generated from a Derived Work, as long as +the Derived Work is distributed to all recipients of the Compiled +Work, and as long as the conditions of Clause 6, above, are met with +regard to the Derived Work. + +8. The conditions above are not intended to prohibit, and hence do not +apply to, the modification, by any method, of any component so that it +becomes identical to an updated version of that component of the Work as +it is distributed by the Current Maintainer under Clause 4, above. + +9. Distribution of the Work or any Derived Work in an alternative +format, where the Work or that Derived Work (in whole or in part) is +then produced by applying some process to that format, does not relax or +nullify any sections of this license as they pertain to the results of +applying that process. + +10. a. A Derived Work may be distributed under a different license + provided that license itself honors the conditions listed in + Clause 6 above, in regard to the Work, though it does not have + to honor the rest of the conditions in this license. + + b. If a Derived Work is distributed under a different license, that + Derived Work must provide sufficient documentation as part of + itself to allow each recipient of that Derived Work to honor the + restrictions in Clause 6 above, concerning changes from the Work. + +11. This license places no restrictions on works that are unrelated to +the Work, nor does this license place any restrictions on aggregating +such works with the Work by any means. + +12. Nothing in this license is intended to, or may be used to, prevent +complete compliance by all parties with all applicable laws. + + +NO WARRANTY +=========== + +There is no warranty for the Work. Except when otherwise stated in +writing, the Copyright Holder provides the Work `as is', without +warranty of any kind, either expressed or implied, including, but not +limited to, the implied warranties of merchantability and fitness for a +particular purpose. The entire risk as to the quality and performance +of the Work is with you. Should the Work prove defective, you assume +the cost of all necessary servicing, repair, or correction. + +In no event unless required by applicable law or agreed to in writing +will The Copyright Holder, or any author named in the components of the +Work, or any other party who may distribute and/or modify the Work as +permitted above, be liable to you for damages, including any general, +special, incidental or consequential damages arising out of any use of +the Work or out of inability to use the Work (including, but not limited +to, loss of data, data being rendered inaccurate, or losses sustained by +anyone as a result of any failure of the Work to operate with any other +programs), even if the Copyright Holder or said author or said other +party has been advised of the possibility of such damages. + + +MAINTENANCE OF THE WORK +======================= + +The Work has the status `author-maintained' if the Copyright Holder +explicitly and prominently states near the primary copyright notice in +the Work that the Work can only be maintained by the Copyright Holder +or simply that it is `author-maintained'. + +The Work has the status `maintained' if there is a Current Maintainer +who has indicated in the Work that they are willing to receive error +reports for the Work (for example, by supplying a valid e-mail +address). It is not required for the Current Maintainer to acknowledge +or act upon these error reports. + +The Work changes from status `maintained' to `unmaintained' if there +is no Current Maintainer, or the person stated to be Current +Maintainer of the work cannot be reached through the indicated means +of communication for a period of six months, and there are no other +significant signs of active maintenance. + +You can become the Current Maintainer of the Work by agreement with +any existing Current Maintainer to take over this role. + +If the Work is unmaintained, you can become the Current Maintainer of +the Work through the following steps: + + 1. Make a reasonable attempt to trace the Current Maintainer (and + the Copyright Holder, if the two differ) through the means of + an Internet or similar search. + + 2. If this search is successful, then enquire whether the Work + is still maintained. + + a. If it is being maintained, then ask the Current Maintainer + to update their communication data within one month. + + b. If the search is unsuccessful or no action to resume active + maintenance is taken by the Current Maintainer, then announce + within the pertinent community your intention to take over + maintenance. (If the Work is a LaTeX work, this could be + done, for example, by posting to comp.text.tex.) + + 3a. If the Current Maintainer is reachable and agrees to pass + maintenance of the Work to you, then this takes effect + immediately upon announcement. + + b. If the Current Maintainer is not reachable and the Copyright + Holder agrees that maintenance of the Work be passed to you, + then this takes effect immediately upon announcement. + + 4. If you make an `intention announcement' as described in 2b. above + and after three months your intention is challenged neither by + the Current Maintainer nor by the Copyright Holder nor by other + people, then you may arrange for the Work to be changed so as + to name you as the (new) Current Maintainer. + + 5. If the previously unreachable Current Maintainer becomes + reachable once more within three months of a change completed + under the terms of 3b) or 4), then that Current Maintainer must + become or remain the Current Maintainer upon request provided + they then update their communication data within one month. + +A change in the Current Maintainer does not, of itself, alter the fact +that the Work is distributed under the LPPL license. + +If you become the Current Maintainer of the Work, you should +immediately provide, within the Work, a prominent and unambiguous +statement of your status as Current Maintainer. You should also +announce your new status to the same pertinent community as +in 2b) above. + + +WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE +====================================================== + +This section contains important instructions, examples, and +recommendations for authors who are considering distributing their +works under this license. These authors are addressed as `you' in +this section. + +Choosing This License or Another License +---------------------------------------- + +If for any part of your work you want or need to use *distribution* +conditions that differ significantly from those in this license, then +do not refer to this license anywhere in your work but, instead, +distribute your work under a different license. You may use the text +of this license as a model for your own license, but your license +should not refer to the LPPL or otherwise give the impression that +your work is distributed under the LPPL. + +The document `modguide.tex' in the base LaTeX distribution explains +the motivation behind the conditions of this license. It explains, +for example, why distributing LaTeX under the GNU General Public +License (GPL) was considered inappropriate. Even if your work is +unrelated to LaTeX, the discussion in `modguide.tex' may still be +relevant, and authors intending to distribute their works under any +license are encouraged to read it. + +A Recommendation on Modification Without Distribution +----------------------------------------------------- + +It is wise never to modify a component of the Work, even for your own +personal use, without also meeting the above conditions for +distributing the modified component. While you might intend that such +modifications will never be distributed, often this will happen by +accident -- you may forget that you have modified that component; or +it may not occur to you when allowing others to access the modified +version that you are thus distributing it and violating the conditions +of this license in ways that could have legal implications and, worse, +cause problems for the community. It is therefore usually in your +best interest to keep your copy of the Work identical with the public +one. Many works provide ways to control the behavior of that work +without altering any of its licensed components. + +How to Use This License +----------------------- + +To use this license, place in each of the components of your work both +an explicit copyright notice including your name and the year the work +was authored and/or last substantially modified. Include also a +statement that the distribution and/or modification of that +component is constrained by the conditions in this license. + +Here is an example of such a notice and statement: + + %% pig.dtx + %% Copyright 2005 M. Y. Name + % + % 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 M. Y. Name. + % + % This work consists of the files pig.dtx and pig.ins + % and the derived file pig.sty. + +Given such a notice and statement in a file, the conditions +given in this license document would apply, with the `Work' referring +to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being +generated from `pig.dtx' using `pig.ins'), the `Base Interpreter' +referring to any `LaTeX-Format', and both `Copyright Holder' and +`Current Maintainer' referring to the person `M. Y. Name'. + +If you do not want the Maintenance section of LPPL to apply to your +Work, change `maintained' above into `author-maintained'. +However, we recommend that you use `maintained', as the Maintenance +section was added in order to ensure that your Work remains useful to +the community even when you can no longer maintain and support it +yourself. + +Derived Works That Are Not Replacements +--------------------------------------- + +Several clauses of the LPPL specify means to provide reliability and +stability for the user community. They therefore concern themselves +with the case that a Derived Work is intended to be used as a +(compatible or incompatible) replacement of the original Work. If +this is not the case (e.g., if a few lines of code are reused for a +completely different task), then clauses 6b and 6d shall not apply. + + +Important Recommendations +------------------------- + + Defining What Constitutes the Work + + The LPPL requires that distributions of the Work contain all the + files of the Work. It is therefore important that you provide a + way for the licensee to determine which files constitute the Work. + This could, for example, be achieved by explicitly listing all the + files of the Work near the copyright notice of each file or by + using a line such as: + + % This work consists of all files listed in manifest.txt. + + in that place. In the absence of an unequivocal list it might be + impossible for the licensee to determine what is considered by you + to comprise the Work and, in such a case, the licensee would be + entitled to make reasonable conjectures as to which files comprise + the Work. + diff --git a/Master/texmf-dist/doc/latex/ltxguidex/README.md b/Master/texmf-dist/doc/latex/ltxguidex/README.md new file mode 100644 index 00000000000..0185bd14efc --- /dev/null +++ b/Master/texmf-dist/doc/latex/ltxguidex/README.md @@ -0,0 +1,17 @@ +# The `ltxguidex` document class + +The ltxguidex document class extends ltxguide with a set of environments and +commands that make writing beautiful LaTeX documentation easier and more +natural. Currently, many packages define their own extensions to documentation +support inline with their packages, leaving everyone to copy/paste their own +contributions. + +This release of ltxguidex is an experimental public beta; it intends to +demonstrate a hopeful new direction without committing to a stable public API. + +Although ltxguidex is now suitable for use in your own documentation, do not be +surprised if future versions break your docs. + +## License + +LPPL v1.3c; see `LICENSE.txt` diff --git a/Master/texmf-dist/doc/latex/ltxguidex/ltxguidex.pdf b/Master/texmf-dist/doc/latex/ltxguidex/ltxguidex.pdf Binary files differnew file mode 100644 index 00000000000..a82c88ae71a --- /dev/null +++ b/Master/texmf-dist/doc/latex/ltxguidex/ltxguidex.pdf diff --git a/Master/texmf-dist/doc/latex/ltxguidex/ltxguidex.tex b/Master/texmf-dist/doc/latex/ltxguidex/ltxguidex.tex new file mode 100644 index 00000000000..cf2795589d8 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ltxguidex/ltxguidex.tex @@ -0,0 +1,600 @@ +\documentclass{ltxguidex} +\usepackage{fontspec} +\setmainfont{Tiempos Text} +\usepackage{FiraSans} +\usepackage{FiraMono} +\def\labeladvise{→} + +\newcommand{\ltx}{\ltxclass{ltxguidex}} +\newcommand{\ltxguide}{\ltxclass{ltxguide}} +\title{Towards Better \LaTeX\ Documentation With the \ltx\ Document Class} +\author{Rebecca Turner\thanks{Brandeis University; + \email{rebeccaturner@brandeis.edu}}} +\date{2019/01/13 v0.1.0} +\begin{document} +\maketitle + +\begin{abstract} + The \ltx\ document class extends \ltxguide\ with a set of + environments and commands that make writing beautiful \LaTeX\ + documentation easier and more natural. + + \ltx\ is licensed under the \textsc{lppl} version 1.3c, or any later + version at your choosing. + + This document is written with the \ltx\ document class. +\end{abstract} + +\begin{note} + This release of \ltx\ is an experimental public beta; it intends to + demonstrate a hopeful new direction without committing to a stable + public \textsc{api}. + + Although \ltx\ is now suitable for use in your own documentation, do + not be surprised if future versions break your docs. +\end{note} + +\begin{note} + Browse the sources, contribute, or complain at \\ + \https{github.com/9999years/ltxguidex} +\end{note} + +\tableofcontents +\vfill +\pagebreak + +\section{The state of the docs} + +\LaTeX\ documentation is easy enough to write that --- in general --- nobody +has bothered to package the improvements made to the \LaTeX documentation +systems. If one examines the documentation for their favorite package, +they'll likely find a few command definitions that make some aspect of +documentation writing more ergonomic. In the case of complex packages like +\ctan{listings} or --- in an extreme case --- \ctan{pgf}, it's commonplace +to see packages define their own internal documentation packages containing +hundreds-to-thousands of lines of documentation macros. + +This class repackages useful macros from various packages' documentation, +often changing their form (e.g.\ the macro's interface) but keeping its +style. I've tried to balance versatility against specialization (i.e.\ +determining which features are the \textit{most} useful) as well as +balancing short with descriptive names. + +\LaTeX\ documentation is enabled with two document classes and several +packages. Document classes include: +\begin{classes} + \item[ltxdoc] Defines very little other than a few + shorthands for documenting commands. Designed to be integrated with + the \docstrip\ system, but I've seen plenty of \extension{dtx} files + documented with \ltxguide. However, I haven't yet used + \docstrip, so my experience here is limited. + + \item[ltxguide] Provides several ergonomic features absent + in \ltxclass{ltxdoc}. However, \ltxguide\ is almost entirely + undocumented, a fact which is partially mitigated by the fact that + it's only about 150 lines long. \ltx\ is, as the name implies, based + on \ltxguide. +\end{classes} +And supporting packages include: +\begin{packages} + \item[hypdoc] One of many, many packages by Heiko Oberdiek. + \ctan{hypdoc} undertakes the ambitious task of patching the + \ctan{doc} package in order to generate better indexes. In my + experience, \ctan{hypdoc} is not compatible with + \ltxguide; as such, it isn't loaded in \ltx. + + \item[doctools] Provides many useful secondary commands such as + |\ltxclass|, |\package|, and so on. Many are duplicated here. + + \item[showexpl] Provides the |LTXexample| environment which typesets + \LaTeX\ code and displays it in a listing side-by-side. + \ctan{showexpl} provides the functionality of \ctan{listings}' + |\lstsample| command and more. \ctan{showexpl} does, however, rely + on the fairly hefty \ctan{listings} package. + + Compare to more ``plain'' \LaTeX\ documentation, \ltx\ documentation + can be expected to compile somewhat slower. This author is of the + opinion that the improvements are so numerous that the slow-down is + worth it. +\end{packages} + +\section{The \ltx\ document class} +Although \ltx\ provides many useful commands, much of its utility is in its +aesthetics. Much \LaTeX\ documentation is very ugly because producing +beautiful documentation requires significantly more code than most package +authors are interested in writing. This document is written with \ltx\ and +one package loaded (the \ctan{bera} font family). Because \ltx\ is written +with inherent beauty, it ends up being a bit heavier than its competitors; +notably, it loads \ctan{xcolor}, \ctan{listings}, \ctan{graphicx}, and +\ctan{calc} by default. + +\section{A note on typefaces} + +This document is set in +\href{https://klim.co.nz/retail-fonts/tiempos-text/}{Tiempos Text} and +\href{https://bboxtype.com/typefaces/FiraSans/}{Fira Sans} (available on +\textsc{ctan} as \ctan{fira}). + +For your own documents, I would recommend \ctan{bera} or \ctan{plex}, +although neither has small caps, which I consider essential. + +When deciding on a serif font for \LaTeX\ documentation, I would recommend +picking one with a tall x-height, as larger overall glyphs makes documents +easier to read on small screens (nobody's going to be printing out your +documentation). This will rule out most old-style serif typefaces, such as +Garamond and Calson. + +\section{Commands provided by \ltxguide} + +In \ltxguide, pipe characters (\texttt{\pipe}) mark verbatim text. + +However, between two pipes, the angle brackets |<<| and |>>| typeset as +pretty angle brackets with regular italics between them; therefore, +\texttt{\pipe}|<<package>>|\texttt{\pipe} typesets as |<package>|. + +To write literal angle brackets, simply double the characters; +\texttt{\pipe}|<<<<|\texttt{\pipe} will render as |<<| and +\texttt{\pipe}|>>>>|\texttt{\pipe} will render as |>>|. + +\begin{desc} +|\pipe|\\ +|\bs| +\end{desc} +To write literal pipe characters, use the |\pipe| command. To write a +literal backslash, use the |\bs| command. + +\begin{LTXexample} +\pipe \\ +\texttt{\pipe} \\ +\textit{\pipe} \\ +\textbf{\texttt{\pipe}} \\ +\bs \\ +\texttt{\bs} \\ +\textit{\bs} \\ +\textbf{\texttt{\bs}} +\end{LTXexample} + +\ltxguide\ uses \ctan{shortvrb} to activate pipes as a synonym for +short-verbatim material. There are some small conflicts with \ltx's use of +the \ctan{listings} package (in particular, pipes are silently gobbled from +|lstlistings| environments, although they work normally within |verbatim|), +which will hopefully be resolved with a coming change to \package{listings}; +this simply depends on how quickly Jobst Hoffmann emails me back. + +\ltxguide\ also provides the |decl| environment that powers the |desc| +environment. + +\begin{desc} +|\m{<placeholder>}|\\ +|\meta{<placeholder>}| +\end{desc} + +Prints |<placeholder>| in italics within angle-brackets. + +\ltx\ provides |\meta| as a synonym for |\m|. + +\begin{LTXexample} +\m{placeholder} +\end{LTXexample} + +\begin{desc} +|\arg{<argument>}| +|\oarg{<argument>}| +\end{desc} + +Shorthands for mandatory and optional arguments. + +\begin{LTXexample} +\arg{foo}\oarg{bar} +\end{LTXexample} + +\begin{desc} +\begin{tabular}{@{}ll@{}} +|\NFSS| & \NFSS\\ +|\AmS| & \AmS\\ +|\AmSLaTeX| & \AmSLaTeX\\ +|\babel| & \babel\\ +|\SLiTeX| & \SLiTeX\\ +|\ctanlogo| & \ctanlogo\\ +\end{tabular} +\end{desc} + +Various logos. + +\begin{note} + \ltxguide\ actually defines the \ctanlogo\ logo as |\ctan|, but this + class uses |\ctan| to refer to a package, so the \ctanlogo\ logo is + typeset with |\ctanlogo|. +\end{note} + +\begin{desc} +\begin{tabular}{@{}ll@{}} +|\clsguide| & \clsguide \\ +|\usrguide| & \usrguide \\ +|\fntguide| & \fntguide \\ +|\cfgguide| & \cfgguide \\ +|\cyrguide| & \cyrguide \\ +|\modguide| & \modguide \\ +|\sourcecode| & \sourcecode \\ +|\LaTeXbook| & \LaTeXbook \\ +|\LaTeXcomp| & \LaTeXcomp \\ +|\LaTeXGcomp| & \LaTeXGcomp \\ +|\LaTeXWcomp| & \LaTeXWcomp \\ +\end{tabular} +\end{desc} + +The names of various documents, presumably intended only for the original +\ltxguide\ document. + +\begin{desc} +|\eg|\\ +|\ie| +\end{desc} + +Shortcuts for ``e.g.,''\ and ``i.e.,''\ followed by a non-breaking space. + +\begin{LTXexample} +\ie the document class\dots\\ +\eg the package\dots +\end{LTXexample} + +\begin{desc} +|\NEWfeature{<version>}|\\ +|\NEWdescription{<version>}| +\end{desc} + +\NEWfeature{1.0.0} +\NEWdescription{1.0.0} +Typeset their arguments in a |\marginpar|. This paragraph is prepended by +|\NEWfeature{1.0.0}| +|\NEWdescription{1.0.0}|. + +\begin{desc} +|\URL{<url>}| +\end{desc} + +Typesets its argument in |\texttt|. Obsolete given that \ltx\ loads +\ctan{hyperref}. + +\section{New commands} +\ltx\ provides several new commands for convenience. + +\begin{desc} +|\begin{desc}...\end{desc}| +\end{desc} + +Describes a command or environment, setting it out into the margin and +surrounding it with a frame. Originally written by Javier Bezos for the +\ctan{enumitem} documenation. + +\begin{example} + Unfortunately, a side-by-side listing doesn't seem to be possible + here because pipes seem to be gobbled by the \package{listings} + package (a side-effect of loading both \ctan{listings} and + \ctan{shortvrb}, perhaps). However, here's how the |\email| command + is described in this document: + +\begin{verbatim} +\begin{desc} +|\email{<<email>>}| +\end{desc} +\end{verbatim} +\end{example} + +\begin{desc} +|\email{<email>}| +\end{desc} + +Typesets an email address with a |mailto:| link. + +\begin{example} + Emails, along with other hyperlinks, are colored |magenta|, although + \ltx's default magenta is a bit closer to purple. +\begin{LTXexample} +\email{rebeccaturner@brandeis.edu} +\end{LTXexample} +\end{example} + +\begin{desc} +|\https{<url>}|\qquad|\http{<url>}| +\end{desc} + +Typesets |<url>| with |https://| or |http://| prepended to the link address; +this makes links display a bit prettier than |\url| might. + +\begin{example} The following two listings are equivalent: +\begin{LTXexample} +\https{ctan.org} +\end{LTXexample} +\begin{LTXexample} +\href{https://ctan.org}{ctan.org} +\end{LTXexample} +\end{example} + +\begin{desc} +|\ctan{<package>}| \\ +|\ctanlogo| +\end{desc} + +Typesets a package name with a link to |ctan.org/pkg/<package>|. + +\begin{warning} + \ltx's definition of |\ctan| differs from \ltxguide's, + which simply typesets ``\ctanlogo'' in small-caps. The \ctanlogo\ + logo is typeset with |\ctanlogo|. +\end{warning} + +\begin{LTXexample} +the \ctan{listings} package\dots +\end{LTXexample} + +\begin{desc} +|\package{<package>}|\\ +|\ltxclass{<document class>}|\\ +|\option{<option name>}|\\ +|\filename{<filename>}|\\ +|\extension{<file extension>}| +\end{desc} + +Typesets a \LaTeX\ package, option, file extension, etc.\ in |\texttt|. + +\begin{note} + Unlike those defined in the \ctan{doctools} package, these commands + don't add entries to the index. +\end{note} + +\begin{LTXexample} +\extension{tex} files +\end{LTXexample} + +\begin{desc} +|\begin{warning}...\end{warning}|\\ +|\begin{note}...\end{note}|\\ +|\begin{example}...\end{example}|\\ +|\begin{bug}...\end{bug}| +\end{desc} + +These environments typeset ``notices'' with a hanging indent. Original +definitions written by Javier Bezos for the \ctan{enumitem} documenation. +|\ltxguidex@noticestyle| is executed before the marker text (``warning,'' +``note,'' etc.) in a separate group. New notice environments can be created +with |\newnotice|. + +\begin{bug} + If the first content in a notice environment is vertical, the marker + text is hidden. This can be avoided by starting the + environment with |\leavevmode\\| or by adding some introductory + material to the first line. + + This is actually a bug in the |\list| command that the notice + environments use. +\end{bug} + +\begin{example} + Although this example is short, note that subsequent lines will + be indented. These environments only vary by text. + +\begin{LTXexample} +\begin{warning} + Lorem ipsum\dots +\end{warning} +\end{LTXexample} +\end{example} + +\begin{desc} +|\newnotice{<environment name>}{<marker text>}| +\end{desc} + +Creates a new notice environment in the style of |warning|, |note|, and so +on. The marker text is automatically uppercased. + +\begin{desc} +|\begin{LTXexample}[<options>]...\end{LTXexample}| +\end{desc} + +Typesets \LaTeX\ code next to a listing of its source. Providing examples +makes your user's lives easier, and should be done as much as possible. The +|LTXexample| environment is provided by the \ctan{showexpl} package. +Excerpted from \ctan{showexpl}'s documentation as of v0.3o 2016/12/11, valid +options include: + +\begin{keys} + \key{attachfile}[\bool][false] + + If set to true the sourcecode will be attached to the + \extension{pdf} file---presumed that the document is processed by + |pdflatex|. + + \key{codefile}[\m{filename}][\bs jobname.tmp] + Name of the (temporary) file that contains the code which will be + formatted as source code. The default value is |\jobname.tmp|. + + \key{explpreset}[\m{key val list}][\{language=[LaTeX]TeX,\}] + + A |<key val list>| which serves for presetting the properties of the + formatting of the source code, for values see the documentation of + the \ctan{listings} package. The default value is + empty.\footnote{\ltx\ redefines the default to perform syntax + highlighting for \LaTeX, in addition to the general improvements + made for all listings in the document.} + + \key{graphic}[\m{filename}] + + If present, includes and displays this file instead of the formatted + code. + + \key{hsep}[\m{length}] + Defines the horizontal distance between the source code and the + formatted text. + + \key{justification}[\m{code}][\bs raggedright] + Defines the justification of the formatted text: reasonable values + are |\raggedleft|, |\raggedright|, |\centering|. + + \key{overhang}[\m{dimen}][0pt] + Defines the amount by which the formatted text and the source code + can overlap the print space. The default value is 0\,pt. + + \key{pos}[\m{\alternative{t,b,l,r,o,i}}][l] + Defines the relative position of the formatted text relating to the + source code. Allowed values are |t|, |b|, |l|, |r|, |o|, and |i| for + top, bottom, left, right, outer, and inner. The last values give + sense only for two-sided printing, where there are outer and inner + margins of a page. + + \key{preset}[\m{code}] + Any \TeX\ code executed before the sample code but not visible in + the listings area. + + \key{rangeaccept}[\bool][false] + If set to true, one can define ranges of lines that will be + excerpted from the source code. + + \key{rframe}[[\texttt{single}]][\textrm{\textit{(empty)}}] + Defines the form of the frame around the formatted text. With a + non-empty value (e.\,g. ``single'') a simple frame will be drawn. In + the future more kinds of frames will be supported. The default value + is empty (no frame). + + \key{varwidth}[\bool][false] + If set to true, the formatted text is set with its ``natural'' width + instead of a fixed width as given by the value of the option + |width|. + + \key{vsep}[\m{dimen}] + Defines the vertical distance between the source code and the + formatted text. + + \key{wide}[\bool][false] + If set to true, the source code and the formatted text overlap the + print space and the margin area. + + \key{width}[\m{dimen}] + Defines the width of the formatted text. The default value depends + of the relative positions of the source code and the formatted text. + + \key{scaled}[[\m{scale factor}]] + Without a value the formatted text will be scaled to fit the given + width of the result area. With a number as value the formatted text + will be scaled by this number. +\end{keys} + +In addition to these options the kind of the result box (default: |\fbox|) +can be changed. For example: +\begin{latexcode} +\renewcommand\ResultBox{\fcolorbox{green}{lightgray}} +\setlength\ResultBoxSep{5mm}% default: \fboxsep +\setlength\ResultBoxRule{2mm}% default: \fboxrule +\end{latexcode} + +\begin{desc} +|\begin{packages}...\end{packages}|\\ +|\begin{classes}...\end{classes}|\\ +|\begin{options}...\end{options}|\\ +\end{desc} + +Frequently, package authors need to describe a series of options, packages, +or document classes. These environments wrap the |description| environment +and provide an |\item| which wraps a command like |\package|. In the +|packages| environment, |\item[listings]| translates to +|\item[\package{listings}]|. + +\begin{LTXexample} +\begin{options} + \item[foo] \dots + \item[bar] \dots +\end{options} +\end{LTXexample} + +\begin{desc} +|\begin{advise}...\end{advise}| $\equiv$\\ +|\begin{faq}...\end{faq}|\\ +|\Q|\qquad|\A|\qquad|\advisespace| +\end{desc} + +Roughly copied from \ctan{listings}' internal \package{lstdoc} package, +these environments represent a list of questions and answers. + +\begin{LTXexample} +\begin{faq} +\Q Lorem ipsum dolor sit amet? +\A Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + +\Q Ut enim ad minim veniam, quis nostrud? +\A Exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +\end{faq} +\end{LTXexample} + +Within these environments, |\Q| and |\A| indicate a question and an answer; +they're defined to |\item| and |\advisespace|, respectively. + +\begin{note} + |faq| is an exact synonym for |advise|. + + The list label for the |advise| environment is |\labeladvise|. + + The font is set with |\advisestyle|. +\end{note} + +\begin{desc} +|\alternative{<comma list>}| +\end{desc} + +Prints a comma-separated list delimited by vertical bars. Space around +commas is not trimmed, and alternates are printed in +|\textup{\texttt{...}}|. + +This environment is from \package{lstdoc}. + +\begin{LTXexample} +\alternative{true,false} +\end{LTXexample} + +\begin{desc} +|\begin{keys}...\end{keys}|\\ +|\key[<options>]{<key name>}[<key value>][<default value>]|\\ +|\bool| +\end{desc} + +Describes keys. Within a |keys| environment, |\bool| indicates a true/false +value. This environment is a recreation of \package{lstdoc}'s |syntax| +environment with a more elegant interface. + +|<options>| can include: + +\begin{keys} + \key{v}[\m{version}] + The version a key was introduced. + + \begin{warning} + This key is currently ignored. + \end{warning} + + \key{default}[\m{default value}] + An alias for the final argument; a default value if the key isn't + given. + + \key{note}[\m{note}] + A note set in the left margin; might note a group of features or + something else. +\end{keys} + +\begin{example} + Note the use of |\bool|: +\begin{LTXexample} +\begin{keys} + \key[note=addon]{key} + [\m{value}][default] + Lorem ipsum\dots + + \key{display}[\bool][true] + Lorem ipsum\dots + + \key{foo}[\m{foo}] + \key[v=1.3]{bar} + Lorem ipsum\dots +\end{keys} +\end{LTXexample} +\end{example} + +\end{document} diff --git a/Master/texmf-dist/tex/latex/ltxguidex/ltxguidex.cls b/Master/texmf-dist/tex/latex/ltxguidex/ltxguidex.cls new file mode 100644 index 00000000000..eeab047a898 --- /dev/null +++ b/Master/texmf-dist/tex/latex/ltxguidex/ltxguidex.cls @@ -0,0 +1,217 @@ +\NeedsTeXFormat{LaTeX2e}[1994/12/01] +\ProvidesClass{ltxguidex}[2019/01/13 v0.1.0 Extended LaTeX documentation class] +% Description: An improved document class for writing LaTeX documentation +% with extra tools for authors. +% Homepage: https://github.com/9999years/ltxguidex +% https://ctan.org/pkg/ltxguidex +% Maintainer: Rebecca Turner <637275@gmail.com> +% +% 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 Rebecca Turner <637275@gmail.com>. +% +% This work consists of the files ltxguidex.cls and ltxguidex.tex. + +\raggedright +\parskip=.8ex +\advance\oddsidemargin-.5cm +\advance\textwidth1cm +\addtolength{\textheight}{2cm} +\addtolength{\topmargin}{-1.5cm} + +\LoadClass{ltxguide} + +%\RequirePackage{hypdoc} +%\RequirePackage[ + %loadHyperref=false, + %createIndexEntries=false +%]{doctools} +\RequirePackage[colorlinks=true]{hyperref} +\RequirePackage{xparse} +\RequirePackage{xkeyval} +\RequirePackage{xcolor} +\RequirePackage{framed} +\RequirePackage{showexpl} +\RequirePackage{enumitem} + +\definecolor{red} {HTML}{BF4C4C} +\definecolor{green} {HTML}{4CBF67} +\definecolor{orange} {HTML}{BF8D4C} +\definecolor{cyan} {HTML}{4CA0BF} +\definecolor{magenta}{HTML}{594CBF} +\definecolor{light} {HTML}{F5F5ED} + +\definecolor{notes}{named}{red} +\definecolor{shadecolor}{named}{light} + +\lstset{ + basicstyle=\ttfamily, + numbers=none, + aboveskip=1em, + belowskip=0.5em, + breaklines, + breakatwhitespace=true, + tabsize=4, + keywordstyle={\bfseries\color{magenta}}, + commentstyle={\color{green}}, + stringstyle={\color{orange}}, + backgroundcolor={\color{shadecolor}}, +} + +% For showexpl +\renewcommand{\SX@explpreset}{ + language=[LaTeX]TeX, +} + +%\newcommand{\ltxguidex@suppressindent}{\par\@afterindentfalse\@afterheading} + +\newenvironment{desc} + {\if@nobreak + \vskip-\lastskip + \vspace*{-2.5ex}% + \fi + \decl} + {\enddecl} + +\newcommand{\ltxguidex@noticestyle}{\sffamily\bfseries\color{notes}} +\def\@begintheorem#1#2{% + \list{}{}% + \global\advance\@listdepth\m@ne + \item[{\ltxguidex@noticestyle\MakeUppercase{#1}}]} +\newcommand{\newnotice}[2]{\newtheorem{#1}{#2}} + +\newnotice{warning}{Warning} +\newnotice{note}{Note} +\newnotice{example}{Example} +\newnotice{bug}{Bug} + +\let\bblxv\verbatim +\let\bblexv\endverbatim +\def\verbatim{\begin{shaded*}\bblxv\vskip-\baselineskip\vskip2.5\parsep} +\def\endverbatim{\bblexv\vskip-2\baselineskip\end{shaded*}} + +\addtolength{\topmargin}{-3pc} +\addtolength{\textwidth}{6pc} +\addtolength{\oddsidemargin}{-2pc} +\addtolength{\textheight}{7pc} + +\raggedright +\parindent1.8em +\parskip0pt + +\newcommand\New[1]{% + \colorbox[rgb]{.87, .9, .83}{New #1}\enspace\ignorespaces} + +\lstnewenvironment{latexcode} + {\lstset{language=[LaTeX]TeX}}{} + +% Arguments: +% Environment defining command (e.g. \newenvironment or \renewenvironment) +% Environment name +% \makelabel command +\newcommand{\@newdescriptionenvironment}[3] + {\expandafter#1{#2}% + {\begin{description}% + \let\makelabel#3} + {\end{description}}} + +% Arguments: +% Environment name +% \item label wrapping command +\newcommand{\newdescriptionenvironment}[2] + {\@newdescriptionenvironment{\newenvironment}{#1}{#2}} +\newcommand{\renewdescriptionenvironment}[2] + {\@newdescriptionenvironment{\renewenvironment}{#1}{#2}} + +\newdescriptionenvironment{packages}{\package} +\newdescriptionenvironment{classes}{\ltxclass} +\newdescriptionenvironment{options}{\option} + +% from lstdoc +\def\advisespace{\hbox{}\qquad} +\def\labeladvise{$\to$} +\def\advisestyle{\footnotesize\sffamily} +\newenvironment{advise} + {\begin{itemize}[ + label=\labeladvise, + itemsep=0pt, + ]% + \advisestyle + \let\Q\item + \let\A\advisespace + } + {\end{itemize}} + +% alias `advise' to `faq' +\let\faq\advise +\let\endfaq\endadvise + +% from ltxdoc; ``iterates down the list and inserts vertical rules'' between +% items +\def\alternative#1{\lst@true \alternative@#1,\relax,} +\def\alternative@#1,{% + \ifx\relax#1\@empty + \expandafter\@gobble + \else + \ifx\@empty#1\@empty\else + \lst@if \lst@false \else $\vert$\fi + \textup{\texttt{#1}}% + \fi + \fi + \alternative@} + +\define@cmdkeys{ltxkey}{v, note, default} +\newenvironment{keys} + {\begin{description}[font={}, mode=unboxed]% + \def\makelabel##1{}% + \providecommand{\bool}{\m{\alternative{true,false}}}% + \NewDocumentCommand{\key}{o m o o}{{% + \IfValueT{##1}{% + \setkeys{ltxkey}{##1}% + }% + \item[\texttt{##2}]% + \leavevmode + \@ifundefined{cmdKV@ltxkey@note}{}{% + \llap{\footnotesize\textit{\cmdKV@ltxkey@note}\quad}% + }% + \texttt{\textbf{\color{magenta}##2}}% + \IfValueT{##3}{% + \texttt{=}##3% + }% + \IfValueT{##4}{% + \hfill\texttt{##4}% + }% + \@ifundefined{cmdKV@ltxkey@default}{}{% + \hfill\texttt{\cmdKV@ltxkey@default}% + }% + \par + }}% + } + {\end{description}} + +\providecommand{\package} [1]{\texttt{#1}} +\providecommand{\ltxclass} [1]{\texttt{#1}} +\providecommand{\option} [1]{\texttt{#1}} +\providecommand{\extension}[1]{\texttt{.#1}} +\providecommand{\filename} [1]{\texttt{#1}} +\providecommand{\meta} [1]{\m{#1}} + +\newcommand{\docstrip}{\textsc{docstrip}} +\let\ctanlogo\ctan +\newcommand{\pipe}{\char"7C} +\newcommand{\bs}{\char"5C} + +\newcommand{\email}[1]{\href{mailto:#1}{#1}} +\newcommand{\http}[1]{\href{http://#1}{#1}} +\newcommand{\https}[1]{\href{https://#1}{#1}} +\renewcommand{\ctan}[1]{\href{https://ctan.org/pkg/#1}{\package{#1}}} +\NewExpandableDocumentCommand{\Th}{O{l} m} + {\multicolumn{1}{#1}{\textbf{#2}}} |