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/nowidow |
Initial commit
Diffstat (limited to 'macros/latex/contrib/nowidow')
-rw-r--r-- | macros/latex/contrib/nowidow/README | 1 | ||||
-rw-r--r-- | macros/latex/contrib/nowidow/nowidow.dtx | 277 | ||||
-rw-r--r-- | macros/latex/contrib/nowidow/nowidow.ins | 57 | ||||
-rw-r--r-- | macros/latex/contrib/nowidow/nowidow.pdf | bin | 0 -> 174739 bytes |
4 files changed, 335 insertions, 0 deletions
diff --git a/macros/latex/contrib/nowidow/README b/macros/latex/contrib/nowidow/README new file mode 100644 index 0000000000..a4ce787371 --- /dev/null +++ b/macros/latex/contrib/nowidow/README @@ -0,0 +1 @@ +This package provides a useful macro to manage widow lines. diff --git a/macros/latex/contrib/nowidow/nowidow.dtx b/macros/latex/contrib/nowidow/nowidow.dtx new file mode 100644 index 0000000000..b7331bf4ea --- /dev/null +++ b/macros/latex/contrib/nowidow/nowidow.dtx @@ -0,0 +1,277 @@ +% \iffalse meta-comment +% +% Copyright (C) 2011 by Raphaël Pinson <raphink@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 Raphaël Pinson. +% +% This work consists of the files nowidow.dtx and nowidow.ins +% and the derived filebase nowidow.sty. +% +% \fi +% +% \iffalse +%<*driver> +\ProvidesFile{nowidow.dtx} +%</driver> +%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01] +%<package>\ProvidesPackage{nowidow} +%<*package> + [2011/09/20 1.0 Easily prevent widows and orphans] +%</package> +% +%<*driver> +\documentclass{ltxdoc} +\usepackage{nowidow}[2011/09/14] +\usepackage{epigraph} +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} + \DocInput{nowidow.dtx} + \PrintChanges + \PrintIndex +\end{document} +%</driver> +% \fi +% +% \CheckSum{55} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% +% \changes{1.0}{2011/09/20}{Improve documentation} +% \changes{0.4}{2011/09/14}{Add orphan management} +% \changes{0.3}{2011/09/13}{Add setnowidow command and package options} +% \changes{0.2}{2011/09/11}{Fix nowidow@X} +% \changes{0.1}{2011/09/11}{Initial version} +% +% \DoNotIndex{\newcommand,\newenvironment} +% +% \providecommand*{\url}{\texttt} +% \GetFileInfo{nowidow.dtx} +% \title{The \textsf{nowidow} package} +% \author{Rapha\"el Pinson \\ \url{raphink@gmail.com}} +% \date{\fileversion~from \filedate} +% +% \maketitle +% +% \section{Introduction} +% +% \setlength{\epigraphwidth}{15em} +% \renewcommand{\epigraphsize}{\footnotesize} +% \epigraph{% +% Religion that is pure and undefiled \\ +% \hspace{2em} before God, the Father, is this: \\ +% \hspace{2em} to visit orphans and widows \\ +% \hspace{5em} in their affliction, \\ +% \hspace{5em} and to keep oneself \\ +% \hspace{5em} unstained from the world. +% }{James~1:27 --- ESV} +% +% This package was based on the answer to a +% question\footnote{\url{http://tex.stackexchange.com/questions/26272/expansion-issue-with-begingroup-and-foreach/26275\#26275}} +% about expansion with |\begingroup| and |\foreach| asked on \url{http://tex.stackexchange.com}. +% Thanks to Martin Scharrer\footnote{\url{http://tex.stackexchange.com/users/2975/martin-scharrer}} for his solution. +% +% Widows (single lines at the top of a page) and orphans +% (single lines at the bottom of a page) happen frequently +% and should be avoided. +% +% The |\widowpenalties| and |\clubpenalties| commands allow to prevent them, +% but their syntax is a bit complex to use. +% +% The \textsf{nowidow} package provides |\nowidow| and |\noclub| commands +% which are simpler to use in order to prevent widows and orphans. +% +% \section{Usage} +% +% To load the package, use: +% +% \begin{verbatim} +% \usepackage[<options>]{nowidow} +% \end{verbatim} +% +% When no options are specified, the package will only provide macros +% and not load any settings automatically. +% The following sections describe the possible options for this package. +% +% \subsection{Options} +% +% \DescribeMacro{defaultlines=<value>} +% +% The \texttt{defaultlines} option +% sets the default minimal number of lines +% to be kept after or before the page break. +% +% \DescribeMacro{all} +% +% The \texttt{all} option sets the widow and orphan penalties +% for the whole document upon loading the package, for example: +% +% \begin{verbatim} +% \usepackage[defaultlines=4,all]{nowidow} +% \end{verbatim} +% +% \subsection{Commands} +% +% \DescribeMacro{\nowidow} +% +% To prevent widows in a paragraph, call |\nowidow| +% immediatly at the end of the paragraph (without an empty line), +% optionally followed by the minimal number of lines you +% want after the page break: +% +% \begin{verbatim} +% This paragraph overflows to the next page, +% but I really don't want any widows in it. +% \nowidow[3] +% \end{verbatim} +% +% The minimal number of lines to be kept after +% the page break defaults to 2 if not specified +% or overridden by the \texttt{defaultlines} option. +% +% \DescribeMacro{\setnowidow} +% +% This macro is similar to |\nowidow| but sets +% the widow penalty for the whole document +% instead of the current paragraph only. +% +% This macro is used when the package is loaded +% with the \texttt{all} option. +% +% \DescribeMacro{\noclub} +% +% This is similar to the |\nowidow| command +% but prevents orphans at the end of a page: +% +% \begin{verbatim} +% This paragraph overflows to the next page, +% but I really don't want any orphans in it. +% \noclub[3] +% \end{verbatim} +% +% The minimal number of lines to be kept before +% the page break defaults to 2 if not specified +% or overridden by the \texttt{defaultlines} option. +% +% \DescribeMacro{\setnoclub} +% +% This macro is similar to |\noclub| but sets +% the orphan penalty for the whole document +% instead of the current paragraph only. +% +% This macro is used when the package is loaded +% with the \texttt{all} option. +% +% \StopEventually{} +% +% \section{Implementation} +% +% \iffalse +%<*package> +% \fi +% +% \begin{macrocode} +\ProvidesPackage{nowidow} +% \end{macrocode} +% +% \begin{macro}{Options} +% \begin{macrocode} +\RequirePackage{kvoptions} +\SetupKeyvalOptions{ + family=nowidow, + prefix=nowidow@, +} +\DeclareStringOption[2]{defaultlines} +\DeclareBoolOption{all} +\ProcessKeyvalOptions* +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\nowidow@X} +% \begin{macrocode} +\def\nowidow@X#1{% + \ifnum#1<\nowidowmax + 10000 + \expandafter\nowidow@X\expandafter{% + \the\numexpr(#1)+1\expandafter\relax\expandafter}% + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\setnowidow} +% \begin{macrocode} +\newcommand{\setnowidow}[1][\nowidow@defaultlines]{% + \mathchardef\nowidowmax#1\relax + \widowpenalties #1 \nowidow@X{1} 0\par +} +\ifnowidow@all + \setnowidow +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\nowidow} +% \begin{macrocode} +\newcommand{\nowidow}[1][\nowidow@defaultlines]{% + \begingroup + \setnowidow[#1] + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\setnoclub} +% \begin{macrocode} +\newcommand{\setnoclub}[1][\nowidow@defaultlines]{% + \mathchardef\nowidowmax#1\relax + \clubpenalties #1 \nowidow@X{1} 0\par +} +\ifnowidow@all + \setnoclub +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\noclub} +% \begin{macrocode} +\newcommand{\noclub}[1][\nowidow@defaultlines]{% + \begingroup + \setnoclub[#1] + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \iffalse +%</package> +% \fi +% +% \Finale +\endinput diff --git a/macros/latex/contrib/nowidow/nowidow.ins b/macros/latex/contrib/nowidow/nowidow.ins new file mode 100644 index 0000000000..756310de66 --- /dev/null +++ b/macros/latex/contrib/nowidow/nowidow.ins @@ -0,0 +1,57 @@ +%% Copyright (C) 2011 by Raphaël Pinson <raphink@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 Raphaël Pinson. +%% +%% This work consists of the files nowidow.dtx and nowidow.ins +%% and the derived filebase nowidow.sty. +%% + +\input docstrip.tex +\keepsilent + +\usedir{tex/latex/nowidow} + +\preamble + +This is a generated file. + +Copyright (C) 2011 by Raphaël Pinson <raphink@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. + +\endpreamble + +\generate{\file{nowidow.sty}{\from{nowidow.dtx}{package}}} + +\obeyspaces +\Msg{*************************************************************} +\Msg{* *} +\Msg{* To finish the installation you have to move the following *} +\Msg{* file into a directory searched by TeX: *} +\Msg{* *} +\Msg{* nowidow.sty *} +\Msg{* *} +\Msg{* To produce the documentation run the file nowidow.dtx *} +\Msg{* through LaTeX. *} +\Msg{* *} +\Msg{* Happy TeXing! *} +\Msg{* *} +\Msg{*************************************************************} + +\endbatchfile diff --git a/macros/latex/contrib/nowidow/nowidow.pdf b/macros/latex/contrib/nowidow/nowidow.pdf Binary files differnew file mode 100644 index 0000000000..1b841fd63a --- /dev/null +++ b/macros/latex/contrib/nowidow/nowidow.pdf |