1
0
This repository has been archived on 2025-03-06. You can view files and clone it, but cannot push or open issues or pull requests.

185 lines
7.5 KiB
TeX

\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{mznstyle}[2016/12/18 LaTeX package (MiniZinc for Sphinx)]
\RequirePackage{trace}
\RequirePackage[breakable]{tcolorbox}
\RequirePackage{caption}
\PassOptionsToPackage{hanging,nooneline}{caption}
\RequirePackage{chngcntr}
\RequirePackage{inputenc}
\PassOptionsToPackage{utf8}{inputenc}
\counterwithin{chapter}{part}
\renewcommand{\thepart}{\arabic{part}}
%\definecolor{UglyGreen}{rgb}{0,1,0}
\definecolor{UglyGreen}{rgb}{0.418,0.556,0.137}
%\definecolor{UglyBlue}{rgb}{0,0,1}
\definecolor{UglyBlue}{rgb}{0.273,0.508,0.703}
%\definecolor{UglyRed}{rgb}{0.2,0,0}
\definecolor{UglyRed}{rgb}{0.801,0.359,0.359}
%\definecolor{UglyOrange}{rgb}{0.2,0,0}
\definecolor{UglyOrange}{rgb}{0.930,0.906,0.664}
\DeclareCaptionFont{white}{\color{white}}
\RequirePackage{tocloft}
\PassOptionsToPackage{titles}{tocloft}
\setcounter{tocdepth}{4}
\renewcommand*\cftchapnumwidth{2em}
\renewcommand*\cftsecnumwidth{3em}
\renewcommand*\cftsubsecnumwidth{4em}
\renewenvironment{sphinxadmonition}[2]{
\begin{tcolorbox}[colbacktitle=UglyBlue,coltitle=white,colframe=UglyBlue,fonttitle=\bfseries\large,title=#2]
}{\end{tcolorbox}}
\tcbset{boxrule=0.4pt}
\newtcolorbox[auto counter,number within=chapter]{codebox}[2][]{%
title=\textbf{Listing~\thetcbcounter:} #2,#1}
\renewcommand\sphinxcaption[2][\linewidth]{%
\noindent\hb@xt@\linewidth{\hss
\vtop{\@tempdima\dimexpr#1\relax
% don't exceed linewidth for the caption width
\ifdim\@tempdima>\linewidth\hsize\linewidth\else\hsize\@tempdima\fi
% longtable ignores \abovecaptionskip/\belowcaptionskip, so add hooks here
% to uniformize control of caption distance to tables
\abovecaptionskip\sphinxabovecaptionskip
\belowcaptionskip\sphinxbelowcaptionskip
\caption[{#2}]%
{\strut\ignorespaces#2\ifhmode\unskip\@finalstrut\strutbox\fi}%
}\hss}%
\par\prevdepth\dp\strutbox
}%
\renewenvironment{sphinxVerbatim}{%
% first, let's check if there is a caption
\ifx\sphinxVerbatimTitle\empty
\sphinxvspacefixafterfrenchlists
% \parskip\z@skip
\vskip\sphinxverbatimsmallskipamount
% there was no caption. Check if nevertheless a label was set.
\ifx\sphinxLiteralBlockLabel\empty\else
% we require some space to be sure hyperlink target from \phantomsection
% will not be separated from upcoming verbatim by a page break
\needspace{\sphinxliteralblockwithoutcaptionneedspace}%
\phantomsection\sphinxLiteralBlockLabel
\fi
\else
\parskip\z@skip
\if t\spx@opt@literalblockcappos
\vskip\spx@abovecaptionskip
\def\sphinxVerbatim@Before
{\sphinxVerbatim@Title\nointerlineskip
\kern\dimexpr-\dp\strutbox+\sphinxbelowcaptionspace\relax}%
\else
\vskip\sphinxverbatimsmallskipamount
\def\sphinxVerbatim@After
{\nointerlineskip\kern\dp\strutbox\sphinxVerbatim@Title}%
\fi
\def\@captype{literalblock}%
\capstart
% \sphinxVerbatimTitle must reset color
% \setbox\sphinxVerbatim@TitleBox
% \hbox{\begin{minipage}{\linewidth}%
% \sphinxVerbatimTitle
% \end{minipage}}%
\fi
\fboxsep\sphinxverbatimsep \fboxrule\sphinxverbatimborder
\ifspx@opt@verbatimwithframe\else\fboxrule\z@\fi
\let\FrameCommand \sphinxVerbatim@FrameCommand
\let\FirstFrameCommand\sphinxVerbatim@FirstFrameCommand
\let\MidFrameCommand \sphinxVerbatim@MidFrameCommand
\let\LastFrameCommand \sphinxVerbatim@LastFrameCommand
\ifspx@opt@verbatimhintsturnover\else
\let\sphinxVerbatim@Continued\@empty
\let\sphinxVerbatim@Continues\@empty
\fi
\ifspx@opt@verbatimwrapslines
% fancyvrb's Verbatim puts each input line in (unbreakable) horizontal boxes.
% This customization wraps each line from the input in a \vtop, thus
% allowing it to wrap and display on two or more lines in the latex output.
% - The codeline counter will be increased only once.
% - The wrapped material will not break across pages, it is impossible
% to achieve this without extensive rewrite of fancyvrb.
% - The (not used in sphinx) obeytabs option to Verbatim is
% broken by this change (showtabs and tabspace work).
\let\sphinxVerbatimFormatLine\sphinxVerbatimFormatLineWrap
\let\FV@Space\spx@verbatim@space
% Allow breaks at special characters using \PYG... macros.
\sphinxbreaksatspecials
% Breaks at punctuation characters . , ; ? ! and / (needs catcode activation)
\fvset{codes*=\sphinxbreaksviaactive}%
\else % end of conditional code for wrapping long code lines
\let\sphinxVerbatimFormatLine\sphinxVerbatimFormatLineNoWrap
\fi
\let\FancyVerbFormatLine\sphinxFancyVerbFormatLine
% workaround to fancyvrb's check of \@currenvir
\let\VerbatimEnvironment\sphinxVerbatimEnvironment
% workaround to fancyvrb's check of current list depth
\def\@toodeep {\advance\@listdepth\@ne}%
% The list environment is needed to control perfectly the vertical space.
% Note: \OuterFrameSep used by framed.sty is later set to \topsep hence 0pt.
% - if caption: distance from last text baseline to caption baseline is
% A+(B-F)+\ht\strutbox, A = \abovecaptionskip (default 10pt), B =
% \baselineskip, F is the framed.sty \FrameHeightAdjust macro, default 6pt.
% Formula valid for F < 10pt.
% - distance of baseline of caption to top of frame is like for tables:
% \sphinxbelowcaptionspace (=0.5\baselineskip)
% - if no caption: distance of last text baseline to code frame is S+(B-F),
% with S = \sphinxverbatimtopskip (=\smallskip)
% - and distance from bottom of frame to next text baseline is
% \baselineskip+\parskip.
% The \trivlist is used to avoid possible "too deeply nested" error.
\itemsep \z@skip
\topsep \z@skip
\partopsep \z@skip
% trivlist will set \parsep to \parskip = zero
% \leftmargin will be set to zero by trivlist
\rightmargin\z@
\parindent \z@% becomes \itemindent. Default zero, but perhaps overwritten.
\trivlist\item\relax
\ifsphinxverbatimwithminipage\spx@inframedtrue\fi
% use a minipage if we are already inside a framed environment
\ifspx@inframed\noindent\begin{minipage}{\linewidth}\fi
\ifx\sphinxVerbatimTitle\empty
\begin{tcolorbox}[breakable,toprule at break=0pt,bottomrule at break=0pt,pad at break*=2mm]
\else
% \show\sphinxVerbatimTitle
% \begin{codebox}{\sphinxLiteralBlockLabel \sphinxVerbatimTitle}
\captionsetup{margin=0pt,aboveskip=0pt,belowskip=0pt,justification=raggedright,singlelinecheck=false,font=white}
% \traceon
\begin{tcolorbox}[breakable,,toprule at break=0pt,bottomrule at break=0pt,pad at break*=2mm,title={\sphinxVerbatimTitle}]
% \traceoff
\fi
% \MakeFramed {% adapted over from framed.sty's snugshade environment
% \advance\hsize-\width\@totalleftmargin\z@\linewidth\hsize\@setminipage
% }%
% For grid placement from \strut's in \FancyVerbFormatLine
\lineskip\z@skip
% active comma should not be overwritten by \@noligs
\ifspx@opt@verbatimwrapslines
\let\verbatim@nolig@list \sphinx@verbatim@nolig@list
\fi
% will fetch its optional arguments if any
\OriginalVerbatim
}
{%
\endOriginalVerbatim
% \par\unskip\@minipagefalse\endMakeFramed % from framed.sty snugshade
\end{tcolorbox}
\ifspx@inframed\end{minipage}\fi
\global\let\sphinxLiteralBlockLabel\empty
\global\let\sphinxVerbatimTitle\empty
\endtrivlist
}
\def\theliteralblock{\arabic{part}.\arabic{chapter}.\arabic{literalblock}}
\def\thefigure{\arabic{part}.\arabic{chapter}.\arabic{figure}}