%% %% This is file `froufrou.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% froufrou.dtx (with options: `package') %% Copyright 2020 Nelson Lago %% %% 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 can be %% found at 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 Nelson Lago . %% \NeedsTeXFormat{LaTeX2e}[2015/01/01] \ProvidesPackage{froufrou}[2020/12/22 1.2 Visual section separator] \RequirePackage{etoolbox} \RequirePackage{expl3} \RequirePackage{fourier-orns} \newcommand\@froufrouFleuron{% \bgroup \footnotesize \rule[.7mm]{.1\textwidth}{0.5pt}% \enspace\,% \decofourleft\decotwo\decofourright \enspace\,% \rule[.7mm]{.1\textwidth}{0.5pt}% \egroup } \newcommand\@froufrouSimpleFleuron{% \bgroup \footnotesize \decofourleft\decotwo\decofourright \egroup } \newcommand{\@froufrouTightAsterism}{% \bgroup \smash{% \raisebox{-.5ex}{% \setlength{\tabcolsep}{-.5pt}% \begin{tabular}{@{}cc@{}}% \multicolumn2c*\\[-2ex]*&*% \end{tabular}% }% }% \egroup } \newcommand{\@froufrouAsterism}{% \bgroup \smash{% \raisebox{-.5ex}{% \setlength{\tabcolsep}{0pt}% \begin{tabular}{@{}cc@{}}% \multicolumn2c*\\[-1.8ex]*&*% \end{tabular}% }% }% \egroup } \newcommand\@froufrouTrueAsterism{⁂} \newcommand{\@froufrouDinkus}{\relax*\quad*\quad*} \ExplSyntaxOn \newcommand\setfroufrou[1]{% \str_case:nnF{#1}{ {}{\relax} {fleuron}{\def\@froufrouOrnament{\@froufrouFleuron}} {simplefleuron}{\def\@froufrouOrnament{\@froufrouSimpleFleuron}} {asterism}{\def\@froufrouOrnament{\@froufrouAsterism}} {tightasterism}{\def\@froufrouOrnament{\@froufrouTightAsterism}} {trueasterism}{\def\@froufrouOrnament{\@froufrouTrueAsterism}} {dinkus}{\def\@froufrouOrnament{\@froufrouDinkus}}% }{\def\@froufrouOrnament{#1}}% } \ExplSyntaxOff \def\@froufrouspacebefore{\vskip 22pt plus 7pt minus 5pt} \def\@froufrouspaceafter{\@froufrouspacebefore} \newcommand{\froufrou}{% \@ifstar{\@afterindenttrue\@realfroufrou}{\@afterindentfalse\@realfroufrou}% } \newcommand\frufru{\froufrou} \newcommand{\@realfroufrou}[1][]{% % Make sure we left horizontal mode. \nopagebreak[4]\par \nopagebreak[4]\@froufrouspacebefore\nopagebreak[4] % Start a new group to (1) reset \doublespacing, \parskip, and % \baselineskip, so spacing is independent from the previous text % settings and (2) so that using #1 to change the ornament only % affects the current call. Then, start yet another group only % for the ornament because font size changes in it should not % affect spacing either. \bgroup \setfroufrou{#1}% \normalsize \ifdefvoid{\setstretch}{}{\setstretch{\setspace@singlespace}}% normally 1 \setlength{\parskip}{0pt} \noindent\centering\bgroup\@froufrouOrnament\egroup\par \egroup \nopagebreak[4]\@froufrouspaceafter\nopagebreak[4] % Next paragraph's \doublespacing, \baselineskip, and \parskip % should not affect spacing. \@froufrouFixSpacingAfter % Breaking after the separator is acceptable as a last resort. Since % we use a lot of vertical space before/after it, not allowing this % break might lead to poor results in some cases. \nopagebreak[3] % Emulate the behavior of \section, \subsection etc: prevent % the first line of the next paragraph from being indented % and absolutely forbid a club line in the next paragraph. \@afterheading } \newcommand\@froufrouFixSpacingAfter{ % The next \par will add \parskip and \baselineskip. We want to % (1) eliminate \parskip so that spacing does not change if it % is nonzero and (2) add the "normal" \baselineskip, even if the % text is set using \doublespacing. These adjustments may be off % if font size, \parskip or \baselineskip are changed before the % next paragraph. \nopagebreak[4]\vskip -\parskip \ifdefvoid{\setstretch} {} { \bgroup % \singlespacing may add an extra \baselineskip; let's % avoid surprises and use \setstrech instead. \setstretch {\setspace@singlespace}% normally 1 \nopagebreak[4]\vskip \baselineskip \egroup \nopagebreak[4]\vskip -\baselineskip } } \DeclareOption{fleuron}{\setfroufrou{fleuron}} \DeclareOption{simplefleuron}{\setfroufrou{simplefleuron}} \DeclareOption{asterism}{\setfroufrou{asterism}} \DeclareOption{tightasterism}{\setfroufrou{tightasterism}} \DeclareOption{trueasterism}{\setfroufrou{trueasterism}} \DeclareOption{dinkus}{\setfroufrou{dinkus}} \DeclareOption*{\PackageWarning{froufrou}{Unknown option `\CurrentOption'}} \ExecuteOptions{fleuron} \ProcessOptions\relax \endinput %% %% End of file `froufrou.sty'.