diff options
author | Karl Berry <karl@freefriends.org> | 2016-06-29 21:07:08 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2016-06-29 21:07:08 +0000 |
commit | 186116c3232d76d7e74d88664d70394cc6ba1041 (patch) | |
tree | b4ead3521ad00a5d465e1cd44dc15305328597d0 /Master/texmf-dist/tex/latex/fvextra | |
parent | 66fc4fde29ab7f4315fa60cca50b476e53668acf (diff) |
fvextra (29jun16)
git-svn-id: svn://tug.org/texlive/trunk@41568 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/fvextra')
-rw-r--r-- | Master/texmf-dist/tex/latex/fvextra/fvextra.sty | 751 |
1 files changed, 751 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/fvextra/fvextra.sty b/Master/texmf-dist/tex/latex/fvextra/fvextra.sty new file mode 100644 index 00000000000..00e5bbed774 --- /dev/null +++ b/Master/texmf-dist/tex/latex/fvextra/fvextra.sty @@ -0,0 +1,751 @@ +%% +%% This is file `fvextra.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% fvextra.dtx (with options: `package') +%% +%% This is a generated file. +%% +%% Copyright (C) 2016 by Geoffrey M. Poore <gpoore@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. +%% +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{fvextra} + [2016/06/28 v1.0 fvextra - extensions and patches for fancyvrb] +\RequirePackage{ifthen} +\RequirePackage{etoolbox} +\RequirePackage{fancyvrb} +\RequirePackage{upquote} +\AtEndPreamble{% + \ifx\encodingdefault\upquote@OTone + \ifx\ttdefault\upquote@cmtt\else\RequirePackage{textcomp}\fi + \else + \RequirePackage{textcomp} + \fi} +\RequirePackage{lineno} +\@ifpackageloaded{csquotes}% + {\PackageWarning{fvextra}{csquotes should be loaded after fvextra, % + to avoid a warning from the lineno package}}{} +\@ifpackageloaded{minted}% + {\PackageError{fvextra}% + {fvextra must be loaded before minted}% + {fvextra must be loaded before minted}} +\@ifpackageloaded{pythontex}% + {\PackageError{fvextra}% + {fvextra must be loaded before pythontex}% + {fvextra must be loaded before pythontex}} +\let\FV@FormattingPrepHook\@empty +\expandafter\def\expandafter\FV@FormattingPrep\expandafter{% + \expandafter\FV@FormattingPrepHook\FV@FormattingPrep} +\edef\FV@hashchar{\string#} +\edef\FV@dollarchar{\string$} +\edef\FV@ampchar{\string&} +\edef\FV@underscorechar{\string_} +\edef\FV@tildechar{\string~} +\edef\FV@leftsquarebracket{\string[} +\edef\FV@rightsquarebracket{\string]} +\newcommand{\FV@EscChars}{% + \let\#\FV@hashchar + \let\%\@percentchar + \let\{\@charlb + \let\}\@charrb + \let\$\FV@dollarchar + \let\&\FV@ampchar + \let\_\FV@underscorechar + \let\\\@backslashchar + \let~\FV@tildechar + \let\~\FV@tildechar + \let\[\FV@leftsquarebracket + \let\]\FV@rightsquarebracket +} %$ <- highlighting +\def\FancyVerbSpace{\textvisiblespace} +\def\FV@TrueTab{% + \egroup + \@tempdima=\FV@ObeyTabSize sp\relax + \@tempcnta=\wd\FV@TabBox + \advance\@tempcnta\FV@@ObeyTabSize\relax + \divide\@tempcnta\@tempdima + \multiply\@tempdima\@tempcnta + \advance\@tempdima-\wd\FV@TabBox + \setbox\FV@TabBox=\hbox\bgroup + \unhbox\FV@TabBox\hbox to\@tempdima{\hss\FV@TabChar}} +\def\FancyVerbMathSpace{ } +\def\FV@SetupMathSpace{% + \everymath\expandafter{\the\everymath\let\FV@Space\FancyVerbMathSpace}} +\g@addto@macro\FV@FormattingPrepHook{\FV@SetupMathSpace} +\begingroup +\catcode`\'=\active +\catcode`\^=7 +\gdef\FV@pr@m@s{% + \ifx'\@let@token + \expandafter\pr@@@s + \else + \ifx^\@let@token + \expandafter\expandafter\expandafter\pr@@@t + \else + \egroup + \fi + \fi} +\endgroup +\def\FV@SetupMathFont{% + \everymath\expandafter{\the\everymath\fontfamily{\familydefault}\selectfont}} +\g@addto@macro\FV@FormattingPrepHook{\FV@SetupMathFont} +\def\FV@SetupMathLigs{% + \everymath\expandafter{% + \the\everymath + \let\pr@m@s\FV@pr@m@s + \begingroup\lccode`\~=`\'\lowercase{\endgroup\def~}{% + \ifmmode\expandafter\active@math@prime\else'\fi}% + \begingroup\lccode`\~=`\`\lowercase{\endgroup\def~}{`}% + \begingroup\lccode`\~=`\<\lowercase{\endgroup\def~}{<}% + \begingroup\lccode`\~=`\>\lowercase{\endgroup\def~}{>}% + \begingroup\lccode`\~=`\,\lowercase{\endgroup\def~}{,}% + \begingroup\lccode`\~=`\-\lowercase{\endgroup\def~}{-}% + }% +} +\g@addto@macro\FV@FormattingPrepHook{\FV@SetupMathLigs} +\def\FV@BeginListFrame@Lines{% + \begingroup + \lineskip\z@skip + \FV@SingleFrameLine{\z@}% + \kern-0.5\baselineskip\relax + \baselineskip\z@skip + \kern\FV@FrameSep\relax + \penalty\@M + \endgroup} +\define@booleankey{FV}{linenos}% + {\@nameuse{FV@Numbers@left}}{\@nameuse{FV@Numbers@none}} +\define@key{FV}{tab}{\def\FancyVerbTab{#1}} +\define@key{FV}{space}{\def\FancyVerbSpace{#1}} +\define@booleankey{FV}{mathescape}% + {\let\FancyVerbMathEscape\FV@MathEscape}% + {\let\FancyVerbMathEscape\relax} +\FV@AddToHook\FV@CatCodesHook\FancyVerbMathEscape +\def\FV@MathEscape{\catcode`\$=3\catcode`\^=7\catcode`\_=8\relax} +\fvset{mathescape=false} +\def\FancyVerbFormatLine#1{#1} +\def\FancyVerbFormatText#1{#1} +\def\FV@ListProcessLine@NoBreak#1{% + \hbox to \hsize{% + \kern\leftmargin + \hbox to \linewidth{% + \FV@LeftListNumber + \FV@LeftListFrame + \FancyVerbFormatLine{\FV@ObeyTabs{\FancyVerbFormatText{#1}}}\hss + \FV@RightListFrame + \FV@RightListNumber}% + \hss}} +\def\FV@BProcessLine#1{\hbox{\FancyVerbFormatLine{\FV@ObeyTabs{\FancyVerbFormatText{#1}}}}} +\newbool{FV@NumberFirstLine} +\define@booleankey{FV}{numberfirstline}% + {\booltrue{FV@NumberFirstLine}}% + {\boolfalse{FV@NumberFirstLine}} +\fvset{numberfirstline=false} +\newbool{FV@StepNumberFromFirst} +\define@booleankey{FV}{stepnumberfromfirst}% + {\booltrue{FV@StepNumberFromFirst}}% + {\boolfalse{FV@StepNumberFromFirst}} +\fvset{stepnumberfromfirst=false} +\newbool{FV@StepNumberOffsetValues} +\define@booleankey{FV}{stepnumberoffsetvalues}% + {\booltrue{FV@StepNumberOffsetValues}}% + {\boolfalse{FV@StepNumberOffsetValues}} +\fvset{stepnumberoffsetvalues=false} +\def\FV@Numbers@left{% + \let\FV@RightListNumber\relax + \def\FV@LeftListNumber{% + \ifx\FancyVerbStartNum\z@ + \let\FancyVerbStartNum\@ne + \fi + \ifbool{FV@StepNumberFromFirst}% + {\@tempcnta=\FV@CodeLineNo + \@tempcntb=\FancyVerbStartNum + \advance\@tempcntb\FV@StepNumber + \divide\@tempcntb\FV@StepNumber + \multiply\@tempcntb\FV@StepNumber + \advance\@tempcnta\@tempcntb + \advance\@tempcnta-\FancyVerbStartNum + \@tempcntb=\@tempcnta}% + {\ifbool{FV@StepNumberOffsetValues}% + {\@tempcnta=\FV@CodeLineNo + \@tempcntb=\FV@CodeLineNo}% + {\@tempcnta=\c@FancyVerbLine + \@tempcntb=\c@FancyVerbLine}}% + \divide\@tempcntb\FV@StepNumber + \multiply\@tempcntb\FV@StepNumber + \ifnum\@tempcnta=\@tempcntb + \if@FV@NumberBlankLines + \hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}% + \else + \ifx\FV@Line\empty + \else + \hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}% + \fi + \fi + \else + \ifbool{FV@NumberFirstLine}{% + \ifnum\FV@CodeLineNo=\FancyVerbStartNum + \hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}% + \fi}{}% + \fi}% +} +\def\FV@Numbers@right{% + \let\FV@LeftListNumber\relax + \def\FV@RightListNumber{% + \ifx\FancyVerbStartNum\z@ + \let\FancyVerbStartNum\@ne + \fi + \ifbool{FV@StepNumberFromFirst}% + {\@tempcnta=\FV@CodeLineNo + \@tempcntb=\FancyVerbStartNum + \advance\@tempcntb\FV@StepNumber + \divide\@tempcntb\FV@StepNumber + \multiply\@tempcntb\FV@StepNumber + \advance\@tempcnta\@tempcntb + \advance\@tempcnta-\FancyVerbStartNum + \@tempcntb=\@tempcnta}% + {\ifbool{FV@StepNumberOffsetValues}% + {\@tempcnta=\FV@CodeLineNo + \@tempcntb=\FV@CodeLineNo}% + {\@tempcnta=\c@FancyVerbLine + \@tempcntb=\c@FancyVerbLine}}% + \divide\@tempcntb\FV@StepNumber + \multiply\@tempcntb\FV@StepNumber + \ifnum\@tempcnta=\@tempcntb + \if@FV@NumberBlankLines + \hbox to\z@{\kern\FV@NumberSep\theFancyVerbLine\hss}% + \else + \ifx\FV@Line\empty + \else + \hbox to\z@{\kern\FV@NumberSep\theFancyVerbLine\hss}% + \fi + \fi + \else + \ifbool{FV@NumberFirstLine}{% + \ifnum\FV@CodeLineNo=\FancyVerbStartNum + \hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}% + \fi}{}% + \fi}% +} +\def\FV@Numbers@both{% + \def\FV@LeftListNumber{% + \ifx\FancyVerbStartNum\z@ + \let\FancyVerbStartNum\@ne + \fi + \ifbool{FV@StepNumberFromFirst}% + {\@tempcnta=\FV@CodeLineNo + \@tempcntb=\FancyVerbStartNum + \advance\@tempcntb\FV@StepNumber + \divide\@tempcntb\FV@StepNumber + \multiply\@tempcntb\FV@StepNumber + \advance\@tempcnta\@tempcntb + \advance\@tempcnta-\FancyVerbStartNum + \@tempcntb=\@tempcnta}% + {\ifbool{FV@StepNumberOffsetValues}% + {\@tempcnta=\FV@CodeLineNo + \@tempcntb=\FV@CodeLineNo}% + {\@tempcnta=\c@FancyVerbLine + \@tempcntb=\c@FancyVerbLine}}% + \divide\@tempcntb\FV@StepNumber + \multiply\@tempcntb\FV@StepNumber + \ifnum\@tempcnta=\@tempcntb + \if@FV@NumberBlankLines + \hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}% + \else + \ifx\FV@Line\empty + \else + \hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}% + \fi + \fi + \else + \ifbool{FV@NumberFirstLine}{% + \ifnum\FV@CodeLineNo=\FancyVerbStartNum + \hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}% + \fi}{}% + \fi}% + \def\FV@RightListNumber{% + \ifx\FancyVerbStartNum\z@ + \let\FancyVerbStartNum\@ne + \fi + \ifbool{FV@StepNumberFromFirst}% + {\@tempcnta=\FV@CodeLineNo + \@tempcntb=\FancyVerbStartNum + \advance\@tempcntb\FV@StepNumber + \divide\@tempcntb\FV@StepNumber + \multiply\@tempcntb\FV@StepNumber + \advance\@tempcnta\@tempcntb + \advance\@tempcnta-\FancyVerbStartNum + \@tempcntb=\@tempcnta}% + {\ifbool{FV@StepNumberOffsetValues}% + {\@tempcnta=\FV@CodeLineNo + \@tempcntb=\FV@CodeLineNo}% + {\@tempcnta=\c@FancyVerbLine + \@tempcntb=\c@FancyVerbLine}}% + \divide\@tempcntb\FV@StepNumber + \multiply\@tempcntb\FV@StepNumber + \ifnum\@tempcnta=\@tempcntb + \if@FV@NumberBlankLines + \hbox to\z@{\kern\FV@NumberSep\theFancyVerbLine\hss}% + \else + \ifx\FV@Line\empty + \else + \hbox to\z@{\kern\FV@NumberSep\theFancyVerbLine\hss}% + \fi + \fi + \else + \ifbool{FV@NumberFirstLine}{% + \ifnum\FV@CodeLineNo=\FancyVerbStartNum + \hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}% + \fi}{}% + \fi}% +} +\newboolean{FV@BreakLines} +\define@booleankey{FV}{breaklines}% + {\FV@BreakLinestrue + \let\FV@ListProcessLine\FV@ListProcessLine@Break}% + {\FV@BreakLinesfalse + \let\FV@ListProcessLine\FV@ListProcessLine@NoBreak} +\AtEndOfPackage{\fvset{breaklines=false}} +\newdimen\FV@BreakIndent +\define@key{FV}{breakindent}{\FV@BreakIndent=#1\relax} +\fvset{breakindent=0pt} +\newboolean{FV@BreakAutoIndent} +\define@booleankey{FV}{breakautoindent}% + {\FV@BreakAutoIndenttrue}{\FV@BreakAutoIndentfalse} +\fvset{breakautoindent=true} +\define@key{FV}{breaksymbolleft}{\def\FancyVerbBreakSymbolLeft{#1}} +\define@key{FV}{breaksymbol}{\fvset{breaksymbolleft=#1}} +\fvset{breaksymbolleft=\tiny\ensuremath{\hookrightarrow}} +\define@key{FV}{breaksymbolright}{\def\FancyVerbBreakSymbolRight{#1}} +\fvset{breaksymbolright={}} +\newdimen\FV@BreakSymbolSepLeft +\define@key{FV}{breaksymbolsepleft}{\FV@BreakSymbolSepLeft=#1\relax} +\define@key{FV}{breaksymbolsep}{\fvset{breaksymbolsepleft=#1}} +\fvset{breaksymbolsepleft=1em} +\newdimen\FV@BreakSymbolSepRight +\define@key{FV}{breaksymbolsepright}{\FV@BreakSymbolSepRight=#1\relax} +\fvset{breaksymbolsepright=1em} +\newdimen\FV@BreakSymbolIndentLeft +\settowidth{\FV@BreakSymbolIndentLeft}{\ttfamily xxxx} +\define@key{FV}{breaksymbolindentleft}{\FV@BreakSymbolIndentLeft=#1\relax} +\define@key{FV}{breaksymbolindent}{\fvset{breaksymbolindentleft=#1}} +\newdimen\FV@BreakSymbolIndentRight +\settowidth{\FV@BreakSymbolIndentRight}{\ttfamily xxxx} +\define@key{FV}{breaksymbolindentright}{\FV@BreakSymbolIndentRight=#1\relax} +\newcommand{\FancyVerbBreakSymbolLeftLogic}[1]{% + \ifnum\value{linenumber}=1\relax\else{#1}\fi} +\newcounter{FancyVerbLineBreakLast} +\newcommand{\FV@SetLineBreakLast}{% + \setcounter{FancyVerbLineBreakLast}{\value{linenumber}}} +\newcommand{\FancyVerbBreakSymbolRightLogic}[1]{% + \ifnum\value{linenumber}=\value{FancyVerbLineBreakLast}\relax\else{#1}\fi} +\let\FancyVerbBreakStart\relax +\let\FancyVerbBreakStop\relax +\let\FV@Break@Token\relax +\newboolean{FV@BreakAnywhere} +\define@booleankey{FV}{breakanywhere}% + {\FV@BreakAnywheretrue + \let\FancyVerbBreakStart\FV@Break + \let\FancyVerbBreakStop\FV@EndBreak + \let\FV@Break@Token\FV@Break@AnyToken}% + {\FV@BreakAnywherefalse + \let\FancyVerbBreakStart\relax + \let\FancyVerbBreakStop\relax} +\fvset{breakanywhere=false} +\define@key{FV}{breakbefore}{% + \ifstrempty{#1}% + {\let\FV@BreakBefore\@empty + \let\FancyVerbBreakStart\relax + \let\FancyVerbBreakStop\relax}% + {\def\FV@BreakBefore{#1}% + \let\FancyVerbBreakStart\FV@Break + \let\FancyVerbBreakStop\FV@EndBreak + \let\FV@Break@Token\FV@Break@BeforeAfterToken}% +} +\fvset{breakbefore={}} +\newboolean{FV@BreakBeforeGroup} +\define@booleankey{FV}{breakbeforegroup}% + {\FV@BreakBeforeGrouptrue}% + {\FV@BreakBeforeGroupfalse}% +\fvset{breakbeforegroup=true} +\def\FV@BreakBeforePrep{% + \ifx\FV@BreakBefore\@empty\relax + \else + \gdef\FV@BreakBefore@Def{}% + \begingroup + \def\FV@BreakBefore@Process##1##2\FV@Undefined{% + \expandafter\FV@BreakBefore@Process@i\expandafter{##1}% + \expandafter\ifx\expandafter\relax\detokenize{##2}\relax + \else + \FV@BreakBefore@Process##2\FV@Undefined + \fi + }% + \def\FV@BreakBefore@Process@i##1{% + \g@addto@macro\FV@BreakBefore@Def{% + \@namedef{FV@BreakBefore@Token\detokenize{##1}}{}}% + }% + \FV@EscChars + \expandafter\FV@BreakBefore@Process\FV@BreakBefore\FV@Undefined + \endgroup + \FV@BreakBefore@Def + \fi +} +\define@key{FV}{breakafter}{% + \ifstrempty{#1}% + {\let\FV@BreakAfter\@empty + \let\FancyVerbBreakStart\relax + \let\FancyVerbBreakStop\relax}% + {\def\FV@BreakAfter{#1}% + \let\FancyVerbBreakStart\FV@Break + \let\FancyVerbBreakStop\FV@EndBreak + \let\FV@Break@Token\FV@Break@BeforeAfterToken}% +} +\fvset{breakafter={}} +\newboolean{FV@BreakAfterGroup} +\define@booleankey{FV}{breakaftergroup}% + {\FV@BreakAfterGrouptrue}% + {\FV@BreakAfterGroupfalse}% +\fvset{breakaftergroup=true} +\def\FV@BreakAfterPrep{% + \ifx\FV@BreakAfter\@empty\relax + \else + \gdef\FV@BreakAfter@Def{}% + \begingroup + \def\FV@BreakAfter@Process##1##2\FV@Undefined{% + \expandafter\FV@BreakAfter@Process@i\expandafter{##1}% + \expandafter\ifx\expandafter\relax\detokenize{##2}\relax + \else + \FV@BreakAfter@Process##2\FV@Undefined + \fi + }% + \def\FV@BreakAfter@Process@i##1{% + \ifcsname FV@BreakBefore@Token\detokenize{##1}\endcsname + \ifthenelse{\boolean{FV@BreakBeforeGroup}}% + {\ifthenelse{\boolean{FV@BreakAfterGroup}}% + {}% + {\PackageError{fvextra}% + {Conflicting breakbeforegroup and breakaftergroup for "\detokenize{##1}"}% + {Conflicting breakbeforegroup and breakaftergroup for "\detokenize{##1}"}}}% + {\ifthenelse{\boolean{FV@BreakAfterGroup}}% + {\PackageError{fvextra}% + {Conflicting breakbeforegroup and breakaftergroup for "\detokenize{##1}"}% + {Conflicting breakbeforegroup and breakaftergroup for "\detokenize{##1}"}}% + {}}% + \else + \fi + \g@addto@macro\FV@BreakAfter@Def{% + \@namedef{FV@BreakAfter@Token\detokenize{##1}}{}}% + }% + \FV@EscChars + \expandafter\FV@BreakAfter@Process\FV@BreakAfter\FV@Undefined + \endgroup + \FV@BreakAfter@Def + \fi +} +\g@addto@macro\FV@FormattingPrepHook{\FV@BreakBeforePrep\FV@BreakAfterPrep} +\define@key{FV}{breakanywheresymbolpre}{% + \ifstrempty{#1}% + {\def\FancyVerbBreakAnywhereSymbolPre{}}% + {\def\FancyVerbBreakAnywhereSymbolPre{\hbox{#1}}}} +\fvset{breakanywheresymbolpre={\,\footnotesize\ensuremath{_\rfloor}}} +\define@key{FV}{breakanywheresymbolpost}{% + \ifstrempty{#1}% + {\def\FancyVerbBreakAnywhereSymbolPost{}}% + {\def\FancyVerbBreakAnywhereSymbolPost{\hbox{#1}}}} +\fvset{breakanywheresymbolpost={}} +\define@key{FV}{breakbeforesymbolpre}{% + \ifstrempty{#1}% + {\def\FancyVerbBreakBeforeSymbolPre{}}% + {\def\FancyVerbBreakBeforeSymbolPre{\hbox{#1}}}} +\fvset{breakbeforesymbolpre={\,\footnotesize\ensuremath{_\rfloor}}} +\define@key{FV}{breakbeforesymbolpost}{% + \ifstrempty{#1}% + {\def\FancyVerbBreakBeforeSymbolPost{}}% + {\def\FancyVerbBreakBeforeSymbolPost{\hbox{#1}}}} +\fvset{breakbeforesymbolpost={}} +\define@key{FV}{breakaftersymbolpre}{% + \ifstrempty{#1}% + {\def\FancyVerbBreakAfterSymbolPre{}}% + {\def\FancyVerbBreakAfterSymbolPre{\hbox{#1}}}} +\fvset{breakaftersymbolpre={\,\footnotesize\ensuremath{_\rfloor}}} +\define@key{FV}{breakaftersymbolpost}{% + \ifstrempty{#1}% + {\def\FancyVerbBreakAfterSymbolPost{}}% + {\def\FancyVerbBreakAfterSymbolPost{\hbox{#1}}}} +\fvset{breakaftersymbolpost={}} +\newcommand{\FancyVerbBreakAnywhereBreak}{% + \discretionary{\FancyVerbBreakAnywhereSymbolPre}% + {\FancyVerbBreakAnywhereSymbolPost}{}} +\newcommand{\FancyVerbBreakBeforeBreak}{% + \discretionary{\FancyVerbBreakBeforeSymbolPre}% + {\FancyVerbBreakBeforeSymbolPost}{}} +\newcommand{\FancyVerbBreakAfterBreak}{% + \discretionary{\FancyVerbBreakAfterSymbolPre}% + {\FancyVerbBreakAfterSymbolPost}{}} +\newsavebox{\FV@LineBox} +\newsavebox{\FV@LineIndentBox} +\let\FV@LineIndentChars\@empty +\def\FV@CleanRemainingChars#1\FV@Undefined{} +\def\FV@GetLineIndent{\afterassignment\FV@CheckIndentChar\let\FV@NextChar=} +\def\FV@CheckIndentChar{% + \ifx\FV@NextChar\FV@Undefined\relax + \let\FV@Next=\relax + \else + \expandafter\ifx\FV@NextChar\FV@Space\relax + \g@addto@macro{\FV@LineIndentChars}{\FV@Space}% + \let\FV@Next=\FV@GetLineIndent + \else + \expandafter\ifx\FV@NextChar\FV@Tab\relax + \g@addto@macro{\FV@LineIndentChars}{\FV@Tab}% + \let\FV@Next=\FV@GetLineIndent + \else + \let\FV@Next=\FV@CleanRemainingChars + \fi + \fi + \fi + \FV@Next +} +\newcounter{FV@TrueTabCounter} +\def\FV@TrueTab@SaveWidths{% + \egroup + \@tempdima=\FV@ObeyTabSize sp\relax + \@tempcnta=\wd\FV@TabBox + \advance\@tempcnta\FV@@ObeyTabSize\relax + \divide\@tempcnta\@tempdima + \multiply\@tempdima\@tempcnta + \advance\@tempdima-\wd\FV@TabBox + \expandafter\xdef\csname FV@TrueTab@Width\arabic{FV@TrueTabCounter}\endcsname{% + \number\@tempdima}% + \stepcounter{FV@TrueTabCounter}% + \setbox\FV@TabBox=\hbox\bgroup + \unhbox\FV@TabBox\hbox to\@tempdima{\hss\FV@TabChar}} +\def\FV@TrueTab@UseWidths{% + \@tempdima=\csname FV@TrueTab@Width\arabic{FV@TrueTabCounter}\endcsname sp\relax + \stepcounter{FV@TrueTabCounter}% + \hbox to\@tempdima{\hss\FV@TabChar}} +\def\FV@Break{% + \def\FV@TmpLine{}% + \let\FV@LastToken=\FV@Undefined + \FV@Break@Scan +} +\def\FV@EndBreak{\FV@TmpLine} +\begingroup +\catcode`\$=3% +\gdef\FV@Break@Scan{% + \@ifnextchar\FV@EndBreak% + {}% + {\ifx\@let@token$\relax + \let\FV@Break@Next\FV@Break@Math + \else + \ifx\@let@token\bgroup\relax + \let\FV@Break@Next\FV@Break@Group + \else + \let\FV@Break@Next\FV@Break@Token + \fi + \fi + \FV@Break@Next}% +} +\endgroup +\begingroup +\catcode`\$=3% +\gdef\FV@Break@Math$#1${% + \g@addto@macro{\FV@TmpLine}{$#1$}% + \let\FV@LastToken=\FV@Undefined + \FV@Break@Scan} +\endgroup +\def\FV@Break@Group#1{% + \g@addto@macro{\FV@TmpLine}{{#1}}% + \ifstrempty{#1}{}{\let\FV@LastToken=\FV@Undefined}% + \FV@Break@Scan} +\def\FV@Break@AnyToken#1{% + \g@addto@macro{\FV@TmpLine}{\FancyVerbBreakAnywhereBreak#1}% + \FV@Break@Scan} +\def\FV@Break@BeforeAfterToken#1{% + \ifcsname FV@BreakBefore@Token\detokenize{#1}\endcsname + \let\FV@Break@Next\FV@Break@BeforeTokenBreak + \else + \ifcsname FV@BreakAfter@Token\detokenize{#1}\endcsname + \let\FV@Break@Next\FV@Break@AfterTokenBreak + \else + \let\FV@Break@Next\FV@Break@BeforeAfterTokenNoBreak + \fi + \fi + \FV@Break@Next{#1}% +} +\def\FV@Break@BeforeAfterTokenNoBreak#1{% + \g@addto@macro{\FV@TmpLine}{#1}% + \let\FV@LastToken=#1% + \FV@Break@Scan} +\def\FV@Break@BeforeTokenBreak#1{% + \ifthenelse{\boolean{FV@BreakBeforeGroup}}% + {\ifx#1\FV@LastToken\relax + \ifcsname FV@BreakAfter@Token\detokenize{#1}\endcsname + \let\FV@Break@Next\FV@Break@BeforeTokenBreak@AfterRescan + \def\FV@RescanToken{#1}% + \else + \g@addto@macro{\FV@TmpLine}{#1}% + \let\FV@Break@Next\FV@Break@Scan + \let\FV@LastToken=#1% + \fi + \else + \ifcsname FV@BreakAfter@Token\detokenize{#1}\endcsname + \g@addto@macro{\FV@TmpLine}{\FancyVerbBreakBeforeBreak}% + \let\FV@Break@Next\FV@Break@BeforeTokenBreak@AfterRescan + \def\FV@RescanToken{#1}% + \else + \g@addto@macro{\FV@TmpLine}{\FancyVerbBreakBeforeBreak#1}% + \let\FV@Break@Next\FV@Break@Scan + \let\FV@LastToken=#1% + \fi + \fi}% + {\ifcsname FV@BreakAfter@Token\detokenize{#1}\endcsname + \g@addto@macro{\FV@TmpLine}{\FancyVerbBreakBeforeBreak}% + \let\FV@Break@Next\FV@Break@BeforeTokenBreak@AfterRescan + \def\FV@RescanToken{#1}% + \else + \g@addto@macro{\FV@TmpLine}{\FancyVerbBreakBeforeBreak#1}% + \let\FV@Break@Next\FV@Break@Scan + \let\FV@LastToken=#1% + \fi}% + \FV@Break@Next} +\def\FV@Break@BeforeTokenBreak@AfterRescan{% + \expandafter\FV@Break@AfterTokenBreak\FV@RescanToken} +\def\FV@Break@AfterTokenBreak#1{% + \let\FV@LastToken=#1% + \@ifnextchar\FV@Space% + {\g@addto@macro{\FV@TmpLine}{#1}\FV@Break@Scan}% + {\ifthenelse{\boolean{FV@BreakAfterGroup}}% + {\ifx\@let@token#1\relax + \g@addto@macro{\FV@TmpLine}{#1}% + \let\FV@Break@Next\FV@Break@Scan + \else + \ifx\@let@token\bgroup\relax + \g@addto@macro{\FV@TmpLine}{#1}% + \let\FV@Break@Next\FV@Break@AfterTokenBreak@Group + \else + \g@addto@macro{\FV@TmpLine}{#1\FancyVerbBreakAfterBreak}% + \let\FV@Break@Next\FV@Break@Scan + \fi + \fi}% + {\g@addto@macro{\FV@TmpLine}{#1\FancyVerbBreakAfterBreak}% + \let\FV@Break@Next\FV@Break@Scan}% + \FV@Break@Next}% +} +\def\FV@Break@AfterTokenBreak@Group#1{% + \g@addto@macro{\FV@TmpLine}{{#1}}% + \ifstrempty{#1}% + {\let\FV@Break@Next\FV@Break@AfterTokenBreak@Group@i}% + {\let\FV@Break@Next\FV@Break@Scan\let\FV@LastToken=\FV@Undefined}% + \FV@Break@Next} +\def\FV@Break@AfterTokenBreak@Group@i{% + \@ifnextchar\FV@LastToken% + {\FV@Break@Scan}% + {\g@addto@macro{\FV@TmpLine}{\FancyVerbBreakAfterBreak}% + \FV@Break@Scan}} +\def\FV@makeLineNumber{% + \hss + \FancyVerbBreakSymbolLeftLogic{\FancyVerbBreakSymbolLeft}% + \hbox to \FV@BreakSymbolSepLeft{\hfill}% + \rlap{\hskip\linewidth + \hbox to \FV@BreakSymbolSepRight{\hfill}% + \FancyVerbBreakSymbolRightLogic{\FancyVerbBreakSymbolRight}% + \FV@SetLineBreakLast + }% +} +\def\FV@SaveLineBox#1{% + \savebox{\FV@LineBox}{% + \advance\linewidth by -\FV@BreakIndent + \hbox to \FV@BreakIndent{\hfill}% + \ifthenelse{\boolean{FV@BreakAutoIndent}}% + {\let\FV@LineIndentChars\@empty + \FV@GetLineIndent#1\FV@Undefined + \savebox{\FV@LineIndentBox}{\FV@LineIndentChars}% + \hbox to \wd\FV@LineIndentBox{\hfill}% + \advance\linewidth by -\wd\FV@LineIndentBox + \setcounter{FV@TrueTabCounter}{0}}% + {}% + \ifdefempty{\FancyVerbBreakSymbolLeft}{}% + {\hbox to \FV@BreakSymbolIndentLeft{\hfill}% + \advance\linewidth by -\FV@BreakSymbolIndentLeft}% + \ifdefempty{\FancyVerbBreakSymbolRight}{}% + {\advance\linewidth by -\FV@BreakSymbolIndentRight}% + \parbox[t]{\linewidth}{% + \raggedright + \leftlinenumbers* + \begin{internallinenumbers*}% + \let\makeLineNumber\FV@makeLineNumber + \noindent\hspace*{-\FV@BreakIndent}% + \ifdefempty{\FancyVerbBreakSymbolLeft}{}{% + \hspace*{-\FV@BreakSymbolIndentLeft}}% + \ifthenelse{\boolean{FV@BreakAutoIndent}}% + {\hspace*{-\wd\FV@LineIndentBox}}% + {}% + \strut\FancyVerbFormatText{% + \FancyVerbBreakStart #1\FancyVerbBreakStop}\nobreak\strut + \end{internallinenumbers*} + }% + \ifdefempty{\FancyVerbBreakSymbolRight}{}% + {\hbox to \FV@BreakSymbolIndentRight{\hfill}}% + }% +} +\def\FV@ListProcessLine@Break#1{% + \hbox to \hsize{% + \kern\leftmargin + \hbox to \linewidth{% + \ifx\FV@RightListFrame\relax\else + \advance\linewidth by -\FV@FrameSep + \advance\linewidth by -\FV@FrameRule + \fi + \ifx\FV@LeftListFrame\relax\else + \advance\linewidth by -\FV@FrameSep + \advance\linewidth by -\FV@FrameRule + \fi + \ifx\FV@Tab\FV@TrueTab + \let\FV@Tab\FV@TrueTab@SaveWidths + \setcounter{FV@TrueTabCounter}{0}% + \fi + \sbox{\FV@LineBox}{\FancyVerbFormatLine{\FV@ObeyTabs{\FancyVerbFormatText{#1}}}}% + \ifx\FV@Tab\FV@TrueTab@SaveWidths + \let\FV@Tab\FV@TrueTab + \fi + \ifdim\wd\FV@LineBox>\linewidth + \setcounter{FancyVerbLineBreakLast}{0}% + \ifx\FV@Tab\FV@TrueTab + \let\FV@Tab\FV@TrueTab@UseWidths + \setcounter{FV@TrueTabCounter}{0}% + \fi + \FV@SaveLineBox{#1}% + \ifdefempty{\FancyVerbBreakSymbolRight}{}{% + \let\FV@SetLineBreakLast\relax + \setcounter{FV@TrueTabCounter}{0}% + \FV@SaveLineBox{#1}}% + \FV@LeftListNumber + \FV@LeftListFrame + \FancyVerbFormatLine{\usebox{\FV@LineBox}}% + \FV@RightListFrame + \FV@RightListNumber + \ifx\FV@Tab\FV@TrueTab@UseWidths + \let\FV@Tab\FV@TrueTab + \fi + \else + \FV@LeftListNumber + \FV@LeftListFrame + \FancyVerbFormatLine{% + \parbox[t]{\linewidth}{\noindent\strut\FV@ObeyTabs{\FancyVerbFormatText{#1}}\strut}}% + \FV@RightListFrame + \FV@RightListNumber + \fi}% + \hss}\baselineskip\z@\lineskip\z@} +%% \Finale +\endinput +%% +%% End of file `fvextra.sty'. |