summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/fvextra
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-06-29 21:07:08 +0000
committerKarl Berry <karl@freefriends.org>2016-06-29 21:07:08 +0000
commit186116c3232d76d7e74d88664d70394cc6ba1041 (patch)
treeb4ead3521ad00a5d465e1cd44dc15305328597d0 /Master/texmf-dist/tex/latex/fvextra
parent66fc4fde29ab7f4315fa60cca50b476e53668acf (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.sty751
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'.