mirror of
				https://github.com/alexandrebobkov/CanadianPayroll.git
				synced 2025-10-31 16:21:44 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			179 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
			
		
		
	
	
			179 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
| %% TOPIC AND CONTENTS BOXES
 | |
| %
 | |
| % change this info string if making any custom modification
 | |
| \ProvidesPackage{sphinxlatexshadowbox}[2024/07/28 v8.1.0 sphinxShadowBox]
 | |
| 
 | |
| % Provides support for this output mark-up from Sphinx latex writer:
 | |
| %
 | |
| % - Environments: sphinxtopic, sphinxcontents, and sphinxsidebar.
 | |
| %
 | |
| %   These wrappers replace at 8.1.0 former direct use of sphinxShadowBox
 | |
| %   environment which did not allow separate styling.
 | |
| %
 | |
| % - Commands: \sphinxstyletopictitle, \sphinxstylecontentstitle, and
 | |
| %   \sphinxstylesidebartitle.
 | |
| %
 | |
| %   At 8.1.0 they default to use \sphinxdotitlerow whose definiion is done in
 | |
| %   sphinxlatexadmonitions.sty.  There is also  \sphinxstylesidebarsubtitle
 | |
| %   which does not use \sphinxdotitlerow.
 | |
| %
 | |
| % Dependencies (they do not need to be defined at time of loading):
 | |
| %
 | |
| % - of course the various colour and dimension options handled via sphinx.sty
 | |
| % - dimension register \spx@image@maxheight from sphinxlatexgraphics.sty
 | |
| % - \savenotes/\spewnotes from sphinxpackagefootnote.sty
 | |
| % - \ifspx@inframed defined in sphinx.sty
 | |
| % - \sphinxdotitlerow from sphinxlatexadmonitions.sty
 | |
| % - \spx@boxes@fcolorbox@setup from sphinxpackageboxes.sty
 | |
| %
 | |
| \RequirePackage{framed}
 | |
| % Those are required either before or after by sphinx.sty anyhow, but for
 | |
| % clarity we list them here:
 | |
| \RequirePackage{sphinxlatexgraphics}
 | |
| \RequirePackage{sphinxpackagefootnote}
 | |
| \RequirePackage{sphinxlatexadmonitions}
 | |
| \RequirePackage{sphinxpackageboxes}
 | |
| 
 | |
| % At 5.1.0 the code formerly here in a definition of \spx@ShadowFBox has been
 | |
| % refactored to hand over to a more powerful \spx@boxes@fcolorbox provided by
 | |
| % file sphinxpackageboxes.sty, it can draw rounded corners and add a background
 | |
| % color.
 | |
| 
 | |
| % At 6.2.0, \spx@ShadowFBox is so much simplified that it is now not
 | |
| % separately defined but directly incorporated into the \FrameCommand
 | |
| % definition done by sphinxShadowBox environment below.
 | |
| 
 | |
| % Use framed.sty \MakeFramed/\endMakeFramed to allow page breaks for topic
 | |
| % boxes.  Originally Sphinx used \shadowbox from fancybox.sty but it did not
 | |
| % allow pagebreaks (which was problematic for "contents" directive if there
 | |
| % are many subsections).
 | |
| %
 | |
| % Docutils does not allow topic to be nested within topics or other body
 | |
| % elements.  But the LaTeX code here does allow it:
 | |
| %
 | |
| % - a topic inside another topic would be rendered in a minipage (thus not
 | |
| %   allowing pagebreaks).  Its external frame would adapt perfectly to
 | |
| %   the *current (smaller) width for text*.
 | |
| %
 | |
| % - a topic inside (nested) lists or quote environments would have its frame
 | |
| %   take the *full width* of the page, but its text contents on the other hand
 | |
| %   would obey exactly the current indentation plus inner separation.  This is
 | |
| %   in contrast with the framing used for literal blocks, also based, but in a
 | |
