|
Packit Service |
76cb02 |
%
|
|
Packit Service |
76cb02 |
% dblatex - Contains miscellaneous latex macros
|
|
Packit Service |
76cb02 |
%
|
|
Packit Service |
76cb02 |
%
|
|
Packit Service |
76cb02 |
|
|
Packit Service |
76cb02 |
%%
|
|
Packit Service |
76cb02 |
%% Redefine the `float' behaviour so that it can split over pages.
|
|
Packit Service |
76cb02 |
%% Actually there's nothing floating anymore, but the float style is preserved.
|
|
Packit Service |
76cb02 |
%% The XSLT templates must be redefined to call this macro instead.
|
|
Packit Service |
76cb02 |
%% - #1: float name
|
|
Packit Service |
76cb02 |
%% - #2: caption material (including the \caption macro call)
|
|
Packit Service |
76cb02 |
%%
|
|
Packit Service |
76cb02 |
%% It assumes that floats are created with \newfloat and it
|
|
Packit Service |
76cb02 |
%% uses some internal macros of float.sty to emulate the same environment.
|
|
Packit Service |
76cb02 |
%% It is compatible with \caption redefined by caption.sty.
|
|
Packit Service |
76cb02 |
%%
|
|
Packit Service |
76cb02 |
\newenvironment{longfloat}[2]{
|
|
Packit Service |
76cb02 |
\@nameuse{fst@#1}%
|
|
Packit Service |
76cb02 |
\def\@captype{#1}\setbox\@floatcapt=\vbox{}%
|
|
Packit Service |
76cb02 |
\def\@capcontent{#2} % caption material
|
|
Packit Service |
76cb02 |
\vspace{2\parskip}\pagebreak[3]
|
|
Packit Service |
76cb02 |
\@parboxrestore%
|
|
Packit Service |
76cb02 |
\@fs@pre\@fs@iftopcapt%
|
|
Packit Service |
76cb02 |
\@capcontent%
|
|
Packit Service |
76cb02 |
\ifvoid\@floatcapt\else\unvbox\@floatcapt\par\@fs@mid\fi%
|
|
Packit Service |
76cb02 |
\else\fi%
|
|
Packit Service |
76cb02 |
}{
|
|
Packit Service |
76cb02 |
\@fs@iftopcapt\else%
|
|
Packit Service |
76cb02 |
\@capcontent%
|
|
Packit Service |
76cb02 |
\ifvoid\@floatcapt\else\par\@fs@mid\unvbox\@floatcapt\fi
|
|
Packit Service |
76cb02 |
\fi\par\@fs@post\vskip\z@%
|
|
Packit Service |
76cb02 |
\vspace{2mm}
|
|
Packit Service |
76cb02 |
}
|
|
Packit Service |
76cb02 |
|
|
Packit Service |
76cb02 |
|
|
Packit Service |
76cb02 |
%%
|
|
Packit Service |
76cb02 |
%% New listing environment based upon the fancyvrb environment. Its role
|
|
Packit Service |
76cb02 |
%% is to handle the specific `scale' option.
|
|
Packit Service |
76cb02 |
%%
|
|
Packit Service |
76cb02 |
%% Author: Jean-Côme Charpentier.
|
|
Packit Service |
76cb02 |
%%
|
|
Packit Service |
76cb02 |
\RequirePackage{fancyvrb}
|
|
Packit Service |
76cb02 |
\lstset{fancyvrb=true}
|
|
Packit Service |
76cb02 |
|
|
Packit Service |
76cb02 |
\newbox\lstbox
|
|
Packit Service |
76cb02 |
\newlength{\lstwidthw}
|
|
Packit Service |
76cb02 |
|
|
Packit Service |
76cb02 |
|
|
Packit Service |
76cb02 |
%%% New listing option to scale the listing to fit the page width
|
|
Packit Service |
76cb02 |
\lst@Key{scale}{true}[t]{\lstKV@SetIf{#1}\lst@ifscale}
|
|
Packit Service |
76cb02 |
|
|
Packit Service |
76cb02 |
%%% Remember the original fancyvrb macro to handle options
|
|
Packit Service |
76cb02 |
\let\FV@UseKeyValuesOrig\FV@UseKeyValues
|
|
Packit Service |
76cb02 |
|
|
Packit Service |
76cb02 |
\def\code{\FV@Environment{}{lstcode}}
|
|
Packit Service |
76cb02 |
\def\FVB@lstcode{%
|
|
Packit Service |
76cb02 |
% Just dump the listing into a file, skip the options used later
|
|
Packit Service |
76cb02 |
\let\FV@UseKeyValues\relax
|
|
Packit Service |
76cb02 |
\FVB@VerbatimOut{lst.tmp}}
|
|
Packit Service |
76cb02 |
|
|
Packit Service |
76cb02 |
\def\FVE@lstcode{%
|
|
Packit Service |
76cb02 |
\FVE@VerbatimOut
|
|
Packit Service |
76cb02 |
\let\FV@UseKeyValues\FV@UseKeyValuesOrig
|
|
Packit Service |
76cb02 |
% Now, apply the passed options
|
|
Packit Service |
76cb02 |
\expandafter\lstset\expandafter{\FV@KeyValues}
|
|
Packit Service |
76cb02 |
% Is there any scaling required?
|
|
Packit Service |
76cb02 |
\lst@ifscale
|
|
Packit Service |
76cb02 |
\lst@ifbreaklines
|
|
Packit Service |
76cb02 |
\lstwidthw=\lst@linewidth
|
|
Packit Service |
76cb02 |
\else
|
|
Packit Service |
76cb02 |
% Force the style to perform a valid fontsize scaling
|
|
Packit Service |
76cb02 |
\lstset{basicstyle=\ttfamily}
|
|
Packit Service |
76cb02 |
\begin{lrbox}{\lstbox}
|
|
Packit Service |
76cb02 |
\lstinputlisting{lst.tmp}%
|
|
Packit Service |
76cb02 |
\end{lrbox}
|
|
Packit Service |
76cb02 |
\settowidth{\lstwidthw}{\usebox{\lstbox}}
|
|
Packit Service |
76cb02 |
\fi
|
|
Packit Service |
76cb02 |
\ifdim\lstwidthw>\linewidth
|
|
Packit Service |
76cb02 |
% Compute real width with basic font to perform consistent scaling
|
|
Packit Service |
76cb02 |
\lst@ifbreaklines
|
|
Packit Service |
76cb02 |
\setlength{\lstwidthw}{\lstwidthw*%
|
|
Packit Service |
76cb02 |
\ratio{\lstcharwidthb}{\lstcharwidth}}
|
|
Packit Service |
76cb02 |
\fi
|
|
Packit Service |
76cb02 |
\lstset{basicstyle=\ttfamily}
|
|
Packit Service |
76cb02 |
\typeout{Listing width <\the\lstwidthw> scaled to fit in <\the\linewidth>}
|
|
Packit Service |
76cb02 |
% Compute the width ratio
|
|
Packit Service |
76cb02 |
\edef\r@tio{\the\numexpr \linewidth/(\lstwidthw/1000)-1}%
|
|
Packit Service |
76cb02 |
\begingroup
|
|
Packit Service |
76cb02 |
\@tempdima\f@size pt
|
|
Packit Service |
76cb02 |
\typeout{\the\@tempdima}
|
|
Packit Service |
76cb02 |
\@tempdima 0.\r@tio\@tempdima
|
|
Packit Service |
76cb02 |
\typeout{\the\@tempdima}
|
|
Packit Service |
76cb02 |
% interlignage = 1.2 x font size
|
|
Packit Service |
76cb02 |
\@tempdimb 1.2\@tempdima
|
|
Packit Service |
76cb02 |
% Redefine the fontsize to apply
|
|
Packit Service |
76cb02 |
\fontsize{\@tempdima}{\@tempdimb}%
|
|
Packit Service |
76cb02 |
% Print out the listing with this new size
|
|
Packit Service |
76cb02 |
\lstinputlisting[linewidth=\linewidth]{lst.tmp}%
|
|
Packit Service |
76cb02 |
\endgroup
|
|
Packit Service |
76cb02 |
\else
|
|
Packit Service |
76cb02 |
% The listing fits in the available width, do nothing special
|
|
Packit Service |
76cb02 |
\lstinputlisting{lst.tmp}%
|
|
Packit Service |
76cb02 |
\fi
|
|
Packit Service |
76cb02 |
\else
|
|
Packit Service |
76cb02 |
% No scaling, do as usual
|
|
Packit Service |
76cb02 |
\lstinputlisting{lst.tmp}
|
|
Packit Service |
76cb02 |
\fi
|
|
Packit Service |
76cb02 |
%\strut
|
|
Packit Service |
76cb02 |
}
|
|
Packit Service |
76cb02 |
\DefineVerbatimEnvironment{lstcode}{lstcode}{}
|
|
Packit Service |
76cb02 |
|
|
Packit Service |
76cb02 |
% Redefine \lst@DeInit to disable page break after the listing
|
|
Packit Service |
76cb02 |
\def\lst@DeInit{%
|
|
Packit Service |
76cb02 |
\lst@XPrintToken
|
|
Packit Service |
76cb02 |
\lst@EOLUpdate
|
|
Packit Service |
76cb02 |
\global\advance\lst@newlines\m@ne
|
|
Packit Service |
76cb02 |
\lst@ifshowlines
|
|
Packit Service |
76cb02 |
\lst@DoNewLines
|
|
Packit Service |
76cb02 |
\else
|
|
Packit Service |
76cb02 |
\setbox\@tempboxa\vbox{\lst@DoNewLines}%
|
|
Packit Service |
76cb02 |
\fi
|
|
Packit Service |
76cb02 |
\lst@ifdisplaystyle
|
|
Packit Service |
76cb02 |
\par\nobreak
|
|
Packit Service |
76cb02 |
\removelastskip
|
|
Packit Service |
76cb02 |
\fi
|
|
Packit Service |
76cb02 |
\lsthk@ExitVars
|
|
Packit Service |
76cb02 |
\everypar{}%
|
|
Packit Service |
76cb02 |
\lsthk@DeInit
|
|
Packit Service |
76cb02 |
\normalbaselines
|
|
Packit Service |
76cb02 |
\normalcolor
|
|
Packit Service |
76cb02 |
\lst@MakeCaption b%
|
|
Packit Service |
76cb02 |
\lst@ifbox
|
|
Packit Service |
76cb02 |
\egroup
|
|
Packit Service |
76cb02 |
$%
|
|
Packit Service |
76cb02 |
\hss
|
|
Packit Service |
76cb02 |
\egroup
|
|
Packit Service |
76cb02 |
\vrule\@width\lst@maxwidth\@height\z@\@depth\z@
|
|
Packit Service |
76cb02 |
\else
|
|
Packit Service |
76cb02 |
\lst@ifdisplaystyle
|
|
Packit Service |
76cb02 |
\@tempdima\lst@belowskip
|
|
Packit Service |
76cb02 |
\ifdim\@tempdima<\z@
|
|
Packit Service |
76cb02 |
\par\nobreak
|
|
Packit Service |
76cb02 |
\vspace{-\@tempdima}%
|
|
Packit Service |
76cb02 |
\else
|
|
Packit Service |
76cb02 |
\par\penalty-50
|
|
Packit Service |
76cb02 |
\vspace\lst@belowskip
|
|
Packit Service |
76cb02 |
\fi
|
|
Packit Service |
76cb02 |
\fi
|
|
Packit Service |
76cb02 |
\fi
|
|
Packit Service |
76cb02 |
\ifx\lst@multicols\@empty\else
|
|
Packit Service |
76cb02 |
\def\lst@next{\global\let\@checkend\@gobble
|
|
Packit Service |
76cb02 |
\endmulticols
|
|
Packit Service |
76cb02 |
\global\let\@checkend\lst@@checkend
|
|
Packit Service |
76cb02 |
}%
|
|
Packit Service |
76cb02 |
\expandafter\lst@next
|
|
Packit Service |
76cb02 |
\fi
|
|
Packit Service |
76cb02 |
\ifx\lst@float\relax\else
|
|
Packit Service |
76cb02 |
\expandafter\lst@endfloat
|
|
Packit Service |
76cb02 |
\fi
|
|
Packit Service |
76cb02 |
\endgroup
|
|
Packit Service |
76cb02 |
} %$
|
|
Packit Service |
76cb02 |
|