diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/parskip |
Initial commit
Diffstat (limited to 'macros/latex/contrib/parskip')
-rw-r--r-- | macros/latex/contrib/parskip/README.md | 21 | ||||
-rw-r--r-- | macros/latex/contrib/parskip/changes.txt | 20 | ||||
-rw-r--r-- | macros/latex/contrib/parskip/parskip-2001-04-09.sty | 86 | ||||
-rw-r--r-- | macros/latex/contrib/parskip/parskip-code.pdf | bin | 0 -> 224255 bytes | |||
-rw-r--r-- | macros/latex/contrib/parskip/parskip-code.tex | 5 | ||||
-rw-r--r-- | macros/latex/contrib/parskip/parskip.dtx | 421 | ||||
-rw-r--r-- | macros/latex/contrib/parskip/parskip.ins | 67 | ||||
-rw-r--r-- | macros/latex/contrib/parskip/parskip.pdf | bin | 0 -> 175252 bytes | |||
-rw-r--r-- | macros/latex/contrib/parskip/parskip.tex | 4 |
9 files changed, 624 insertions, 0 deletions
diff --git a/macros/latex/contrib/parskip/README.md b/macros/latex/contrib/parskip/README.md new file mode 100644 index 0000000000..19394adfa2 --- /dev/null +++ b/macros/latex/contrib/parskip/README.md @@ -0,0 +1,21 @@ +# parskip package + +----- + +This package is a reimplementation (with extensions) of a package with +the same name written by Hubert Partl in 1989 and later maintained by +Robin Fairbairns. + +Package source can be found below: + +https://github.com/FrankMittelbach/fmitex/ (development branch parskip) + +The license is LPPL. + +----- + +Copyright (C) 2018 Frank Mittelbach<br /> +<https://latex-project.org/> <br /> +All rights reserved. + + diff --git a/macros/latex/contrib/parskip/changes.txt b/macros/latex/contrib/parskip/changes.txt new file mode 100644 index 0000000000..e76b860cb9 --- /dev/null +++ b/macros/latex/contrib/parskip/changes.txt @@ -0,0 +1,20 @@ +2019-01-16 Frank Mittelbach <Frank.Mittelbach@latex-project.org> + + * parskip.dtx (subsubsection{Option handling}): + Support calc package by using \setlength for assignments + +2018-09-17 Frank Mittelbach <Frank.Mittelbach@latex-project.org> + + * parskip.dtx (subsubsection{\pkg{amsthm} theorems}): + Support amsthm (sx/450551) + +#### placed on CTAN as 2.0a #### + +2018-08-24 Frank Mittelbach <Frank.Mittelbach@latex-project.org> + + * parskip.dtx version 2.0 with options indent + skip and + adjustment for display headings + +2018-08-22 Frank Mittelbach <Frank.Mittelbach@latex-project.org> + + * package source as copied from CTAN diff --git a/macros/latex/contrib/parskip/parskip-2001-04-09.sty b/macros/latex/contrib/parskip/parskip-2001-04-09.sty new file mode 100644 index 0000000000..6148e4362b --- /dev/null +++ b/macros/latex/contrib/parskip/parskip-2001-04-09.sty @@ -0,0 +1,86 @@ +% parskip.sty; last edited by Robin Fairbairns (rf10@cam.ac.uk), +% derived from: +% +% This is PARSKIP.STY by H.Partl, TU Wien, as of 19 Jan 1989. +% +% Package to be used with any document class at any size. +% It produces the following Paragraph Layout: +% Zero Parindent and non-zero Parskip. The stretchable glue in \parskip +% helps LaTeX in finding the best place for page breaks. +% +% This package is no more than quick fix; the `proper' way to achieve +% effects as far-reaching as this is to create a new class. An +% example class is to be found in the ntgclass set: artikel3.cls + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{parskip}[2001/04/09 non-zero parskip adjustments] + +\parskip=0.5\baselineskip \advance\parskip by 0pt plus 2pt +\parindent=\z@ + +% +% from a suggestion by Donald Arseneau on comp.text.tex: + +\DeclareOption{parfill}{\setlength{\parfillskip}{30\p@ \@plus 1fil}} +\ProcessOptions + +% To accompany this, the vertical spacing in the list environments is changed +% to use the same as \parskip in all relevant places (for normalsize only): +% \parsep = \parskip +% \itemsep = \z@ % add nothing to \parskip between items +% \topsep = \z@ % add nothing to \parskip before first item + +\def\@listI{\leftmargin\leftmargini + \topsep\z@ \parsep\parskip \itemsep\z@} +\let\@listi\@listI +\@listi + +\def\@listii{\leftmargin\leftmarginii + \labelwidth\leftmarginii\advance\labelwidth-\labelsep + \topsep\z@ \parsep\parskip \itemsep\z@} + +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii\advance\labelwidth-\labelsep + \topsep\z@ \parsep\parskip \itemsep\z@} + +% and, now... +% \partopsep = \z@ % don't even add anything before first item (beyond +% % \parskip) even if the list is preceded by a blank line +\partopsep=\z@ + +% Note that listiv, listv and listvi don't change vertical parameters. + +% deal with a problem raised on comp.text.tex in april 2001 +% +% don't expand the table of contents any further +% +% first: check that the definition of \@starttoc is unchanged from +% that in latex.ltx +\@ifundefined{CheckCommand}{}{% + \CheckCommand*{\@starttoc}[1]{% + \begingroup + \makeatletter + \@input{\jobname.#1}% + \if@filesw + \expandafter\newwrite\csname tf@#1\endcsname + \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax + \fi + \@nobreakfalse + \endgroup}} +% +% now having generated any warning that might help, redefine +\renewcommand*{\@starttoc}[1]{% + \begingroup + \makeatletter + \parskip\z@ + \@input{\jobname.#1}% + \if@filesw + \expandafter\newwrite\csname tf@#1\endcsname + \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax + \fi + \@nobreakfalse + \endgroup +} + +\endinput + diff --git a/macros/latex/contrib/parskip/parskip-code.pdf b/macros/latex/contrib/parskip/parskip-code.pdf Binary files differnew file mode 100644 index 0000000000..453269b738 --- /dev/null +++ b/macros/latex/contrib/parskip/parskip-code.pdf diff --git a/macros/latex/contrib/parskip/parskip-code.tex b/macros/latex/contrib/parskip/parskip-code.tex new file mode 100644 index 0000000000..b7a2e230ec --- /dev/null +++ b/macros/latex/contrib/parskip/parskip-code.tex @@ -0,0 +1,5 @@ +% this will typeset documentation + code + +\AtBeginDocument{\AlsoImplementation} +\input{parskip.dtx} + diff --git a/macros/latex/contrib/parskip/parskip.dtx b/macros/latex/contrib/parskip/parskip.dtx new file mode 100644 index 0000000000..731cb2a9f4 --- /dev/null +++ b/macros/latex/contrib/parskip/parskip.dtx @@ -0,0 +1,421 @@ +% \iffalse meta-comment +% +%% File: parskip.dtx +%% (C) Copyright 1989 H.Partl, TU Wien +%% (C) Copyright 2001 Robin Fairbairns +%% (C) Copyright 2018-2019 Frank Mittelbach +% +% It may be distributed and/or modified under the conditions of the +% LaTeX Project Public License (LPPL), either version 1.3c of this +% license or (at your option) any later version. The latest version +% of this license is in the file +% +% https://www.latex-project.org/lppl.txt +% +% +% The development version of the bundle can be found below +% +% https://github.com/FrankMittelbach/fmitex/ +% +% for those people who are interested or want to report an issue. +% +%<*driver> +\documentclass{article} +\usepackage{doc,url} +\EnableCrossrefs +\CodelineIndex +\begin{document} + \DocInput{parskip.dtx} +\end{document} +%</driver> +% +% \fi +% +% +% \newcommand\option[1]{\texttt{#1}} +% \newcommand\cs[1]{\texttt{\bslash#1}} +% \newcommand\pkg[1]{\textsf{#1}} +% +% \title{The \texttt{parskip} package\thanks{This is a +% reimplementation of a package originally written by Hubert Partl +% in 1989 and later maintained by Robin Fairbairns.}} +% \author{Frank Mittelbach} +% +% \maketitle +% +% \begin{abstract} +% The \pkg{parskip} package helps in implementing paragraph layouts +% where the paragraphs are separated by a vertical space instead of +% (or in addition to) indenting them. +% +% The package can be used with any document class at any size. By +% default it produces the following paragraph layout: Zero +% \cs{parindent} and non-zero \cs{parskip}. The stretchable glue in +% \cs{parskip} helps \LaTeX{} in finding the best place for page +% breaks. +% +% \end{abstract} +% +% \section{Introduction} +% +% Many \LaTeX{} constructs are internally built by using the paragraph +% mechanism even if technically there aren't text paragraphs. In most +% such cases the \LaTeX{} code handles indentation and suppressed it +% if necessary. But unfortunately this is normally not done for +% \cs{parskip} (as that is zero in the default layouts) and thus +% changing it will result in vertical spaces in unexpected places. +% +% This package attempts to fix the spacing in table of contents +% structures, list environments, and around display headings that would +% get screwed up by a positive \cs{parskip} value. +% +% It is, however, is no more than quick fix; the `proper' way to +% achieve effects as far-reaching as this is to create a new class. +% +% \subsection{History} +% +% This file was originally developed by Hubert Partl in 1989 (i.e., +% for \LaTeX\,2.09) to provide a somewhat crude solution to an +% existing problem in case no proper document class (back then called +% document style) support was available. +% +% About ten years later Robin Fairbairns picked up the orphaned +% package and his version was then the one available for \LaTeXe{} +% during the next 15\textsuperscript{+} years. +% +% Finally, while working on the next edition of the \LaTeX{} Companion +% the current author did a reimplementation, that added support for TOC +% data and heading structures. Also a few additional key/value options +% were added to make the package more useful. It still is and will +% remain an inferior choice compared to a properly designed document +% class. But it offers a starting point if nothing is around. +% +% +% +% \section{The user interface} +% +% The \pkg{parskip} package doesn't offer any document user commands +% and just needs loading with \cs{usepackage}. +% +% +% \subsection{Options to customize the package}\label{sec:options} +% +% All of the package options are implemented as key/value options. +% \begin{description} +% \item[\option{skip}] +% With the package option \texttt{skip} it is possible to explicitly +% specify the vertical space between paragraphs. If the option is +% not given (or given without a value) then \verb=.5\baselineskip= +% plus \texttt{2pt} of stretch is assumed. +% \item[\option{indent}] +% With the package option \texttt{indent} it is possible to explicitly +% the paragraph indentation. Using this option without a value keeps the +% document class indentation unchanged, if it is specified with a +% value then that value is used. If the package is loaded without +% this option +% the indentation is set +% to zero. +% \item[\option{parfill}] +% With package option \texttt{parfill}, the package also adjusts +% \cs{parfillskip} to impose a minimum space at the end of +% the last line of a paragraph. If specified without a value then +% \texttt{30pt} are assumed, if a value is given that forms the minimum. +% \end{description} +% +% +% \section{Differences to the original package} +% +% If the package is used without any options or just with the option +% \option{parfill} it behaves like the earlier version, except that now +% the spacing around headings is also adjusted (not adding extra +% \cs{parskip}). If this is not desirable when processing an old +% document it can be avoided by explicitly +% requesting version \texttt{v1} as follows: +% \begin{quote} +% \verb/\usepackage{parskip}[=v1]/ +% \end{quote} +% Of course, the new options, etc.\ are then also not available. +% +% +% +% \section{Sources, bugs and issues} +% +% The official production version is available from CTAN. +% The latest (development) sources are maintained at GitHub at: +% \begin{quote} +% \url{https://github.com/FrankMittelbach/fmitex/tree/parskip/parskip} +% \end{quote} +% In case of problems with the package you can report them at +% \begin{quote} +% \url{https://github.com/FrankMittelbach/fmitex/issues} +% \end{quote} +% Please provide a minimal test example that can be run and doesn't +% use packages not in a standard \LaTeX{} distribution (and as little +% as possible to show the issue). +% +% \StopEventually{} +% +% +% +% +% \section{The Implementation} +% +% \setcounter{StandardModuleDepth}{1} ^^A everything is inside a module +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% \subsection{The main implementation part} +% +% +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e}[2018-04-01] + +\DeclareRelease {v1}{2001-04-09}{parskip-2001-04-09.sty} +\DeclareCurrentRelease{v2}{2018-08-24} +% \end{macrocode} +% +% \begin{macrocode} +\ProvidesPackage{parskip}[2019-01-16 v2.0c non-zero parskip adjustments] +% \end{macrocode} +% +% +% +% \subsubsection{Option handling} +% +% Here we define all option keys for use as package options: +% \begin{macrocode} +\RequirePackage{kvoptions} +\SetupKeyvalOptions{family=parskip,prefix=parskip@} +% \end{macrocode} +% +% The key \option{indent} defines the amount of indentation for each +% paragraph. If not given the indentation will be zero (default) and +% if given without a value then the outer value from the document +% class will get used, otherwise the given value is used. +% \begin{macrocode} +\DeclareStringOption[0pt]{indent}[\parindent] +% \end{macrocode} +% +% The key \option{parfill} defines a minimum amount of white space +% that should be left in the last line. By default the last line can +% get completely fill up. If given without a value the default (as +% before) is to require a minimum of \texttt{30pt}, otherwise the +% given value is used. +% \begin{macrocode} +\DeclareStringOption[0pt]{parfill}[30pt] +% \end{macrocode} +% +% The key \option{skip} defines the vertical separation between +% paragraphs. If not given the default (as before) is to use half a +% \cs{baselineskip} plus a stretch of \texttt{2pt} to add some +% flexibility. If given, one need to provide an explicit value which +% is then used as a separation (and it needs to contain any extra +% stretch if that is wanted, i.e., there is no extra stretch added +% in this case). +% \begin{macrocode} +\DeclareStringOption{skip} +% \end{macrocode} +% +% +% Execute any package options: +% \begin{macrocode} +\ProcessKeyvalOptions* +% \end{macrocode} +% +% So now we can evaluate the given options and adjust the +% parameter settings: +% \begin{macrocode} +\ifx\parskip@skip\@empty +% \end{macrocode} +% If no \option{skip} was given (or it was empty) set \cs{parskip} +% to \verb=.5\baselineskip= plus \texttt{2pt} stretch. This has to +% be done in 2 steps as \cs{baselineskip} might already contain a stretch. +% \begin{macrocode} + \parskip.5\baselineskip + \advance\parskip 0pt plus 2pt\relax +\else +% \end{macrocode} +% Otherwise set it to the specified value: +% \changes{v2.0c}{2019/02/16}{Support calc by using \cs{setlength} +% for assignments} +% \begin{macrocode} + \setlength\parskip\parskip@skip +\fi +% \end{macrocode} +% Setting \cs{parfillskip} was suggested by Donald Arseneau at some +% point on comp.text.tex: +% \begin{macrocode} +\setlength\parfillskip\parskip@parfill +\advance\parfillskip 0pt plus 1fil\relax +% \end{macrocode} +% \cs{parindent} gets whatever was specified. If the key was given +% without an option this will essentially reassign the now ``current'' value. +% \begin{macrocode} +\setlength\parindent\parskip@indent +% \end{macrocode} +% +% +% +% \subsection{Handling document elements} +% +% Setting up a non-zero \cs{parskip} has some side-effects in document +% elements such as lists or headings etc. Here we try to keep these +% side-effects somewhat under control. +% +% We make use of the \pkg{etoolbox} package to do patching. +% \begin{macrocode} +\RequirePackage{etoolbox} +% \end{macrocode} +% +% \subsubsection{Lists} +% +% To accompany this, the vertical spacing in the list environments is changed +% to use the same as \cs{parskip} in all relevant places (for +% \cs{normalsize} only), i.e. +%\begin{verbatim} +% \parsep = \parskip +% \itemsep = \z@ % add nothing to \parskip between items +% \topsep = \z@ % add nothing to \parskip before first item +%\end{verbatim} +% +% However, if the user explicitly asked for a zero parskip (via the \option{skip} option) we +% shouldn't do this but rather keep the default list settings, so +% we better check for this. +% +% \begin{macrocode} +\ifdim \parskip > 0pt +% \end{macrocode} +% +% \begin{macrocode} + \def\@listI{\leftmargin\leftmargini + \topsep\z@ \parsep\parskip \itemsep\z@} + \let\@listi\@listI + \@listi +% \end{macrocode} +% +% \begin{macrocode} + \def\@listii{\leftmargin\leftmarginii + \labelwidth\leftmarginii\advance\labelwidth-\labelsep + \topsep\z@ \parsep\parskip \itemsep\z@} +% \end{macrocode} +% +% \begin{macrocode} + \def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii\advance\labelwidth-\labelsep + \topsep\z@ \parsep\parskip \itemsep\z@} +% +% and finally ... +% \partopsep = \z@ % don't even add anything before first item (beyond +% % \parskip) even if the list is preceded by a blank line + \partopsep=\z@ +\fi +% \end{macrocode} +% +% +% \subsubsection{TOCs and similar lists} +% +% Within a table of contents or a list of figures we don't want any +% additional vertical spacing just because the individual lines in +% such a list are implemented as one-line paragraphs. So we locally +% set the \cs{parskip} to zero. Should be really something that is +% done already in \LaTeX{}. +% \begin{macrocode} +\patchcmd\@starttoc + {\begingroup \makeatletter} + {\begingroup \makeatletter \parskip\z@} + {}{\typeout{Couldn't patch \string\@starttoc}} +% \end{macrocode} +% +% +% +% +% \subsubsection{Standard headings} +% +% For the same reason we don't want to see an additional \cs{parskip} +% being added before and after a display heading, so we subtract its +% value (in two places): +% \begin{macrocode} +\patchcmd\@startsection + {\addvspace\@tempskipa} + {\advance\@tempskipa-\parskip\addvspace\@tempskipa} + {}{\typeout{Couldn't patch \string\@startsection}} +% \end{macrocode} +% +% \begin{macrocode} +\patchcmd\@xsect + {\vskip\@tempskipa} + {\advance\@tempskipa-\parskip\vskip\@tempskipa} + {}{\typeout{Couldn't patch \string\@xsect}} +% \end{macrocode} +% +% +% +% +% \subsubsection{\pkg{titlesec} headings} +% +% If \pkg{titlesec} is used then headings are built using different +% commands and we have to cancel the \cs{parskip} there. The principle +% is the same. Of course, the patching should only happen if that +% package really got loaded, so we defer it to the start of the +% document and test for it: +% \begin{macrocode} +\AtBeginDocument{% +\ifx\ttl@straight@ii\@undefined\else % titlesec got loaded +\patchcmd\ttl@straight@ii + {\addvspace{\@tempskipa}}% + {\advance\@tempskipa-\parskip \addvspace\@tempskipa}% + {}{\typeout{Couldn't patch \string\ttl@straight@ii}}% +\patchcmd\ttl@straight@ii + {\vspace{\@tempskipb}}% + {\advance\@tempskipb-\parskip \vspace\@tempskipb}% + {}{\typeout{Couldn't patch \string\ttl@straight@ii}}% +\patchcmd\ttl@part@ii + {\vspace*{\@tempskipa}}% + {\advance\@tempskipa-\parskip \vspace*\@tempskipa}% + {}{\typeout{Couldn't patch \string\ttl@part@ii}}% +\patchcmd\ttl@part@ii + {\vspace{\@tempskipb}}% + {\advance\@tempskipb-\parskip \vspace\@tempskipb}% + {}{\typeout{Couldn't patch \string\ttl@part@ii}}% +\patchcmd\ttl@page@ii + {\vspace*{\@tempskipa}}% + {\advance\@tempskipa-\parskip \vspace*\@tempskipa}% + {}{\typeout{Couldn't patch \string\ttl@page@ii}}% +\patchcmd\ttl@page@ii + {\vspace{\@tempskipb}}% + {\advance\@tempskipb-\parskip \vspace\@tempskipb}% + {}{\typeout{Couldn't patch \string\ttl@page@ii}}% +\fi} +% \end{macrocode} +% +% +% +% \subsubsection{\pkg{amsthm} theorems} +% +% The \pkg{amsthm} package is one of the few packages that make an +% explicit correction for \cs{parskip} which isn't any longer adequate +% if this \pkg{parskip} package is loaded. We therefore remove that +% setting from the package if it was loaded. +% \changes{v2.0b}{2018/09/17}{Support \cs{amsthm} (sx/450551)} +% \begin{macrocode} +\AtBeginDocument{% +\ifx\deferred@thm@head\@undefined\else % amsthm got loaded +\patchcmd\deferred@thm@head + {\addvspace{-\parskip}}{}% + {}{\typeout{Couldn't patch \string\deferred@thm@head!}}% +\fi} +% \end{macrocode} +% +% +% \subsection{Closing shop} +% + +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% \Finale +% +\endinput diff --git a/macros/latex/contrib/parskip/parskip.ins b/macros/latex/contrib/parskip/parskip.ins new file mode 100644 index 0000000000..4ea23e43b7 --- /dev/null +++ b/macros/latex/contrib/parskip/parskip.ins @@ -0,0 +1,67 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the dtx file(s) in this package when run through +%% LaTeX or TeX. +%% +%% Copyright 2018 Frank Mittelbach +%% +%% +%% This file is part of the parskip Bundle for LaTeX. +%% ------------------------------------------------------------- +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% 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.3c or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% In particular, NO PERMISSION is granted to modify the contents of this +%% file since it contains the legal notices that are placed in the files +%% it generates. +%% +%% +%% +%% --------------- start of docstrip commands ------------------ +%% +\input l3docstrip + +\keepsilent + +\usedir{tex/latex/contrib/parskip} + +\preamble + +This is a generated file. + +Copyright 2018 Frank Mittelbach + +This file was generated from file(s) of the LaTeX `parskip Bundle'. +------------------------------------------------------------------- + +It may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either version 1.3c +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.3c or later is part of all distributions of LaTeX +version 2005/12/01 or later. + +This file may only be distributed together with a copy of the LaTeX +`parskip Bundle'. You may however distribute the `parskip Bundle' +without such generated files. + +The newest sources can be found below + + https://github.com/FrankMittelbach/fmitex/ + +where one can also log issues in case there are any. + + +\endpreamble + + +\generate{\file{parskip.sty}{\from{parskip.dtx}{package}}} + +\endbatchfile diff --git a/macros/latex/contrib/parskip/parskip.pdf b/macros/latex/contrib/parskip/parskip.pdf Binary files differnew file mode 100644 index 0000000000..9d13c7e913 --- /dev/null +++ b/macros/latex/contrib/parskip/parskip.pdf diff --git a/macros/latex/contrib/parskip/parskip.tex b/macros/latex/contrib/parskip/parskip.tex new file mode 100644 index 0000000000..f599c7b048 --- /dev/null +++ b/macros/latex/contrib/parskip/parskip.tex @@ -0,0 +1,4 @@ +% this will typeset only documentation but not the code + +\AtBeginDocument{\OnlyDescription} +\input{parskip.dtx} |