| %   more sophisticated way on usage of \MakeFramed/\endMakeFramed, and
 | |
| %   adjusting to current text indentation.
 | |
| %
 | |
| % At 8.1.0, sphinxShadowBox takes an optional argument #1 and uses it as
 | |
| % \spx@boxes@fcolorbox@setup{#1} rather than \spx@boxes@fcolorbox@setup{topic}.
 | |
| % Some hesitation whether to move this line to newly added sphinxtopic,
 | |
| % sphinxcontents and sphinxsidebar environmments.  But anyhow the environment
 | |
| % also requires later knowing a few more things: sphinx<type>TextColor and
 | |
| % spx@<type>@texextras.
 | |
| %
 | |
| % The #1 defaulting to topic must be such that all parameters expected by
 | |
| % \spx@boxes@fcolorbox@setup actually do exist, see CSS options in sphinx.sty
 | |
| % which is what defines them for contents, topic, and sidebar.
 | |
| %
 | |
| % Fortunately the #1 is not needed in \end{sphinxShadowBox} so we don't have
 | |
| % to work around a LaTeX conception bug that such #1 can not be used as is in
 | |
| % the definition of the \end part of an environment.
 | |
| %
 | |
| % MEMO: the "shadow" is not really drawn directly by this environment but
 | |
| % indirectly via the configuration which is passed over to \spx@boxes@fcolorbox,
 | |
| % which is the macro creating frame and (perhaps but not necessarily) a shadow.
 | |
| \newenvironment{sphinxShadowBox}[1][topic]%
 | |
|   {%
 | |
|    \spx@boxes@fcolorbox@setup{#1}%
 | |
|    % we will use the dimen registers from sphinxpackageboxes.sty which now hold
 | |
|    % the values from options related to topic/contents
 | |
|    % MEMO: \spx@boxes@fcolorbox creates an \hbox but does not quit vertical
 | |
|    %       mode; but in context of framed.sty's \FrameCommand TeX is already
 | |
|    %       in restricted horizontal mode, so no need for a \leavevmode here.
 | |
|    \def\FrameCommand {\spx@boxes@fcolorbox}%
 | |
|    % 6.2.0 adds support for div.topic_box-decoration-break=slice.
 | |
|    % (it is yet undecided if slice style should inhibit a bottom shadow)
 | |
|    \@nameuse{ifspx@#1@border@open}%
 | |
|      \def\FirstFrameCommand
 | |
|                {\spx@boxes@fcolorbox@setup@openbottom\FrameCommand}%
 | |
|      \def\MidFrameCommand
 | |
|                {\spx@boxes@fcolorbox@setup@openboth  \FrameCommand}%
 | |
|      \def\LastFrameCommand
 | |
|                {\spx@boxes@fcolorbox@setup@opentop   \FrameCommand}%
 | |
|    \fi
 | |
|    \advance\spx@image@maxheight
 | |
|    -\dimexpr\spx@boxes@border@top+\spx@boxes@border@bottom
 | |
|            +\spx@boxes@padding@top+\spx@boxes@padding@bottom
 | |
|            +\ifdim\spx@boxes@shadow@yoffset<\z@-\fi\spx@boxes@shadow@yoffset
 | |
|            +\baselineskip\relax
 | |
|    % configure framed.sty not to add extra vertical spacing
 | |
|    \ltx@ifundefined{OuterFrameSep}{}{\OuterFrameSep\z@skip}%
 | |
|    % the \trivlist will add the vertical spacing on top and bottom which is
 | |
|    % typical of center environment as used in Sphinx <= 1.4.1
 | |
|    % the \noindent has the effet of an extra blank line on top, to
 | |
|    % imitate closely the layout from Sphinx <= 1.4.1; the \FrameHeightAdjust
 | |
|    % will put top part of frame on this baseline.
 | |
|    \def\FrameHeightAdjust {\baselineskip}%
 | |
|    % use package footnote to handle footnotes
 | |
|    \savenotes
 | |
|    \trivlist\item\noindent
 | |
|     % use a minipage if we are already inside a framed environment
 | |
|     \ifspx@inframed\begin{minipage}{\linewidth}\fi
 | |
|     \MakeFramed {\spx@inframedtrue
 | |
|     % framed.sty puts into "\width" the added width (padding+border widths)
 | |
|     % adjust \hsize to what the contents must use
 | |
|     \advance\hsize-\width
 | |
|     % adjust LaTeX parameters to behave properly in indented/quoted contexts
 | |
|     \FrameRestore
 | |
|     % typeset the contents as in a minipage (Sphinx <= 1.4.1 used a minipage and
 | |
|     % itemize/enumerate are therein typeset more tightly, we want to keep
 | |
|     % that). We copy-paste from LaTeX source code but don't do a real minipage.
 | |
|     \@pboxswfalse
 | |
|     \let\@listdepth\@mplistdepth \@mplistdepth\z@
 | |
|     \@minipagerestore
 | |
|     \@setminipage
 | |
|     }%
 | |
|     \color@begingroup % workaround upstream framed.sty bug
 | |
|     \@nameuse{ifspx@#1@withtextcolor}%
 | |
|       \color{sphinx#1TextColor}%
 | |
|     \fi
 | |
|     \@nameuse{spx@#1@TeXextras}%
 | |
|   }%
 | |
|   {% insert the "endminipage" code
 | |
|     \par\unskip
 | |
|     \color@endgroup   % matches the \color@begingroup
 | |
|     \@minipagefalse
 | |
|    \endMakeFramed
 | |
|      \ifspx@inframed\end{minipage}\fi
 | |
|    \endtrivlist
 | |
|    % output the stored footnotes
 | |
|    \spewnotes
 | |
|   }
 | |
| 
 | |
| % 8.1.0
 | |
| \newenvironment{sphinxtopic}
 | |
|                {\begin{sphinxShadowBox}[topic]}{\end{sphinxShadowBox}}
 | |
| \newenvironment{sphinxcontents}
 | |
|                {\begin{sphinxShadowBox}[contents]}{\end{sphinxShadowBox}}
 | |
| % Arguably sphinxsidebar should rather use a wrapfig or similar environment
 | |
| % but this is so dysfunctional in LaTeX (except for self-written documents)
 | |
| % so we prefer to not venture into such a potential quagmire and keep the
 | |
| % legacy rendering using a full width display.
 | |
| \newenvironment{sphinxsidebar}
 | |
|                {\begin{sphinxShadowBox}[sidebar]}{\end{sphinxShadowBox}}
 | |
| 
 | |
| % TODO: decide if this should be in sphinxlatexstyletext.sty rather
 | |
| %
 | |
| % 8.1.0 styles topic/contents/sidebar with a title row, too.
 | |
| % Prior to 8.1.0, definitions use \protected\def but there does not seem
 | |
| % to be any reason so back to \newcommand.
 | |
| \newcommand*\sphinxstyletopictitle[1]{\sphinxdotitlerow{topic}{#1}}
 | |
| \newcommand*\sphinxstylecontentstitle[1]{\sphinxdotitlerow{contents}{#1}}
 | |
| \newcommand*\sphinxstylesidebartitle[1]{\sphinxdotitlerow{sidebar}{#1}}
 | |
| % No default color background for subtitle.  The contents next are injected by
 | |
| % LaTeX writer after a blank line in source hence will start a new paragrpah.
 | |
| % The \sphinxAtStartPar here is only for coherence with other text paragraphs,
 | |
| % but does not have serious necessity (its general role is to allow hyphenation
 | |
| % for first word in narrow table cells).
 | |
| \newcommand*\sphinxstylesidebarsubtitle[1]{\sphinxAtStartPar\textbf{#1}}
 | |
| 
 | |
| \endinput
 |