From bd286013e355d5059988fa530dddde69b9c90e61 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 23 Apr 2020 21:05:50 +0000 Subject: epigraph-keys (23apr20) git-svn-id: svn://tug.org/texlive/trunk@54851 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/latex/epigraph-keys/epigraph-keys.sty | 145 +++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/epigraph-keys/epigraph-keys.sty (limited to 'Master/texmf-dist/tex/latex/epigraph-keys') diff --git a/Master/texmf-dist/tex/latex/epigraph-keys/epigraph-keys.sty b/Master/texmf-dist/tex/latex/epigraph-keys/epigraph-keys.sty new file mode 100644 index 00000000000..3dceba738e3 --- /dev/null +++ b/Master/texmf-dist/tex/latex/epigraph-keys/epigraph-keys.sty @@ -0,0 +1,145 @@ +% Benjamin McKay +% b.mckay@ucc.ie +% see epigraph-keys.pdf or epigraph-keys.tex for more information. +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{epigraph-keys}[2020/04/22 v1.0 Epigraphs using key values] +\RequirePackage{enumitem} +\RequirePackage{pgfkeys} +\RequirePackage{conditionals} +\RequirePackage{microtype} + +\ProcessOptions\relax + +\makeatletter +{\catcode`\!=8 % funny catcode so ! will be a delimiter + \catcode`\Q=3 % funny catcode so Q will be a delimiter +\long\gdef\given#1{88\fi\Ifbl@nk#1QQQ\empty!} +\long\gdef\blank#1{88\fi\Ifbl@nk#1QQ..!}% if null or spaces +\long\gdef\nil#1{\IfN@Ught#1* {#1}!}% if null +\long\gdef\IfN@Ught#1 #2!{\blank{#2}} +\long\gdef\Ifbl@nk#1#2Q#3!{\ifx#3}% same as above +} +\makeatother + +% The expression \if\expblank{...} x \else y \if gives x when ... expands out to be blank space. +\def\expblank{\expandafter\blank\expandafter} +\def\expgiven{\expandafter\given\expandafter} +\def\expnil{\expandafter\nil\expandafter} +\def\beforeepigraphskip{0pt} +\def\afterepigraphskip{\baselineskip} +\def\epigraphtextindent{2cm} +\def\epigraphauthorsourceindent{1.5cm} +\def\epigraphtextwidth{\linewidth} +\def\epigraphstyle{\small} +\def\epigraphdash{---} +\def\epigraphquotefont{\itshape} +\def\epigraphtranslationfont{} + +\pgfkeys{ + /epigraph/.is family, + /epigraph, + default/.style = { + author = {}, + source = {}, + etc = {}, + translation = {}, + }, + author/.store in = \epigraphauthor, + source/.store in = \epigraphsource, + etc/.store in = \epigraphetc, + translation/.store in = \epigraphtranslation, + before skip/.store in = \beforeepigraphskip, + before skip/.default = 0pt, + after skip/.store in = \afterepigraphskip, + after skip/.default = \baselineskip, + text indent/.store in = \epigraphtextindent, + text indent/.default = 2cm, + author and source indent/.store in = \epigraphauthorsourceindent, + author and source indent/.default = 1.5cm, + width/.store in = \epigraphtextwidth, + width/.default = \linewidth, + style/.store in = \epigraphstyle, + style/.default = \small, + dash/.store in = \epigraphdash, + dash/.default = ---, + quote style/.store in = \epigraphquotefont, + quote style/.default = {}, + translation style/.store in = \epigraphtranslationfont, + translation style/.default = {}, +} + +\ifdefined\epigraph\else\xdef\epigraph{}\fi +\renewcommand{\epigraph}[2][]{ + \pgfkeys{/epigraph,default,#1} + \epigraphstyle\vspace{\beforeepigraphskip} + \begin{enumerate}[leftmargin=\epigraphtextindent] + \item[] + {%% + \epigraphquotefont{}% + \begin{minipage}{\epigraphtextwidth}% + #2% + \end{minipage}% + }%% + \if\expblank{\epigraphtranslation} + \else + \item[] + {% + \epigraphtranslationfont% + {%%%% + \begin{minipage}{\epigraphtextwidth}% + \epigraphtranslation% + \end{minipage} + }%%%% + }% + \fi + \if\expblank{\epigraphauthor} + \if\expblank{\epigraphsource} + \if\expblank{\epigraphetc} + \else\epigraphetc + \fi + \else + \begin{enumerate}[leftmargin=\epigraphauthorsourceindent]% + \item[\epigraphdash]% + {%% + \smallerSmallCapsTracking{}\textsc{\epigraphsource} + }%% + \if\expblank{\epigraphetc}% + \else{}, \epigraphetc + \fi + \end{enumerate} + \fi + \else + \begin{enumerate}[leftmargin=\epigraphauthorsourceindent]% + \item[\epigraphdash] \epigraphauthor \\ + \if\expblank{\epigraphsource}% + \if\expblank{\epigraphetc}% + \else\epigraphetc% + \fi% + \else% + \begingroup + \smallerSmallCapsTracking{}\textsc{\epigraphsource}% + \endgroup + \if\expblank{\epigraphetc}% + \else% + \begingroup% + , \epigraphetc + \endgroup + \fi + \fi + \end{enumerate} + \fi + \end{enumerate} + \vspace{\afterepigraphskip} + \par\noindent +} + +\newcommand{\smallerSmallCapsTracking}% +{% +\SetTracking{encoding={*}, shape=sc}{20}% +}% + +\ifdefined\epigraphs\else\xdef\epigraphs{}\fi +\renewenvironment{epigraphs}{\begin{enumerate}}{\end{enumerate}} +\ifdefined\qitem\else\xdef\qitem{}\fi +\renewcommand{\qitem}[2][]{\item[]\epigraph[#1]{#2}} + -- cgit v1.2.3