add pdf
| 
		 After Width: | Height: | Size: 28 KiB  | 
| 
						 | 
				
			
			@ -0,0 +1,101 @@
 | 
			
		|||
;; -*- coding: utf-8; mode: Lisp; -*-
 | 
			
		||||
;; style file for xindy
 | 
			
		||||
;; filename: LICRcyr2utf8.xdy
 | 
			
		||||
;; description: style file for xindy which maps back LaTeX Internal
 | 
			
		||||
;;   Character Representation of Cyrillic to utf-8
 | 
			
		||||
;; usage: for use with pdflatex produced .idx files.
 | 
			
		||||
;; Contributed by the Sphinx team, July 2018.
 | 
			
		||||
(merge-rule "\IeC {\'\CYRG }" "Ѓ" :string)
 | 
			
		||||
(merge-rule "\IeC {\'\CYRK }" "Ќ" :string)
 | 
			
		||||
(merge-rule "\IeC {\'\cyrg }" "ѓ" :string)
 | 
			
		||||
(merge-rule "\IeC {\'\cyrk }" "ќ" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRA }" "А" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRB }" "Б" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRC }" "Ц" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRCH }" "Ч" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRD }" "Д" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRDJE }" "Ђ" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRDZE }" "Ѕ" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRDZHE }" "Џ" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRE }" "Е" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYREREV }" "Э" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRERY }" "Ы" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRF }" "Ф" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRG }" "Г" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRGUP }" "Ґ" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRH }" "Х" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRHRDSN }" "Ъ" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRI }" "И" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRIE }" "Є" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRII }" "І" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRISHRT }" "Й" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRJE }" "Ј" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRK }" "К" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRL }" "Л" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRLJE }" "Љ" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRM }" "М" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRN }" "Н" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRNJE }" "Њ" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRO }" "О" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRP }" "П" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRR }" "Р" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRS }" "С" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRSFTSN }" "Ь" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRSH }" "Ш" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRSHCH }" "Щ" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRT }" "Т" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRTSHE }" "Ћ" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRU }" "У" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRUSHRT }" "Ў" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRV }" "В" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRYA }" "Я" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRYI }" "Ї" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRYO }" "Ё" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRYU }" "Ю" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRZ }" "З" :string)
 | 
			
		||||
(merge-rule "\IeC {\CYRZH }" "Ж" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyra }" "а" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrb }" "б" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrc }" "ц" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrch }" "ч" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrd }" "д" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrdje }" "ђ" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrdze }" "ѕ" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrdzhe }" "џ" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyre }" "е" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrerev }" "э" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrery }" "ы" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrf }" "ф" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrg }" "г" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrgup }" "ґ" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrh }" "х" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrhrdsn }" "ъ" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyri }" "и" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrie }" "є" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrii }" "і" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrishrt }" "й" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrje }" "ј" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrk }" "к" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrl }" "л" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrlje }" "љ" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrm }" "м" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrn }" "н" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrnje }" "њ" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyro }" "о" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrp }" "п" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrr }" "р" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrs }" "с" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrsftsn }" "ь" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrsh }" "ш" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrshch }" "щ" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrt }" "т" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrtshe }" "ћ" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyru }" "у" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrushrt }" "ў" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrv }" "в" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrya }" "я" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyryi }" "ї" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyryo }" "ё" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyryu }" "ю" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrz }" "з" :string)
 | 
			
		||||
(merge-rule "\IeC {\cyrzh }" "ж" :string)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,239 @@
 | 
			
		|||
;; style file for xindy
 | 
			
		||||
;; filename: LICRlatin2utf8.xdy
 | 
			
		||||
;; description: style file for xindy which maps back LaTeX Internal
 | 
			
		||||
;;   Character Representation of letters (as arising in .idx index
 | 
			
		||||
;;   file) to UTF-8 encoding for correct sorting by xindy.
 | 
			
		||||
;; usage: for use with the pdflatex engine,
 | 
			
		||||
;;        *not* for use with xelatex or lualatex.
 | 
			
		||||
;;
 | 
			
		||||
;; This is based upon xindy's distributed file tex/inputenc/utf8.xdy.
 | 
			
		||||
;; The modifications include:
 | 
			
		||||
;;
 | 
			
		||||
;; - Updates for compatibility with current LaTeX macro encoding.
 | 
			
		||||
;;
 | 
			
		||||
;; - Systematic usage of the \IeC {...} mark-up, because mark-up in
 | 
			
		||||
;;   tex/inputenc/utf8.xdy was using it on seemingly random basis, and
 | 
			
		||||
;;   Sphinx coercing of xindy usability for both Latin and Cyrillic scripts
 | 
			
		||||
;;   with pdflatex requires its systematic presence here.
 | 
			
		||||
;;
 | 
			
		||||
;; - Support for some extra letters: Ÿ, Ŋ, ŋ, Œ, œ, IJ, ij, ȷ and ẞ.
 | 
			
		||||
;;
 | 
			
		||||
;;   Indeed Sphinx needs to support for pdflatex engine all Unicode letters
 | 
			
		||||
;;   available in TeX T1 font encoding.  The above letters are found in
 | 
			
		||||
;;   that encoding but not in the Latin1, 2, 3 charsets which are those
 | 
			
		||||
;;   covered by original tex/inputenc/utf8.xdy.
 | 
			
		||||
;;
 | 
			
		||||
;; - There is a problem that ȷ is not supported out-of-the box by LaTeX
 | 
			
		||||
;;   with inputenc, one must add explicitly
 | 
			
		||||
;;       \DeclareUnicodeCharacter{0237}{\j}
 | 
			
		||||
;;   to preamble of LaTeX document.  However this character is not supported
 | 
			
		||||
;;   by the TeX "times" font used by default by Sphinx for pdflatex engine.
 | 
			
		||||
;;
 | 
			
		||||
;;     **Update**: since LaTeX 2018/12/01, the \j as well as \SS, \k{} and
 | 
			
		||||
;;                  \.{} need no extra user declaration anymore.
 | 
			
		||||
;;
 | 
			
		||||
;; - ẞ needs \DeclareUnicodeCharacter{1E9E}{\SS} (but ß needs no extra set-up).
 | 
			
		||||
;;
 | 
			
		||||
;; - U+02DB (˛) and U+02D9 (˙) are also not supported by inputenc
 | 
			
		||||
;;   out of the box and require
 | 
			
		||||
;;       \DeclareUnicodeCharacter{02DB}{\k{}}
 | 
			
		||||
;;       \DeclareUnicodeCharacter{02D9}{\.{}}
 | 
			
		||||
;;   to be added to preamble.
 | 
			
		||||
;;
 | 
			
		||||
;; - U+0127 ħ and U+0126 Ħ are absent from TeX T1+TS1 font encodings.
 | 
			
		||||
;;
 | 
			
		||||
;; - Characters Ŋ and ŋ are not supported by TeX font "times" used by
 | 
			
		||||
;;   default by Sphinx for pdflatex engine but they are supported by
 | 
			
		||||
;;   some TeX fonts, in particular by the default LaTeX font for T1
 | 
			
		||||
;;   encoding.
 | 
			
		||||
;;
 | 
			
		||||
;; - " and ~ must be escaped as ~" and resp. ~~ in xindy merge rules.
 | 
			
		||||
;;
 | 
			
		||||
;; Contributed by the Sphinx team, July 2018.
 | 
			
		||||
;;
 | 
			
		||||
;; See sphinx.xdy for superior figures, as they are escaped by LaTeX writer.
 | 
			
		||||
(merge-rule "\IeC {\textonesuperior }" "¹" :string)
 | 
			
		||||
(merge-rule "\IeC {\texttwosuperior }" "²" :string)
 | 
			
		||||
(merge-rule "\IeC {\textthreesuperior }" "³" :string)
 | 
			
		||||
(merge-rule "\IeC {\'a}" "á" :string)
 | 
			
		||||
(merge-rule "\IeC {\'A}" "Á" :string)
 | 
			
		||||
(merge-rule "\IeC {\`a}" "à" :string)
 | 
			
		||||
(merge-rule "\IeC {\`A}" "À" :string)
 | 
			
		||||
(merge-rule "\IeC {\^a}" "â" :string)
 | 
			
		||||
(merge-rule "\IeC {\^A}" "Â" :string)
 | 
			
		||||
(merge-rule "\IeC {\~"a}" "ä" :string)
 | 
			
		||||
(merge-rule "\IeC {\~"A}" "Ä" :string)
 | 
			
		||||
(merge-rule "\IeC {\~~a}" "ã" :string)
 | 
			
		||||
(merge-rule "\IeC {\~~A}" "Ã" :string)
 | 
			
		||||
(merge-rule "\IeC {\c c}" "ç" :string)
 | 
			
		||||
(merge-rule "\IeC {\c C}" "Ç" :string)
 | 
			
		||||
(merge-rule "\IeC {\'c}" "ć" :string)
 | 
			
		||||
(merge-rule "\IeC {\'C}" "Ć" :string)
 | 
			
		||||
(merge-rule "\IeC {\^c}" "ĉ" :string)
 | 
			
		||||
(merge-rule "\IeC {\^C}" "Ĉ" :string)
 | 
			
		||||
(merge-rule "\IeC {\.c}" "ċ" :string)
 | 
			
		||||
(merge-rule "\IeC {\.C}" "Ċ" :string)
 | 
			
		||||
(merge-rule "\IeC {\c s}" "ş" :string)
 | 
			
		||||
(merge-rule "\IeC {\c S}" "Ş" :string)
 | 
			
		||||
(merge-rule "\IeC {\c t}" "ţ" :string)
 | 
			
		||||
(merge-rule "\IeC {\c T}" "Ţ" :string)
 | 
			
		||||
(merge-rule "\IeC {\-}" "" :string); soft hyphen
 | 
			
		||||
(merge-rule "\IeC {\textdiv }" "÷" :string)
 | 
			
		||||
(merge-rule "\IeC {\'e}" "é" :string)
 | 
			
		||||
(merge-rule "\IeC {\'E}" "É" :string)
 | 
			
		||||
(merge-rule "\IeC {\`e}" "è" :string)
 | 
			
		||||
(merge-rule "\IeC {\`E}" "È" :string)
 | 
			
		||||
(merge-rule "\IeC {\^e}" "ê" :string)
 | 
			
		||||
(merge-rule "\IeC {\^E}" "Ê" :string)
 | 
			
		||||
(merge-rule "\IeC {\~"e}" "ë" :string)
 | 
			
		||||
(merge-rule "\IeC {\~"E}" "Ë" :string)
 | 
			
		||||
(merge-rule "\IeC {\^g}" "ĝ" :string)
 | 
			
		||||
(merge-rule "\IeC {\^G}" "Ĝ" :string)
 | 
			
		||||
(merge-rule "\IeC {\.g}" "ġ" :string)
 | 
			
		||||
(merge-rule "\IeC {\.G}" "Ġ" :string)
 | 
			
		||||
(merge-rule "\IeC {\^h}" "ĥ" :string)
 | 
			
		||||
(merge-rule "\IeC {\^H}" "Ĥ" :string)
 | 
			
		||||
(merge-rule "\IeC {\H o}" "ő" :string)
 | 
			
		||||
(merge-rule "\IeC {\H O}" "Ő" :string)
 | 
			
		||||
(merge-rule "\IeC {\textacutedbl }" "˝" :string)
 | 
			
		||||
(merge-rule "\IeC {\H u}" "ű" :string)
 | 
			
		||||
(merge-rule "\IeC {\H U}" "Ű" :string)
 | 
			
		||||
(merge-rule "\IeC {\ae }" "æ" :string)
 | 
			
		||||
(merge-rule "\IeC {\AE }" "Æ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textcopyright }" "©" :string)
 | 
			
		||||
(merge-rule "\IeC {\c \ }" "¸" :string)
 | 
			
		||||
(merge-rule "\IeC {\dh }" "ð" :string)
 | 
			
		||||
(merge-rule "\IeC {\DH }" "Ð" :string)
 | 
			
		||||
(merge-rule "\IeC {\dj }" "đ" :string)
 | 
			
		||||
(merge-rule "\IeC {\DJ }" "Đ" :string)
 | 
			
		||||
(merge-rule "\IeC {\guillemotleft }" "«" :string)
 | 
			
		||||
(merge-rule "\IeC {\guillemotright }" "»" :string)
 | 
			
		||||
(merge-rule "\IeC {\'\i }" "í" :string)
 | 
			
		||||
(merge-rule "\IeC {\`\i }" "ì" :string)
 | 
			
		||||
(merge-rule "\IeC {\^\i }" "î" :string)
 | 
			
		||||
(merge-rule "\IeC {\~"\i }" "ï" :string)
 | 
			
		||||
(merge-rule "\IeC {\i }" "ı" :string)
 | 
			
		||||
(merge-rule "\IeC {\^\j }" "ĵ" :string)
 | 
			
		||||
(merge-rule "\IeC {\k {}}" "˛" :string)
 | 
			
		||||
(merge-rule "\IeC {\l }" "ł" :string)
 | 
			
		||||
(merge-rule "\IeC {\L }" "Ł" :string)
 | 
			
		||||
(merge-rule "\IeC {\nobreakspace }" " " :string)
 | 
			
		||||
(merge-rule "\IeC {\o }" "ø" :string)
 | 
			
		||||
(merge-rule "\IeC {\O }" "Ø" :string)
 | 
			
		||||
(merge-rule "\IeC {\textsterling }" "£" :string)
 | 
			
		||||
(merge-rule "\IeC {\textparagraph }" "¶" :string)
 | 
			
		||||
(merge-rule "\IeC {\ss }" "ß" :string)
 | 
			
		||||
(merge-rule "\IeC {\textsection }" "§" :string)
 | 
			
		||||
(merge-rule "\IeC {\textbrokenbar }" "¦" :string)
 | 
			
		||||
(merge-rule "\IeC {\textcent }" "¢" :string)
 | 
			
		||||
(merge-rule "\IeC {\textcurrency }" "¤" :string)
 | 
			
		||||
(merge-rule "\IeC {\textdegree }" "°" :string)
 | 
			
		||||
(merge-rule "\IeC {\textexclamdown }" "¡" :string)
 | 
			
		||||
(merge-rule "\IeC {\texthbar }" "ħ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textHbar }" "Ħ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textonehalf }" "½" :string)
 | 
			
		||||
(merge-rule "\IeC {\textonequarter }" "¼" :string)
 | 
			
		||||
(merge-rule "\IeC {\textordfeminine }" "ª" :string)
 | 
			
		||||
(merge-rule "\IeC {\textordmasculine }" "º" :string)
 | 
			
		||||
(merge-rule "\IeC {\textperiodcentered }" "·" :string)
 | 
			
		||||
(merge-rule "\IeC {\textquestiondown }" "¿" :string)
 | 
			
		||||
(merge-rule "\IeC {\textregistered }" "®" :string)
 | 
			
		||||
(merge-rule "\IeC {\textthreequarters }" "¾" :string)
 | 
			
		||||
(merge-rule "\IeC {\textyen }" "¥" :string)
 | 
			
		||||
(merge-rule "\IeC {\th }" "þ" :string)
 | 
			
		||||
(merge-rule "\IeC {\TH }" "Þ" :string)
 | 
			
		||||
(merge-rule "\IeC {\'I}" "Í" :string)
 | 
			
		||||
(merge-rule "\IeC {\`I}" "Ì" :string)
 | 
			
		||||
(merge-rule "\IeC {\^I}" "Î" :string)
 | 
			
		||||
(merge-rule "\IeC {\~"I}" "Ï" :string)
 | 
			
		||||
(merge-rule "\IeC {\.I}" "İ" :string)
 | 
			
		||||
(merge-rule "\IeC {\^J}" "Ĵ" :string)
 | 
			
		||||
(merge-rule "\IeC {\k a}" "ą" :string)
 | 
			
		||||
(merge-rule "\IeC {\k A}" "Ą" :string)
 | 
			
		||||
(merge-rule "\IeC {\k e}" "ę" :string)
 | 
			
		||||
(merge-rule "\IeC {\k E}" "Ę" :string)
 | 
			
		||||
(merge-rule "\IeC {\'l}" "ĺ" :string)
 | 
			
		||||
(merge-rule "\IeC {\'L}" "Ĺ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textlnot }" "¬" :string)
 | 
			
		||||
(merge-rule "\IeC {\textmu }" "µ" :string)
 | 
			
		||||
(merge-rule "\IeC {\'n}" "ń" :string)
 | 
			
		||||
(merge-rule "\IeC {\'N}" "Ń" :string)
 | 
			
		||||
(merge-rule "\IeC {\~~n}" "ñ" :string)
 | 
			
		||||
(merge-rule "\IeC {\~~N}" "Ñ" :string)
 | 
			
		||||
(merge-rule "\IeC {\'o}" "ó" :string)
 | 
			
		||||
(merge-rule "\IeC {\'O}" "Ó" :string)
 | 
			
		||||
(merge-rule "\IeC {\`o}" "ò" :string)
 | 
			
		||||
(merge-rule "\IeC {\`O}" "Ò" :string)
 | 
			
		||||
(merge-rule "\IeC {\^o}" "ô" :string)
 | 
			
		||||
(merge-rule "\IeC {\^O}" "Ô" :string)
 | 
			
		||||
(merge-rule "\IeC {\~"o}" "ö" :string)
 | 
			
		||||
(merge-rule "\IeC {\~"O}" "Ö" :string)
 | 
			
		||||
(merge-rule "\IeC {\~~o}" "õ" :string)
 | 
			
		||||
(merge-rule "\IeC {\~~O}" "Õ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textpm }" "±" :string)
 | 
			
		||||
(merge-rule "\IeC {\r a}" "å" :string)
 | 
			
		||||
(merge-rule "\IeC {\r A}" "Å" :string)
 | 
			
		||||
(merge-rule "\IeC {\'r}" "ŕ" :string)
 | 
			
		||||
(merge-rule "\IeC {\'R}" "Ŕ" :string)
 | 
			
		||||
(merge-rule "\IeC {\r u}" "ů" :string)
 | 
			
		||||
(merge-rule "\IeC {\r U}" "Ů" :string)
 | 
			
		||||
(merge-rule "\IeC {\'s}" "ś" :string)
 | 
			
		||||
(merge-rule "\IeC {\'S}" "Ś" :string)
 | 
			
		||||
(merge-rule "\IeC {\^s}" "ŝ" :string)
 | 
			
		||||
(merge-rule "\IeC {\^S}" "Ŝ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textasciidieresis }" "¨" :string)
 | 
			
		||||
(merge-rule "\IeC {\textasciimacron }" "¯" :string)
 | 
			
		||||
(merge-rule "\IeC {\.{}}" "˙" :string)
 | 
			
		||||
(merge-rule "\IeC {\textasciiacute }" "´" :string)
 | 
			
		||||
(merge-rule "\IeC {\texttimes }" "×" :string)
 | 
			
		||||
(merge-rule "\IeC {\u a}" "ă" :string)
 | 
			
		||||
(merge-rule "\IeC {\u A}" "Ă" :string)
 | 
			
		||||
(merge-rule "\IeC {\u g}" "ğ" :string)
 | 
			
		||||
(merge-rule "\IeC {\u G}" "Ğ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textasciibreve }" "˘" :string)
 | 
			
		||||
(merge-rule "\IeC {\'u}" "ú" :string)
 | 
			
		||||
(merge-rule "\IeC {\'U}" "Ú" :string)
 | 
			
		||||
(merge-rule "\IeC {\`u}" "ù" :string)
 | 
			
		||||
(merge-rule "\IeC {\`U}" "Ù" :string)
 | 
			
		||||
(merge-rule "\IeC {\^u}" "û" :string)
 | 
			
		||||
(merge-rule "\IeC {\^U}" "Û" :string)
 | 
			
		||||
(merge-rule "\IeC {\~"u}" "ü" :string)
 | 
			
		||||
(merge-rule "\IeC {\~"U}" "Ü" :string)
 | 
			
		||||
(merge-rule "\IeC {\u u}" "ŭ" :string)
 | 
			
		||||
(merge-rule "\IeC {\u U}" "Ŭ" :string)
 | 
			
		||||
(merge-rule "\IeC {\v c}" "č" :string)
 | 
			
		||||
(merge-rule "\IeC {\v C}" "Č" :string)
 | 
			
		||||
(merge-rule "\IeC {\v d}" "ď" :string)
 | 
			
		||||
(merge-rule "\IeC {\v D}" "Ď" :string)
 | 
			
		||||
(merge-rule "\IeC {\v e}" "ě" :string)
 | 
			
		||||
(merge-rule "\IeC {\v E}" "Ě" :string)
 | 
			
		||||
(merge-rule "\IeC {\v l}" "ľ" :string)
 | 
			
		||||
(merge-rule "\IeC {\v L}" "Ľ" :string)
 | 
			
		||||
(merge-rule "\IeC {\v n}" "ň" :string)
 | 
			
		||||
(merge-rule "\IeC {\v N}" "Ň" :string)
 | 
			
		||||
(merge-rule "\IeC {\v r}" "ř" :string)
 | 
			
		||||
(merge-rule "\IeC {\v R}" "Ř" :string)
 | 
			
		||||
(merge-rule "\IeC {\v s}" "š" :string)
 | 
			
		||||
(merge-rule "\IeC {\v S}" "Š" :string)
 | 
			
		||||
(merge-rule "\IeC {\textasciicaron }" "ˇ" :string)
 | 
			
		||||
(merge-rule "\IeC {\v t}" "ť" :string)
 | 
			
		||||
(merge-rule "\IeC {\v T}" "Ť" :string)
 | 
			
		||||
(merge-rule "\IeC {\v z}" "ž" :string)
 | 
			
		||||
(merge-rule "\IeC {\v Z}" "Ž" :string)
 | 
			
		||||
(merge-rule "\IeC {\'y}" "ý" :string)
 | 
			
		||||
(merge-rule "\IeC {\'Y}" "Ý" :string)
 | 
			
		||||
(merge-rule "\IeC {\~"y}" "ÿ" :string)
 | 
			
		||||
(merge-rule "\IeC {\'z}" "ź" :string)
 | 
			
		||||
(merge-rule "\IeC {\'Z}" "Ź" :string)
 | 
			
		||||
(merge-rule "\IeC {\.z}" "ż" :string)
 | 
			
		||||
(merge-rule "\IeC {\.Z}" "Ż" :string)
 | 
			
		||||
;; letters not in Latin1, 2, 3 but available in TeX T1 font encoding
 | 
			
		||||
(merge-rule "\IeC {\~"Y}" "Ÿ" :string)
 | 
			
		||||
(merge-rule "\IeC {\NG }" "Ŋ" :string)
 | 
			
		||||
(merge-rule "\IeC {\ng }" "ŋ" :string)
 | 
			
		||||
(merge-rule "\IeC {\OE }" "Œ" :string)
 | 
			
		||||
(merge-rule "\IeC {\oe }" "œ" :string)
 | 
			
		||||
(merge-rule "\IeC {\IJ }" "IJ" :string)
 | 
			
		||||
(merge-rule "\IeC {\ij }" "ij" :string)
 | 
			
		||||
(merge-rule "\IeC {\j }" "ȷ" :string)
 | 
			
		||||
(merge-rule "\IeC {\SS }" "ẞ" :string)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,607 @@
 | 
			
		|||
;; style file for xindy
 | 
			
		||||
;; filename: LatinRules.xdy
 | 
			
		||||
;;
 | 
			
		||||
;; It is based upon xindy's files lang/general/utf8.xdy and
 | 
			
		||||
;; lang/general/utf8-lang.xdy which implement
 | 
			
		||||
;; "a general sorting order for Western European languages"
 | 
			
		||||
;;
 | 
			
		||||
;; The aim for Sphinx is to be able to index in a Cyrillic document
 | 
			
		||||
;; also terms using the Latin alphabets, inclusive of letters
 | 
			
		||||
;; with diacritics.  To this effect the xindy rules from lang/general
 | 
			
		||||
;; got manually re-coded to avoid collisions with the encoding
 | 
			
		||||
;; done by xindy for sorting words in Cyrillic languages, which was
 | 
			
		||||
;; observed not to use bytes with octal encoding 0o266 or higher.
 | 
			
		||||
;;
 | 
			
		||||
;; So here we use only 0o266 or higher bytes.
 | 
			
		||||
;; (Ŋ, ŋ, IJ, and ij are absent from
 | 
			
		||||
;; lang/general/utf8.xdy and not included here)
 | 
			
		||||
;; Contributed by the Sphinx team, 2018.
 | 
			
		||||
 | 
			
		||||
(define-letter-group "A" :prefixes ("¶"))
 | 
			
		||||
(define-letter-group "B" :after "A" :prefixes ("·"))
 | 
			
		||||
(define-letter-group "C" :after "B" :prefixes ("¸"))
 | 
			
		||||
(define-letter-group "D" :after "C" :prefixes ("¹"))
 | 
			
		||||
(define-letter-group "E" :after "D" :prefixes ("º"))
 | 
			
		||||
(define-letter-group "F" :after "E" :prefixes ("»"))
 | 
			
		||||
(define-letter-group "G" :after "F" :prefixes ("¼"))
 | 
			
		||||
(define-letter-group "H" :after "G" :prefixes ("½"))
 | 
			
		||||
(define-letter-group "I" :after "H" :prefixes ("¾"))
 | 
			
		||||
(define-letter-group "J" :after "I" :prefixes ("¿"))
 | 
			
		||||
(define-letter-group "K" :after "J" :prefixes ("À"))
 | 
			
		||||
(define-letter-group "L" :after "K" :prefixes ("Á"))
 | 
			
		||||
(define-letter-group "M" :after "L" :prefixes ("Â"))
 | 
			
		||||
(define-letter-group "N" :after "M" :prefixes ("Ã"))
 | 
			
		||||
(define-letter-group "O" :after "N" :prefixes ("Ä"))
 | 
			
		||||
(define-letter-group "P" :after "O" :prefixes ("È"))
 | 
			
		||||
(define-letter-group "Q" :after "P" :prefixes ("Ê"))
 | 
			
		||||
(define-letter-group "R" :after "Q" :prefixes ("Ë"))
 | 
			
		||||
(define-letter-group "S" :after "R" :prefixes ("Ð"))
 | 
			
		||||
(define-letter-group "T" :after "S" :prefixes ("Ú"))
 | 
			
		||||
(define-letter-group "U" :after "T" :prefixes ("à"))
 | 
			
		||||
(define-letter-group "V" :after "U" :prefixes ("å"))
 | 
			
		||||
(define-letter-group "W" :after "V" :prefixes ("æ"))
 | 
			
		||||
(define-letter-group "X" :after "W" :prefixes ("ë"))
 | 
			
		||||
(define-letter-group "Y" :after "X" :prefixes ("í"))
 | 
			
		||||
(define-letter-group "Z" :after "Y" :prefixes ("ð"))
 | 
			
		||||
 | 
			
		||||
(define-rule-set "sphinx-xy-alphabetize"
 | 
			
		||||
 | 
			
		||||
  :rules  (("À" "¶" :string)
 | 
			
		||||
           ("Ä‚" "¶" :string)
 | 
			
		||||
           ("â" "¶" :string)
 | 
			
		||||
           ("Ä" "¶" :string)
 | 
			
		||||
           ("à" "¶" :string)
 | 
			
		||||
           ("Ã…" "¶" :string)
 | 
			
		||||
           ("Ã" "¶" :string)
 | 
			
		||||
           ("Ã<>" "¶" :string)
 | 
			
		||||
           ("á" "¶" :string)
 | 
			
		||||
           ("ã" "¶" :string)
 | 
			
		||||
           ("Â" "¶" :string)
 | 
			
		||||
           ("ă" "¶" :string)
 | 
			
		||||
           ("Ã¥" "¶" :string)
 | 
			
		||||
           ("Ä…" "¶" :string)
 | 
			
		||||
           ("ä" "¶" :string)
 | 
			
		||||
           ("Ä„" "¶" :string)
 | 
			
		||||
           ("æ" "¶º" :string)
 | 
			
		||||
           ("Æ" "¶º" :string)
 | 
			
		||||
           ("ć" "¸" :string)
 | 
			
		||||
           ("ĉ" "¸" :string)
 | 
			
		||||
           ("ç" "¸" :string)
 | 
			
		||||
           ("ÄŒ" "¸" :string)
 | 
			
		||||
           ("Ä<>" "¸" :string)
 | 
			
		||||
           ("Ĉ" "¸" :string)
 | 
			
		||||
           ("Ç" "¸" :string)
 | 
			
		||||
           ("Ć" "¸" :string)
 | 
			
		||||
           ("Ä<>" "¹" :string)
 | 
			
		||||
           ("Ä<>" "¹" :string)
 | 
			
		||||
           ("ÄŽ" "¹" :string)
 | 
			
		||||
           ("Ä‘" "¹" :string)
 | 
			
		||||
           ("ê" "º" :string)
 | 
			
		||||
           ("Ę" "º" :string)
 | 
			
		||||
           ("Äš" "º" :string)
 | 
			
		||||
           ("ë" "º" :string)
 | 
			
		||||
           ("Ä›" "º" :string)
 | 
			
		||||
           ("é" "º" :string)
 | 
			
		||||
           ("È" "º" :string)
 | 
			
		||||
           ("Ë" "º" :string)
 | 
			
		||||
           ("É" "º" :string)
 | 
			
		||||
           ("è" "º" :string)
 | 
			
		||||
           ("Ê" "º" :string)
 | 
			
		||||
           ("Ä™" "º" :string)
 | 
			
		||||
           ("Ä<>" "¼" :string)
 | 
			
		||||
           ("ÄŸ" "¼" :string)
 | 
			
		||||
           ("Äž" "¼" :string)
 | 
			
		||||
           ("Äœ" "¼" :string)
 | 
			
		||||
           ("Ä¥" "½" :string)
 | 
			
		||||
           ("Ĥ" "½" :string)
 | 
			
		||||
           ("Ã<>" "¾" :string)
 | 
			
		||||
           ("Ã<>" "¾" :string)
 | 
			
		||||
           ("ï" "¾" :string)
 | 
			
		||||
           ("ÃŽ" "¾" :string)
 | 
			
		||||
           ("î" "¾" :string)
 | 
			
		||||
           ("ı" "¾" :string)
 | 
			
		||||
           ("İ" "¾" :string)
 | 
			
		||||
           ("Ã" "¾" :string)
 | 
			
		||||
           ("ÃŒ" "¾" :string)
 | 
			
		||||
           ("ì" "¾" :string)
 | 
			
		||||
           ("Ä´" "¿" :string)
 | 
			
		||||
           ("ĵ" "¿" :string)
 | 
			
		||||
           ("Å‚" "Á" :string)
 | 
			
		||||
           ("Å<>" "Á" :string)
 | 
			
		||||
           ("ľ" "Á" :string)
 | 
			
		||||
           ("Ľ" "Á" :string)
 | 
			
		||||
           ("Å„" "Ã" :string)
 | 
			
		||||
           ("Ń" "Ã" :string)
 | 
			
		||||
           ("ñ" "Ã" :string)
 | 
			
		||||
           ("ň" "Ã" :string)
 | 
			
		||||
           ("Ñ" "Ã" :string)
 | 
			
		||||
           ("Ň" "Ã" :string)
 | 
			
		||||
           ("Õ" "Ä" :string)
 | 
			
		||||
           ("Å<>" "Ä" :string)
 | 
			
		||||
           ("ó" "Ä" :string)
 | 
			
		||||
           ("ö" "Ä" :string)
 | 
			
		||||
           ("ô" "Ä" :string)
 | 
			
		||||
           ("Å‘" "Ä" :string)
 | 
			
		||||
           ("Ø" "Ä" :string)
 | 
			
		||||
           ("Ö" "Ä" :string)
 | 
			
		||||
           ("õ" "Ä" :string)
 | 
			
		||||
           ("Ô" "Ä" :string)
 | 
			
		||||
           ("ø" "Ä" :string)
 | 
			
		||||
           ("Ó" "Ä" :string)
 | 
			
		||||
           ("Ã’" "Ä" :string)
 | 
			
		||||
           ("ò" "Ä" :string)
 | 
			
		||||
           ("œ" "ĺ" :string)
 | 
			
		||||
           ("Œ" "ĺ" :string)
 | 
			
		||||
           ("Ř" "Ë" :string)
 | 
			
		||||
           ("Å™" "Ë" :string)
 | 
			
		||||
           ("Å”" "Ë" :string)
 | 
			
		||||
           ("Å•" "Ë" :string)
 | 
			
		||||
           ("Å<>" "Ð" :string)
 | 
			
		||||
           ("Åš" "Ð" :string)
 | 
			
		||||
           ("È™" "Ð" :string)
 | 
			
		||||
           ("ÅŸ" "Ð" :string)
 | 
			
		||||
           ("Åœ" "Ð" :string)
 | 
			
		||||
           ("Å›" "Ð" :string)
 | 
			
		||||
           ("Ș" "Ð" :string)
 | 
			
		||||
           ("Å¡" "Ð" :string)
 | 
			
		||||
           ("Åž" "Ð" :string)
 | 
			
		||||
           ("Å " "Ð" :string)
 | 
			
		||||
           ("ß" "ÐÐ" :string)
 | 
			
		||||
           ("Èš" "Ú" :string)
 | 
			
		||||
           ("Ť" "Ú" :string)
 | 
			
		||||
           ("È›" "Ú" :string)
 | 
			
		||||
           ("Å¥" "Ú" :string)
 | 
			
		||||
           ("û" "à" :string)
 | 
			
		||||
           ("Å" "à" :string)
 | 
			
		||||
           ("ů" "à" :string)
 | 
			
		||||
           ("ű" "à" :string)
 | 
			
		||||
           ("ù" "à" :string)
 | 
			
		||||
           ("Ŭ" "à" :string)
 | 
			
		||||
           ("Ù" "à" :string)
 | 
			
		||||
           ("Ű" "à" :string)
 | 
			
		||||
           ("Ü" "à" :string)
 | 
			
		||||
           ("Å®" "à" :string)
 | 
			
		||||
           ("ú" "à" :string)
 | 
			
		||||
           ("Ú" "à" :string)
 | 
			
		||||
           ("Û" "à" :string)
 | 
			
		||||
           ("ü" "à" :string)
 | 
			
		||||
           ("ÿ" "í" :string)
 | 
			
		||||
           ("Ã<>" "í" :string)
 | 
			
		||||
           ("Ÿ" "í" :string)
 | 
			
		||||
           ("ý" "í" :string)
 | 
			
		||||
           ("Å»" "ð" :string)
 | 
			
		||||
           ("Ž" "ð" :string)
 | 
			
		||||
           ("Ź" "ð" :string)
 | 
			
		||||
           ("ž" "ð" :string)
 | 
			
		||||
           ("ż" "ð" :string)
 | 
			
		||||
           ("ź" "ð" :string)
 | 
			
		||||
           ("a" "¶" :string)
 | 
			
		||||
           ("A" "¶" :string)
 | 
			
		||||
           ("b" "·" :string)
 | 
			
		||||
           ("B" "·" :string)
 | 
			
		||||
           ("c" "¸" :string)
 | 
			
		||||
           ("C" "¸" :string)
 | 
			
		||||
           ("d" "¹" :string)
 | 
			
		||||
           ("D" "¹" :string)
 | 
			
		||||
           ("e" "º" :string)
 | 
			
		||||
           ("E" "º" :string)
 | 
			
		||||
           ("F" "»" :string)
 | 
			
		||||
           ("f" "»" :string)
 | 
			
		||||
           ("G" "¼" :string)
 | 
			
		||||
           ("g" "¼" :string)
 | 
			
		||||
           ("H" "½" :string)
 | 
			
		||||
           ("h" "½" :string)
 | 
			
		||||
           ("i" "¾" :string)
 | 
			
		||||
           ("I" "¾" :string)
 | 
			
		||||
           ("J" "¿" :string)
 | 
			
		||||
           ("j" "¿" :string)
 | 
			
		||||
           ("K" "À" :string)
 | 
			
		||||
           ("k" "À" :string)
 | 
			
		||||
           ("L" "Á" :string)
 | 
			
		||||
           ("l" "Á" :string)
 | 
			
		||||
           ("M" "Â" :string)
 | 
			
		||||
           ("m" "Â" :string)
 | 
			
		||||
           ("n" "Ã" :string)
 | 
			
		||||
           ("N" "Ã" :string)
 | 
			
		||||
           ("O" "Ä" :string)
 | 
			
		||||
           ("o" "Ä" :string)
 | 
			
		||||
           ("p" "È" :string)
 | 
			
		||||
           ("P" "È" :string)
 | 
			
		||||
           ("Q" "Ê" :string)
 | 
			
		||||
           ("q" "Ê" :string)
 | 
			
		||||
           ("r" "Ë" :string)
 | 
			
		||||
           ("R" "Ë" :string)
 | 
			
		||||
           ("S" "Ð" :string)
 | 
			
		||||
           ("s" "Ð" :string)
 | 
			
		||||
           ("t" "Ú" :string)
 | 
			
		||||
           ("T" "Ú" :string)
 | 
			
		||||
           ("u" "à" :string)
 | 
			
		||||
           ("U" "à" :string)
 | 
			
		||||
           ("v" "å" :string)
 | 
			
		||||
           ("V" "å" :string)
 | 
			
		||||
           ("W" "æ" :string)
 | 
			
		||||
           ("w" "æ" :string)
 | 
			
		||||
           ("x" "ë" :string)
 | 
			
		||||
           ("X" "ë" :string)
 | 
			
		||||
           ("Y" "í" :string)
 | 
			
		||||
           ("y" "í" :string)
 | 
			
		||||
           ("z" "ð" :string)
 | 
			
		||||
           ("Z" "ð" :string)
 | 
			
		||||
           ))
 | 
			
		||||
 | 
			
		||||
(define-rule-set "sphinx-xy-resolve-diacritics"
 | 
			
		||||
 | 
			
		||||
  :rules  (("Ĥ" "£" :string)
 | 
			
		||||
           ("ó" "£" :string)
 | 
			
		||||
           ("ľ" "£" :string)
 | 
			
		||||
           ("Ř" "£" :string)
 | 
			
		||||
           ("Ä<>" "£" :string)
 | 
			
		||||
           ("Ä<>" "£" :string)
 | 
			
		||||
           ("Äš" "£" :string)
 | 
			
		||||
           ("Ä¥" "£" :string)
 | 
			
		||||
           ("ÄŒ" "£" :string)
 | 
			
		||||
           ("Ä´" "£" :string)
 | 
			
		||||
           ("Ä›" "£" :string)
 | 
			
		||||
           ("ž" "£" :string)
 | 
			
		||||
           ("ÄŽ" "£" :string)
 | 
			
		||||
           ("Å™" "£" :string)
 | 
			
		||||
           ("Ž" "£" :string)
 | 
			
		||||
           ("ı" "£" :string)
 | 
			
		||||
           ("Ť" "£" :string)
 | 
			
		||||
           ("á" "£" :string)
 | 
			
		||||
           ("Ä<>" "£" :string)
 | 
			
		||||
           ("Ã<>" "£" :string)
 | 
			
		||||
           ("ň" "£" :string)
 | 
			
		||||
           ("Å " "£" :string)
 | 
			
		||||
           ("Ň" "£" :string)
 | 
			
		||||
           ("ĵ" "£" :string)
 | 
			
		||||
           ("Å¥" "£" :string)
 | 
			
		||||
           ("Ó" "£" :string)
 | 
			
		||||
           ("ý" "£" :string)
 | 
			
		||||
           ("Äœ" "£" :string)
 | 
			
		||||
           ("Ú" "£" :string)
 | 
			
		||||
           ("Ľ" "£" :string)
 | 
			
		||||
           ("Å¡" "£" :string)
 | 
			
		||||
           ("Ã<>" "£" :string)
 | 
			
		||||
           ("ú" "£" :string)
 | 
			
		||||
           ("Åš" "¤" :string)
 | 
			
		||||
           ("ć" "¤" :string)
 | 
			
		||||
           ("Å<>" "¤" :string)
 | 
			
		||||
           ("Å‚" "¤" :string)
 | 
			
		||||
           ("Å„" "¤" :string)
 | 
			
		||||
           ("À" "¤" :string)
 | 
			
		||||
           ("Ź" "¤" :string)
 | 
			
		||||
           ("à" "¤" :string)
 | 
			
		||||
           ("Ń" "¤" :string)
 | 
			
		||||
           ("Ä<>" "¤" :string)
 | 
			
		||||
           ("ÿ" "¤" :string)
 | 
			
		||||
           ("Å›" "¤" :string)
 | 
			
		||||
           ("Äž" "¤" :string)
 | 
			
		||||
           ("ÄŸ" "¤" :string)
 | 
			
		||||
           ("Ù" "¤" :string)
 | 
			
		||||
           ("İ" "¤" :string)
 | 
			
		||||
           ("Ä‘" "¤" :string)
 | 
			
		||||
           ("ù" "¤" :string)
 | 
			
		||||
           ("Èš" "¤" :string)
 | 
			
		||||
           ("é" "¤" :string)
 | 
			
		||||
           ("Å•" "¤" :string)
 | 
			
		||||
           ("Ć" "¤" :string)
 | 
			
		||||
           ("È›" "¤" :string)
 | 
			
		||||
           ("ò" "¤" :string)
 | 
			
		||||
           ("ź" "¤" :string)
 | 
			
		||||
           ("Ã’" "¤" :string)
 | 
			
		||||
           ("Ÿ" "¤" :string)
 | 
			
		||||
           ("Å”" "¤" :string)
 | 
			
		||||
           ("É" "¤" :string)
 | 
			
		||||
           ("ĉ" "¥" :string)
 | 
			
		||||
           ("ô" "¥" :string)
 | 
			
		||||
           ("Ã<>" "¥" :string)
 | 
			
		||||
           ("Å<>" "¥" :string)
 | 
			
		||||
           ("Å»" "¥" :string)
 | 
			
		||||
           ("Ä‚" "¥" :string)
 | 
			
		||||
           ("Åœ" "¥" :string)
 | 
			
		||||
           ("ñ" "¥" :string)
 | 
			
		||||
           ("Å" "¥" :string)
 | 
			
		||||
           ("Ã" "¥" :string)
 | 
			
		||||
           ("È" "¥" :string)
 | 
			
		||||
           ("Ô" "¥" :string)
 | 
			
		||||
           ("Ŭ" "¥" :string)
 | 
			
		||||
           ("ż" "¥" :string)
 | 
			
		||||
           ("Ñ" "¥" :string)
 | 
			
		||||
           ("è" "¥" :string)
 | 
			
		||||
           ("Ĉ" "¥" :string)
 | 
			
		||||
           ("ă" "¥" :string)
 | 
			
		||||
           ("â" "¦" :string)
 | 
			
		||||
           ("û" "¦" :string)
 | 
			
		||||
           ("ê" "¦" :string)
 | 
			
		||||
           ("Õ" "¦" :string)
 | 
			
		||||
           ("õ" "¦" :string)
 | 
			
		||||
           ("È™" "¦" :string)
 | 
			
		||||
           ("ç" "¦" :string)
 | 
			
		||||
           ("Â" "¦" :string)
 | 
			
		||||
           ("Ê" "¦" :string)
 | 
			
		||||
           ("Û" "¦" :string)
 | 
			
		||||
           ("Ç" "¦" :string)
 | 
			
		||||
           ("ì" "¦" :string)
 | 
			
		||||
           ("ÃŒ" "¦" :string)
 | 
			
		||||
           ("Ș" "¦" :string)
 | 
			
		||||
           ("ö" "§" :string)
 | 
			
		||||
           ("Ö" "§" :string)
 | 
			
		||||
           ("ÅŸ" "§" :string)
 | 
			
		||||
           ("ů" "§" :string)
 | 
			
		||||
           ("ë" "§" :string)
 | 
			
		||||
           ("ã" "§" :string)
 | 
			
		||||
           ("î" "§" :string)
 | 
			
		||||
           ("ÃŽ" "§" :string)
 | 
			
		||||
           ("Ã" "§" :string)
 | 
			
		||||
           ("Åž" "§" :string)
 | 
			
		||||
           ("Å®" "§" :string)
 | 
			
		||||
           ("Ë" "§" :string)
 | 
			
		||||
           ("ï" "¨" :string)
 | 
			
		||||
           ("Å<>" "¨" :string)
 | 
			
		||||
           ("Ã<>" "¨" :string)
 | 
			
		||||
           ("Ę" "¨" :string)
 | 
			
		||||
           ("Å‘" "¨" :string)
 | 
			
		||||
           ("Ü" "¨" :string)
 | 
			
		||||
           ("Ã…" "¨" :string)
 | 
			
		||||
           ("ü" "¨" :string)
 | 
			
		||||
           ("Ä™" "¨" :string)
 | 
			
		||||
           ("Ã¥" "¨" :string)
 | 
			
		||||
           ("Ä" "©" :string)
 | 
			
		||||
           ("ű" "©" :string)
 | 
			
		||||
           ("Ø" "©" :string)
 | 
			
		||||
           ("ø" "©" :string)
 | 
			
		||||
           ("Ű" "©" :string)
 | 
			
		||||
           ("ä" "©" :string)
 | 
			
		||||
           ("Ä„" "ª" :string)
 | 
			
		||||
           ("Ä…" "ª" :string)
 | 
			
		||||
           ("Å“" "ÿ" :string)
 | 
			
		||||
           ("ß" "ÿ" :string)
 | 
			
		||||
           ("Æ" "ÿ" :string)
 | 
			
		||||
           ("Å’" "ÿ" :string)
 | 
			
		||||
           ("æ" "ÿ" :string)
 | 
			
		||||
           ("e" "¢" :string)
 | 
			
		||||
           ("t" "¢" :string)
 | 
			
		||||
           ("L" "¢" :string)
 | 
			
		||||
           ("Y" "¢" :string)
 | 
			
		||||
           ("J" "¢" :string)
 | 
			
		||||
           ("a" "¢" :string)
 | 
			
		||||
           ("p" "¢" :string)
 | 
			
		||||
           ("u" "¢" :string)
 | 
			
		||||
           ("j" "¢" :string)
 | 
			
		||||
           ("b" "¢" :string)
 | 
			
		||||
           ("G" "¢" :string)
 | 
			
		||||
           ("U" "¢" :string)
 | 
			
		||||
           ("F" "¢" :string)
 | 
			
		||||
           ("H" "¢" :string)
 | 
			
		||||
           ("i" "¢" :string)
 | 
			
		||||
           ("z" "¢" :string)
 | 
			
		||||
           ("c" "¢" :string)
 | 
			
		||||
           ("l" "¢" :string)
 | 
			
		||||
           ("A" "¢" :string)
 | 
			
		||||
           ("Q" "¢" :string)
 | 
			
		||||
           ("w" "¢" :string)
 | 
			
		||||
           ("D" "¢" :string)
 | 
			
		||||
           ("R" "¢" :string)
 | 
			
		||||
           ("d" "¢" :string)
 | 
			
		||||
           ("s" "¢" :string)
 | 
			
		||||
           ("r" "¢" :string)
 | 
			
		||||
           ("k" "¢" :string)
 | 
			
		||||
           ("v" "¢" :string)
 | 
			
		||||
           ("m" "¢" :string)
 | 
			
		||||
           ("P" "¢" :string)
 | 
			
		||||
           ("y" "¢" :string)
 | 
			
		||||
           ("K" "¢" :string)
 | 
			
		||||
           ("q" "¢" :string)
 | 
			
		||||
           ("S" "¢" :string)
 | 
			
		||||
           ("I" "¢" :string)
 | 
			
		||||
           ("C" "¢" :string)
 | 
			
		||||
           ("M" "¢" :string)
 | 
			
		||||
           ("Z" "¢" :string)
 | 
			
		||||
           ("T" "¢" :string)
 | 
			
		||||
           ("W" "¢" :string)
 | 
			
		||||
           ("B" "¢" :string)
 | 
			
		||||
           ("h" "¢" :string)
 | 
			
		||||
           ("x" "¢" :string)
 | 
			
		||||
           ("X" "¢" :string)
 | 
			
		||||
           ("f" "¢" :string)
 | 
			
		||||
           ("E" "¢" :string)
 | 
			
		||||
           ("V" "¢" :string)
 | 
			
		||||
           ("N" "¢" :string)
 | 
			
		||||
           ("O" "¢" :string)
 | 
			
		||||
           ("o" "¢" :string)
 | 
			
		||||
           ("g" "¢" :string)
 | 
			
		||||
           ("n" "¢" :string)
 | 
			
		||||
           ))
 | 
			
		||||
 | 
			
		||||
(define-rule-set "sphinx-xy-resolve-case"
 | 
			
		||||
 | 
			
		||||
  :rules  (("Ú" "8" :string)
 | 
			
		||||
           ("Ÿ" "8" :string)
 | 
			
		||||
           ("Ç" "8" :string)
 | 
			
		||||
           ("Ĉ" "8" :string)
 | 
			
		||||
           ("Å”" "8" :string)
 | 
			
		||||
           ("Ľ" "8" :string)
 | 
			
		||||
           ("Å®" "8" :string)
 | 
			
		||||
           ("Ã<>" "8" :string)
 | 
			
		||||
           ("É" "8" :string)
 | 
			
		||||
           ("Ë" "8" :string)
 | 
			
		||||
           ("Ș" "8" :string)
 | 
			
		||||
           ("Ì" "8" :string)
 | 
			
		||||
           ("Ê" "8" :string)
 | 
			
		||||
           ("Ň" "8" :string)
 | 
			
		||||
           ("Ä„" "8" :string)
 | 
			
		||||
           ("Å " "8" :string)
 | 
			
		||||
           ("Û" "8" :string)
 | 
			
		||||
           ("Åž" "8" :string)
 | 
			
		||||
           ("Ć" "8" :string)
 | 
			
		||||
           ("Ã’" "8" :string)
 | 
			
		||||
           ("Ĝ" "8" :string)
 | 
			
		||||
           ("Ñ" "8" :string)
 | 
			
		||||
           ("Ó" "8" :string)
 | 
			
		||||
           ("ÃŽ" "8" :string)
 | 
			
		||||
           ("Ã<>" "8" :string)
 | 
			
		||||
           ("Ã" "8" :string)
 | 
			
		||||
           ("Èš" "8" :string)
 | 
			
		||||
           ("Ã…" "8" :string)
 | 
			
		||||
           ("Äž" "8" :string)
 | 
			
		||||
           ("Ü" "8" :string)
 | 
			
		||||
           ("È" "8" :string)
 | 
			
		||||
           ("Ô" "8" :string)
 | 
			
		||||
           ("İ" "8" :string)
 | 
			
		||||
           ("Ű" "8" :string)
 | 
			
		||||
           ("Ù" "8" :string)
 | 
			
		||||
           ("Ŭ" "8" :string)
 | 
			
		||||
           ("Â" "8" :string)
 | 
			
		||||
           ("Ť" "8" :string)
 | 
			
		||||
           ("Ń" "8" :string)
 | 
			
		||||
           ("ÄŽ" "8" :string)
 | 
			
		||||
           ("Ź" "8" :string)
 | 
			
		||||
           ("Ž" "8" :string)
 | 
			
		||||
           ("Ä<>" "8" :string)
 | 
			
		||||
           ("Ŝ" "8" :string)
 | 
			
		||||
           ("Č" "8" :string)
 | 
			
		||||
           ("Ä´" "8" :string)
 | 
			
		||||
           ("Ö" "8" :string)
 | 
			
		||||
           ("Ø" "8" :string)
 | 
			
		||||
           ("Å»" "8" :string)
 | 
			
		||||
           ("Å<>" "8" :string)
 | 
			
		||||
           ("Ä‚" "8" :string)
 | 
			
		||||
           ("Äš" "8" :string)
 | 
			
		||||
           ("Å<>" "8" :string)
 | 
			
		||||
           ("Õ" "8" :string)
 | 
			
		||||
           ("Ę" "8" :string)
 | 
			
		||||
           ("Ã<>" "8" :string)
 | 
			
		||||
           ("À" "8" :string)
 | 
			
		||||
           ("Ĥ" "8" :string)
 | 
			
		||||
           ("Ä" "8" :string)
 | 
			
		||||
           ("Åš" "8" :string)
 | 
			
		||||
           ("Ř" "8" :string)
 | 
			
		||||
           ("Ã<>" "8" :string)
 | 
			
		||||
           ("Å’" "89" :string)
 | 
			
		||||
           ("Æ" "89" :string)
 | 
			
		||||
           ("ì" "9" :string)
 | 
			
		||||
           ("è" "9" :string)
 | 
			
		||||
           ("Ä…" "9" :string)
 | 
			
		||||
           ("Å¡" "9" :string)
 | 
			
		||||
           ("ú" "9" :string)
 | 
			
		||||
           ("Ã¥" "9" :string)
 | 
			
		||||
           ("ă" "9" :string)
 | 
			
		||||
           ("Ä™" "9" :string)
 | 
			
		||||
           ("ü" "9" :string)
 | 
			
		||||
           ("ź" "9" :string)
 | 
			
		||||
           ("ò" "9" :string)
 | 
			
		||||
           ("Å¥" "9" :string)
 | 
			
		||||
           ("È›" "9" :string)
 | 
			
		||||
           ("ĵ" "9" :string)
 | 
			
		||||
           ("Å•" "9" :string)
 | 
			
		||||
           ("ż" "9" :string)
 | 
			
		||||
           ("ä" "9" :string)
 | 
			
		||||
           ("ý" "9" :string)
 | 
			
		||||
           ("ù" "9" :string)
 | 
			
		||||
           ("á" "9" :string)
 | 
			
		||||
           ("é" "9" :string)
 | 
			
		||||
           ("Ä<>" "9" :string)
 | 
			
		||||
           ("ň" "9" :string)
 | 
			
		||||
           ("Å›" "9" :string)
 | 
			
		||||
           ("ø" "9" :string)
 | 
			
		||||
           ("Ã" "9" :string)
 | 
			
		||||
           ("Ä‘" "9" :string)
 | 
			
		||||
           ("ı" "9" :string)
 | 
			
		||||
           ("ÄŸ" "9" :string)
 | 
			
		||||
           ("î" "9" :string)
 | 
			
		||||
           ("ã" "9" :string)
 | 
			
		||||
           ("à" "9" :string)
 | 
			
		||||
           ("Å™" "9" :string)
 | 
			
		||||
           ("Å‘" "9" :string)
 | 
			
		||||
           ("ů" "9" :string)
 | 
			
		||||
           ("È™" "9" :string)
 | 
			
		||||
           ("ÿ" "9" :string)
 | 
			
		||||
           ("ë" "9" :string)
 | 
			
		||||
           ("Å" "9" :string)
 | 
			
		||||
           ("ç" "9" :string)
 | 
			
		||||
           ("ű" "9" :string)
 | 
			
		||||
           ("ñ" "9" :string)
 | 
			
		||||
           ("õ" "9" :string)
 | 
			
		||||
           ("Ä›" "9" :string)
 | 
			
		||||
           ("ÅŸ" "9" :string)
 | 
			
		||||
           ("ž" "9" :string)
 | 
			
		||||
           ("Ä<>" "9" :string)
 | 
			
		||||
           ("Å<>" "9" :string)
 | 
			
		||||
           ("Å„" "9" :string)
 | 
			
		||||
           ("û" "9" :string)
 | 
			
		||||
           ("Å‚" "9" :string)
 | 
			
		||||
           ("Ä<>" "9" :string)
 | 
			
		||||
           ("Ä¥" "9" :string)
 | 
			
		||||
           ("ê" "9" :string)
 | 
			
		||||
           ("ô" "9" :string)
 | 
			
		||||
           ("ĉ" "9" :string)
 | 
			
		||||
           ("â" "9" :string)
 | 
			
		||||
           ("ć" "9" :string)
 | 
			
		||||
           ("ï" "9" :string)
 | 
			
		||||
           ("ö" "9" :string)
 | 
			
		||||
           ("ľ" "9" :string)
 | 
			
		||||
           ("ó" "9" :string)
 | 
			
		||||
           ("æ" "99" :string)
 | 
			
		||||
           ("ß" "99" :string)
 | 
			
		||||
           ("Å“" "99" :string)
 | 
			
		||||
           ("N" "8" :string)
 | 
			
		||||
           ("V" "8" :string)
 | 
			
		||||
           ("O" "8" :string)
 | 
			
		||||
           ("X" "8" :string)
 | 
			
		||||
           ("E" "8" :string)
 | 
			
		||||
           ("P" "8" :string)
 | 
			
		||||
           ("K" "8" :string)
 | 
			
		||||
           ("T" "8" :string)
 | 
			
		||||
           ("Z" "8" :string)
 | 
			
		||||
           ("M" "8" :string)
 | 
			
		||||
           ("C" "8" :string)
 | 
			
		||||
           ("I" "8" :string)
 | 
			
		||||
           ("S" "8" :string)
 | 
			
		||||
           ("B" "8" :string)
 | 
			
		||||
           ("W" "8" :string)
 | 
			
		||||
           ("D" "8" :string)
 | 
			
		||||
           ("R" "8" :string)
 | 
			
		||||
           ("H" "8" :string)
 | 
			
		||||
           ("F" "8" :string)
 | 
			
		||||
           ("Q" "8" :string)
 | 
			
		||||
           ("A" "8" :string)
 | 
			
		||||
           ("G" "8" :string)
 | 
			
		||||
           ("U" "8" :string)
 | 
			
		||||
           ("J" "8" :string)
 | 
			
		||||
           ("Y" "8" :string)
 | 
			
		||||
           ("L" "8" :string)
 | 
			
		||||
           ("o" "9" :string)
 | 
			
		||||
           ("n" "9" :string)
 | 
			
		||||
           ("g" "9" :string)
 | 
			
		||||
           ("x" "9" :string)
 | 
			
		||||
           ("f" "9" :string)
 | 
			
		||||
           ("y" "9" :string)
 | 
			
		||||
           ("q" "9" :string)
 | 
			
		||||
           ("h" "9" :string)
 | 
			
		||||
           ("w" "9" :string)
 | 
			
		||||
           ("s" "9" :string)
 | 
			
		||||
           ("d" "9" :string)
 | 
			
		||||
           ("v" "9" :string)
 | 
			
		||||
           ("k" "9" :string)
 | 
			
		||||
           ("r" "9" :string)
 | 
			
		||||
           ("m" "9" :string)
 | 
			
		||||
           ("z" "9" :string)
 | 
			
		||||
           ("c" "9" :string)
 | 
			
		||||
           ("i" "9" :string)
 | 
			
		||||
           ("l" "9" :string)
 | 
			
		||||
           ("b" "9" :string)
 | 
			
		||||
           ("j" "9" :string)
 | 
			
		||||
           ("a" "9" :string)
 | 
			
		||||
           ("p" "9" :string)
 | 
			
		||||
           ("u" "9" :string)
 | 
			
		||||
           ("t" "9" :string)
 | 
			
		||||
           ("e" "9" :string)
 | 
			
		||||
           ))
 | 
			
		||||
 | 
			
		||||
(use-rule-set :run 0
 | 
			
		||||
	      :rule-set ("sphinx-xy-alphabetize"))
 | 
			
		||||
(use-rule-set :run 1
 | 
			
		||||
	      :rule-set ("sphinx-xy-resolve-diacritics"))
 | 
			
		||||
(use-rule-set :run 2
 | 
			
		||||
	      :rule-set ("sphinx-xy-resolve-case"))
 | 
			
		||||
| 
		 After Width: | Height: | Size: 7.7 KiB  | 
| 
						 | 
				
			
			@ -0,0 +1,81 @@
 | 
			
		|||
# Makefile for Sphinx LaTeX output
 | 
			
		||||
 | 
			
		||||
ALLDOCS = $(basename $(wildcard *.tex))
 | 
			
		||||
ALLPDF = $(addsuffix .pdf,$(ALLDOCS))
 | 
			
		||||
ALLDVI = $(addsuffix .dvi,$(ALLDOCS))
 | 
			
		||||
ALLPS  = $(addsuffix .ps,$(ALLDOCS))
 | 
			
		||||
 | 
			
		||||
# Prefix for archive names
 | 
			
		||||
ARCHIVEPREFIX =
 | 
			
		||||
# Additional LaTeX options
 | 
			
		||||
LATEXOPTS =
 | 
			
		||||
# format: pdf or dvi
 | 
			
		||||
FMT = pdf
 | 
			
		||||
 | 
			
		||||
LATEX = latex
 | 
			
		||||
PDFLATEX = pdflatex
 | 
			
		||||
MAKEINDEX = makeindex
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
all: $(ALLPDF)
 | 
			
		||||
all-pdf: $(ALLPDF)
 | 
			
		||||
all-dvi: $(ALLDVI)
 | 
			
		||||
all-ps: $(ALLPS)
 | 
			
		||||
 | 
			
		||||
all-pdf-ja:
 | 
			
		||||
	for f in *.pdf *.png *.gif *.jpg *.jpeg; do extractbb $$f; done
 | 
			
		||||
	for f in *.tex; do pdflatex -kanji=utf8 $(LATEXOPTS) $$f; done
 | 
			
		||||
	for f in *.tex; do pdflatex -kanji=utf8 $(LATEXOPTS) $$f; done
 | 
			
		||||
	for f in *.tex; do pdflatex -kanji=utf8 $(LATEXOPTS) $$f; done
 | 
			
		||||
	-for f in *.idx; do mendex -U -f -d "`basename $$f .idx`.dic" -s python.ist $$f; done
 | 
			
		||||
	for f in *.tex; do pdflatex -kanji=utf8 $(LATEXOPTS) $$f; done
 | 
			
		||||
	for f in *.tex; do pdflatex -kanji=utf8 $(LATEXOPTS) $$f; done
 | 
			
		||||
	for f in *.dvi; do dvipdfmx $$f; done
 | 
			
		||||
 | 
			
		||||
zip: all-$(FMT)
 | 
			
		||||
	mkdir $(ARCHIVEPREFIX)docs-$(FMT)
 | 
			
		||||
	cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT)
 | 
			
		||||
	zip -q -r -9 $(ARCHIVEPREFIX)docs-$(FMT).zip $(ARCHIVEPREFIX)docs-$(FMT)
 | 
			
		||||
	rm -r $(ARCHIVEPREFIX)docs-$(FMT)
 | 
			
		||||
 | 
			
		||||
tar: all-$(FMT)
 | 
			
		||||
	mkdir $(ARCHIVEPREFIX)docs-$(FMT)
 | 
			
		||||
	cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT)
 | 
			
		||||
	tar cf $(ARCHIVEPREFIX)docs-$(FMT).tar $(ARCHIVEPREFIX)docs-$(FMT)
 | 
			
		||||
	rm -r $(ARCHIVEPREFIX)docs-$(FMT)
 | 
			
		||||
 | 
			
		||||
gz: tar
 | 
			
		||||
	gzip -9 < $(ARCHIVEPREFIX)docs-$(FMT).tar > $(ARCHIVEPREFIX)docs-$(FMT).tar.gz
 | 
			
		||||
 | 
			
		||||
bz2: tar
 | 
			
		||||
	bzip2 -9 -k $(ARCHIVEPREFIX)docs-$(FMT).tar
 | 
			
		||||
 | 
			
		||||
xz: tar
 | 
			
		||||
	xz -9 -k $(ARCHIVEPREFIX)docs-$(FMT).tar
 | 
			
		||||
 | 
			
		||||
# The number of LaTeX runs is quite conservative, but I don't expect it
 | 
			
		||||
# to get run often, so the little extra time won't hurt.
 | 
			
		||||
%.dvi: %.tex
 | 
			
		||||
	$(LATEX) $(LATEXOPTS) '$<'
 | 
			
		||||
	$(LATEX) $(LATEXOPTS) '$<'
 | 
			
		||||
	$(LATEX) $(LATEXOPTS) '$<'
 | 
			
		||||
	-$(MAKEINDEX) -s python.ist '$(basename $<).idx'
 | 
			
		||||
	$(LATEX) $(LATEXOPTS) '$<'
 | 
			
		||||
	$(LATEX) $(LATEXOPTS) '$<'
 | 
			
		||||
 | 
			
		||||
%.pdf: %.tex
 | 
			
		||||
	$(PDFLATEX) $(LATEXOPTS) '$<'
 | 
			
		||||
	$(PDFLATEX) $(LATEXOPTS) '$<'
 | 
			
		||||
	$(PDFLATEX) $(LATEXOPTS) '$<'
 | 
			
		||||
	-$(MAKEINDEX) -s python.ist '$(basename $<).idx'
 | 
			
		||||
	$(PDFLATEX) $(LATEXOPTS) '$<'
 | 
			
		||||
	$(PDFLATEX) $(LATEXOPTS) '$<'
 | 
			
		||||
 | 
			
		||||
%.ps: %.dvi
 | 
			
		||||
	dvips '$<'
 | 
			
		||||
 | 
			
		||||
clean:
 | 
			
		||||
	rm -f *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla *.ps *.tar *.tar.gz *.tar.bz2 *.tar.xz $(ALLPDF) $(ALLDVI)
 | 
			
		||||
 | 
			
		||||
.PHONY: all all-pdf all-dvi all-ps clean zip tar gz bz2 xz
 | 
			
		||||
.PHONY: all-pdf-ja
 | 
			
		||||
| 
		 After Width: | Height: | Size: 7.1 KiB  | 
| 
		 After Width: | Height: | Size: 53 KiB  | 
| 
		 After Width: | Height: | Size: 15 KiB  | 
| 
		 After Width: | Height: | Size: 4.9 KiB  | 
| 
		 After Width: | Height: | Size: 212 KiB  | 
| 
		 After Width: | Height: | Size: 68 KiB  | 
| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
$latex = 'pdflatex ' . $ENV{'LATEXOPTS'} . ' -kanji=utf8 %O %S';
 | 
			
		||||
$dvipdf = 'dvipdfmx %O -o %D %S';
 | 
			
		||||
$makeindex = 'internal mendex %S %B %D';
 | 
			
		||||
sub mendex {
 | 
			
		||||
  my ($source, $basename, $destination) = @_;
 | 
			
		||||
  my $dictfile = $basename . ".dic";
 | 
			
		||||
  unlink($destination);
 | 
			
		||||
  system("mendex", "-U", "-f", "-d", $dictfile, "-s", "python.ist", $source);
 | 
			
		||||
  if ($? > 0) {
 | 
			
		||||
    print("mendex exited with error code $? (ignored)\n");
 | 
			
		||||
  }
 | 
			
		||||
  if (!-e $destination) {
 | 
			
		||||
    # create an empty .ind file if nothing
 | 
			
		||||
    open(FH, ">" . $destination);
 | 
			
		||||
    close(FH);
 | 
			
		||||
  }
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
add_cus_dep( "glo", "gls", 0, "makeglo" );
 | 
			
		||||
sub makeglo {
 | 
			
		||||
 return system( "mendex -J -f -s gglo.ist -o '$_[0].gls' '$_[0].glo'" );
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,9 @@
 | 
			
		|||
$latex = 'latex ' . $ENV{'LATEXOPTS'} . ' %O %S';
 | 
			
		||||
$pdflatex = 'pdflatex ' . $ENV{'LATEXOPTS'} . ' %O %S';
 | 
			
		||||
$lualatex = 'lualatex ' . $ENV{'LATEXOPTS'} . ' %O %S';
 | 
			
		||||
$xelatex = 'xelatex --no-pdf ' . $ENV{'LATEXOPTS'} . ' %O %S';
 | 
			
		||||
$makeindex = 'makeindex -s python.ist %O -o %D %S';
 | 
			
		||||
add_cus_dep( "glo", "gls", 0, "makeglo" );
 | 
			
		||||
sub makeglo {
 | 
			
		||||
 return system( "makeindex -s gglo.ist -o '$_[0].gls' '$_[0].glo'" );
 | 
			
		||||
}
 | 
			
		||||
| 
		 After Width: | Height: | Size: 2.9 KiB  | 
| 
						 | 
				
			
			@ -0,0 +1,295 @@
 | 
			
		|||
\relax 
 | 
			
		||||
\providecommand\hyper@newdestlabel[2]{}
 | 
			
		||||
\providecommand{\transparent@use}[1]{}
 | 
			
		||||
\providecommand\babel@aux[2]{}
 | 
			
		||||
\@nameuse{bbl@beforestart}
 | 
			
		||||
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
 | 
			
		||||
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
 | 
			
		||||
\global\let\oldcontentsline\contentsline
 | 
			
		||||
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
 | 
			
		||||
\global\let\oldnewlabel\newlabel
 | 
			
		||||
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
 | 
			
		||||
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
 | 
			
		||||
\AtEndDocument{\ifx\hyper@anchor\@undefined
 | 
			
		||||
\let\contentsline\oldcontentsline
 | 
			
		||||
\let\newlabel\oldnewlabel
 | 
			
		||||
\fi}
 | 
			
		||||
\fi}
 | 
			
		||||
\global\let\hyper@last\relax 
 | 
			
		||||
\gdef\HyperFirstAtBeginDocument#1{#1}
 | 
			
		||||
\providecommand\HyField@AuxAddToFields[1]{}
 | 
			
		||||
\providecommand\HyField@AuxAddToCoFields[2]{}
 | 
			
		||||
\babel@aux{english}{}
 | 
			
		||||
\@writefile{toc}{\contentsline {chapter}{Table of contents}{i}{chapter*.1}\protected@file@percent }
 | 
			
		||||
\newlabel{index::doc}{{}{1}{\contentsname }{section*.2}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {chapter}{\numberline {1}01 \sphinxhyphen {} Erste Schritte mit C}{1}{chapter.1}\protected@file@percent }
 | 
			
		||||
\@writefile{lof}{\addvspace {10\p@ }}
 | 
			
		||||
\@writefile{lot}{\addvspace {10\p@ }}
 | 
			
		||||
\newlabel{P01_Erste_Schritte_mit_C/README:erste-schritte-mit-c}{{1}{1}{01 \sphinxhyphen {} Erste Schritte mit C}{chapter.1}{}}
 | 
			
		||||
\newlabel{P01_Erste_Schritte_mit_C/README::doc}{{1}{1}{01 \sphinxhyphen {} Erste Schritte mit C}{chapter.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {1.1}1. Übersicht}{1}{section.1.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P01_Erste_Schritte_mit_C/README:ubersicht}{{1.1}{1}{1. Übersicht}{section.1.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {1.2}2. Lernziele}{1}{section.1.2}\protected@file@percent }
 | 
			
		||||
\newlabel{P01_Erste_Schritte_mit_C/README:lernziele}{{1.2}{1}{2. Lernziele}{section.1.2}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {1.3}3. Aufgabe 1: virtuelle Maschine}{1}{section.1.3}\protected@file@percent }
 | 
			
		||||
\newlabel{P01_Erste_Schritte_mit_C/README:aufgabe-1-virtuelle-maschine}{{1.3}{1}{3. Aufgabe 1: virtuelle Maschine}{section.1.3}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {1.4}4. Aufgabe 2: Hello World}{2}{section.1.4}\protected@file@percent }
 | 
			
		||||
\newlabel{P01_Erste_Schritte_mit_C/README:aufgabe-2-hello-world}{{1.4}{2}{4. Aufgabe 2: Hello World}{section.1.4}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {1.5}5. Aufgabe 3: Tabellenausgabe}{2}{section.1.5}\protected@file@percent }
 | 
			
		||||
\newlabel{P01_Erste_Schritte_mit_C/README:aufgabe-3-tabellenausgabe}{{1.5}{2}{5. Aufgabe 3: Tabellenausgabe}{section.1.5}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {1.6}6. Aufgabe 4: Zeichen und Wörter zählen}{3}{section.1.6}\protected@file@percent }
 | 
			
		||||
\newlabel{P01_Erste_Schritte_mit_C/README:aufgabe-4-zeichen-und-worter-zahlen}{{1.6}{3}{6. Aufgabe 4: Zeichen und Wörter zählen}{section.1.6}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {1.7}7. Bewertung}{3}{section.1.7}\protected@file@percent }
 | 
			
		||||
\newlabel{P01_Erste_Schritte_mit_C/README:bewertung}{{1.7}{3}{7. Bewertung}{section.1.7}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {chapter}{\numberline {2}02: Funktionen, Datentyp “enum”}{4}{chapter.2}\protected@file@percent }
 | 
			
		||||
\@writefile{lof}{\addvspace {10\p@ }}
 | 
			
		||||
\@writefile{lot}{\addvspace {10\p@ }}
 | 
			
		||||
\newlabel{P02_Funktionen_Datentyp_enum/README:funktionen-datentyp-enum}{{2}{4}{02: Funktionen, Datentyp “enum”}{chapter.2}{}}
 | 
			
		||||
\newlabel{P02_Funktionen_Datentyp_enum/README::doc}{{2}{4}{02: Funktionen, Datentyp “enum”}{chapter.2}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {2.1}1. Übersicht}{4}{section.2.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P02_Funktionen_Datentyp_enum/README:ubersicht}{{2.1}{4}{1. Übersicht}{section.2.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {2.2}2. Lernziele}{5}{section.2.2}\protected@file@percent }
 | 
			
		||||
\newlabel{P02_Funktionen_Datentyp_enum/README:lernziele}{{2.2}{5}{2. Lernziele}{section.2.2}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {2.3}3. Aufgaben}{5}{section.2.3}\protected@file@percent }
 | 
			
		||||
\newlabel{P02_Funktionen_Datentyp_enum/README:aufgaben}{{2.3}{5}{3. Aufgaben}{section.2.3}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3.1}3.1 Aufgabe 1 Tage pro Monat}{6}{subsection.2.3.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P02_Funktionen_Datentyp_enum/README:aufgabe-1-tage-pro-monat}{{2.3.1}{6}{3.1 Aufgabe 1 Tage pro Monat}{subsection.2.3.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3.2}3.2 Aufgabe 2 Bestimmen des Wochentags}{7}{subsection.2.3.2}\protected@file@percent }
 | 
			
		||||
\newlabel{P02_Funktionen_Datentyp_enum/README:aufgabe-2-bestimmen-des-wochentags}{{2.3.2}{7}{3.2 Aufgabe 2 Bestimmen des Wochentags}{subsection.2.3.2}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.3.2.1}3.2.1 Teilaufgabe Argumente Parsen und auf Korrektheit prüfen}{7}{subsubsection.2.3.2.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P02_Funktionen_Datentyp_enum/README:teilaufgabe-argumente-parsen-und-auf-korrektheit-prufen}{{2.3.2.1}{7}{3.2.1 Teilaufgabe Argumente Parsen und auf Korrektheit prüfen}{subsubsection.2.3.2.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {paragraph}{3.2.1.1 Argument Format}{7}{paragraph*.3}\protected@file@percent }
 | 
			
		||||
\newlabel{P02_Funktionen_Datentyp_enum/README:argument-format}{{2.3.2.1}{7}{3.2.1.1 Argument Format}{paragraph*.3}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {paragraph}{3.2.1.2 Korrektes Datum}{7}{paragraph*.4}\protected@file@percent }
 | 
			
		||||
\newlabel{P02_Funktionen_Datentyp_enum/README:korrektes-datum}{{2.3.2.1}{7}{3.2.1.2 Korrektes Datum}{paragraph*.4}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {paragraph}{3.2.1.3 Vorgaben an die Umsetzung}{7}{paragraph*.5}\protected@file@percent }
 | 
			
		||||
\newlabel{P02_Funktionen_Datentyp_enum/README:vorgaben-an-die-umsetzung}{{2.3.2.1}{7}{3.2.1.3 Vorgaben an die Umsetzung}{paragraph*.5}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {paragraph}{3.2.1.4 Hinweise}{8}{paragraph*.6}\protected@file@percent }
 | 
			
		||||
\newlabel{P02_Funktionen_Datentyp_enum/README:hinweise}{{2.3.2.1}{8}{3.2.1.4 Hinweise}{paragraph*.6}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.3.2.2}3.2.2 Teilaufgabe Wochentag Berechnung}{8}{subsubsection.2.3.2.2}\protected@file@percent }
 | 
			
		||||
\newlabel{P02_Funktionen_Datentyp_enum/README:teilaufgabe-wochentag-berechnung}{{2.3.2.2}{8}{3.2.2 Teilaufgabe Wochentag Berechnung}{subsubsection.2.3.2.2}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {2.4}4. Bewertung}{8}{section.2.4}\protected@file@percent }
 | 
			
		||||
\newlabel{P02_Funktionen_Datentyp_enum/README:bewertung}{{2.4}{8}{4. Bewertung}{section.2.4}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {2.5}5. Anhang}{9}{section.2.5}\protected@file@percent }
 | 
			
		||||
\newlabel{P02_Funktionen_Datentyp_enum/README:anhang}{{2.5}{9}{5. Anhang}{section.2.5}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.5.1}5.1 Sprach Element}{9}{subsection.2.5.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P02_Funktionen_Datentyp_enum/README:sprach-element}{{2.5.1}{9}{5.1 Sprach Element}{subsection.2.5.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.5.2}5.2 Beschreibung}{9}{subsection.2.5.2}\protected@file@percent }
 | 
			
		||||
\newlabel{P02_Funktionen_Datentyp_enum/README:beschreibung}{{2.5.2}{9}{5.2 Beschreibung}{subsection.2.5.2}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {chapter}{\numberline {3}03 \sphinxhyphen {} Bit Operationen, Struct, Typedef}{10}{chapter.3}\protected@file@percent }
 | 
			
		||||
\@writefile{lof}{\addvspace {10\p@ }}
 | 
			
		||||
\@writefile{lot}{\addvspace {10\p@ }}
 | 
			
		||||
\newlabel{P03_Bit_Operation_struct_typedef/README:bit-operationen-struct-typedef}{{3}{10}{03 \sphinxhyphen {} Bit Operationen, Struct, Typedef}{chapter.3}{}}
 | 
			
		||||
\newlabel{P03_Bit_Operation_struct_typedef/README::doc}{{3}{10}{03 \sphinxhyphen {} Bit Operationen, Struct, Typedef}{chapter.3}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {3.1}1. Bit Operationen}{10}{section.3.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P03_Bit_Operation_struct_typedef/README:bit-operationen}{{3.1}{10}{1. Bit Operationen}{section.3.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.1}1.1 Übungen}{11}{subsection.3.1.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P03_Bit_Operation_struct_typedef/README:ubungen}{{3.1.1}{11}{1.1 Übungen}{subsection.3.1.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.1.1}1. Basis Operationen}{11}{subsubsection.3.1.1.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P03_Bit_Operation_struct_typedef/README:basis-operationen}{{3.1.1.1}{11}{1. Basis Operationen}{subsubsection.3.1.1.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.1.2}2. Variablen tauschen (ohne Dritt\sphinxhyphen {}Variable)}{11}{subsubsection.3.1.1.2}\protected@file@percent }
 | 
			
		||||
\newlabel{P03_Bit_Operation_struct_typedef/README:variablen-tauschen-ohne-dritt-variable}{{3.1.1.2}{11}{2. Variablen tauschen (ohne Dritt\sphinxhyphen {}Variable)}{subsubsection.3.1.1.2}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.1.3}3. Lower\sphinxhyphen {} / Uppercase}{12}{subsubsection.3.1.1.3}\protected@file@percent }
 | 
			
		||||
\newlabel{P03_Bit_Operation_struct_typedef/README:lower-uppercase}{{3.1.1.3}{12}{3. Lower\sphinxhyphen {} / Uppercase}{subsubsection.3.1.1.3}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.1.4}4. Prüfen auf 2\sphinxhyphen {}er Potenz}{12}{subsubsection.3.1.1.4}\protected@file@percent }
 | 
			
		||||
\newlabel{P03_Bit_Operation_struct_typedef/README:prufen-auf-2-er-potenz}{{3.1.1.4}{12}{4. Prüfen auf 2\sphinxhyphen {}er Potenz}{subsubsection.3.1.1.4}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {3.2}2. Struct \& typedef}{13}{section.3.2}\protected@file@percent }
 | 
			
		||||
\newlabel{P03_Bit_Operation_struct_typedef/README:struct-typedef}{{3.2}{13}{2. Struct \& typedef}{section.3.2}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.1}2.1 Übungen}{13}{subsection.3.2.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P03_Bit_Operation_struct_typedef/README:id1}{{3.2.1}{13}{2.1 Übungen}{subsection.3.2.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.1.1}1. Bit Operationen Rechner}{13}{subsubsection.3.2.1.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P03_Bit_Operation_struct_typedef/README:bit-operationen-rechner}{{3.2.1.1}{13}{1. Bit Operationen Rechner}{subsubsection.3.2.1.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {chapter}{\numberline {4}04 \sphinxhyphen {} Modularisieren von C Code}{14}{chapter.4}\protected@file@percent }
 | 
			
		||||
\@writefile{lof}{\addvspace {10\p@ }}
 | 
			
		||||
\@writefile{lot}{\addvspace {10\p@ }}
 | 
			
		||||
\newlabel{P04_Modularisieren_von_C_Code/new_P04/P04_Modularisieren_von_C_Code:modularisieren-von-c-code}{{4}{14}{04 \sphinxhyphen {} Modularisieren von C Code}{chapter.4}{}}
 | 
			
		||||
\newlabel{P04_Modularisieren_von_C_Code/new_P04/P04_Modularisieren_von_C_Code::doc}{{4}{14}{04 \sphinxhyphen {} Modularisieren von C Code}{chapter.4}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {4.1}1. Übersicht}{14}{section.4.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P04_Modularisieren_von_C_Code/new_P04/P04_Modularisieren_von_C_Code:ubersicht}{{4.1}{14}{1. Übersicht}{section.4.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {4.2}2. Lernziele}{14}{section.4.2}\protected@file@percent }
 | 
			
		||||
\newlabel{P04_Modularisieren_von_C_Code/new_P04/P04_Modularisieren_von_C_Code:lernziele}{{4.2}{14}{2. Lernziele}{section.4.2}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {4.3}3. Aufgabe 1: Modularisieren}{15}{section.4.3}\protected@file@percent }
 | 
			
		||||
\newlabel{P04_Modularisieren_von_C_Code/new_P04/P04_Modularisieren_von_C_Code:aufgabe-1-modularisieren}{{4.3}{15}{3. Aufgabe 1: Modularisieren}{section.4.3}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.1}3.1 Teilaufgabe Modules einbinden, Header Files schreiben}{15}{subsection.4.3.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P04_Modularisieren_von_C_Code/new_P04/P04_Modularisieren_von_C_Code:teilaufgabe-modules-einbinden-header-files-schreiben}{{4.3.1}{15}{3.1 Teilaufgabe Modules einbinden, Header Files schreiben}{subsection.4.3.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {4.4}4. Aufgabe 2: Makefile Regeln}{16}{section.4.4}\protected@file@percent }
 | 
			
		||||
\newlabel{P04_Modularisieren_von_C_Code/new_P04/P04_Modularisieren_von_C_Code:aufgabe-2-makefile-regeln}{{4.4}{16}{4. Aufgabe 2: Makefile Regeln}{section.4.4}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.4.1}4.1 Neue Regeln hinzufügen}{16}{subsection.4.4.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P04_Modularisieren_von_C_Code/new_P04/P04_Modularisieren_von_C_Code:neue-regeln-hinzufugen}{{4.4.1}{16}{4.1 Neue Regeln hinzufügen}{subsection.4.4.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {4.5}5. Aufgabe 3}{16}{section.4.5}\protected@file@percent }
 | 
			
		||||
\newlabel{P04_Modularisieren_von_C_Code/new_P04/P04_Modularisieren_von_C_Code:aufgabe-3}{{4.5}{16}{5. Aufgabe 3}{section.4.5}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {4.6}6. Bewertung}{16}{section.4.6}\protected@file@percent }
 | 
			
		||||
\newlabel{P04_Modularisieren_von_C_Code/new_P04/P04_Modularisieren_von_C_Code:bewertung}{{4.6}{16}{6. Bewertung}{section.4.6}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {4.7}7. Erweiterung Doxyfile für Abhängigkeitsanalyse}{16}{section.4.7}\protected@file@percent }
 | 
			
		||||
\newlabel{P04_Modularisieren_von_C_Code/new_P04/P04_Modularisieren_von_C_Code:erweiterung-doxyfile-fur-abhangigkeitsanalyse}{{4.7}{16}{7. Erweiterung Doxyfile für Abhängigkeitsanalyse}{section.4.7}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {chapter}{\numberline {5}05 \sphinxhyphen {} Arrays/Strings/TicTacToe}{18}{chapter.5}\protected@file@percent }
 | 
			
		||||
\@writefile{lof}{\addvspace {10\p@ }}
 | 
			
		||||
\@writefile{lot}{\addvspace {10\p@ }}
 | 
			
		||||
\newlabel{P05_TicTacToe/README:arrays-strings-tictactoe}{{5}{18}{05 \sphinxhyphen {} Arrays/Strings/TicTacToe}{chapter.5}{}}
 | 
			
		||||
\newlabel{P05_TicTacToe/README::doc}{{5}{18}{05 \sphinxhyphen {} Arrays/Strings/TicTacToe}{chapter.5}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {5.1}1. Übersicht}{18}{section.5.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P05_TicTacToe/README:ubersicht}{{5.1}{18}{1. Übersicht}{section.5.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {5.2}2. Lernziele}{18}{section.5.2}\protected@file@percent }
 | 
			
		||||
\newlabel{P05_TicTacToe/README:lernziele}{{5.2}{18}{2. Lernziele}{section.5.2}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {5.3}3. Aufgabe 1: Sortieren von Strings}{18}{section.5.3}\protected@file@percent }
 | 
			
		||||
\newlabel{P05_TicTacToe/README:aufgabe-1-sortieren-von-strings}{{5.3}{18}{3. Aufgabe 1: Sortieren von Strings}{section.5.3}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {5.4}4. Aufgabe 2: TicTacToe}{19}{section.5.4}\protected@file@percent }
 | 
			
		||||
\newlabel{P05_TicTacToe/README:aufgabe-2-tictactoe}{{5.4}{19}{4. Aufgabe 2: TicTacToe}{section.5.4}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.1}4.1 Teilaufgabe test\_model\_init}{20}{subsection.5.4.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P05_TicTacToe/README:teilaufgabe-test-model-init}{{5.4.1}{20}{4.1 Teilaufgabe test\_model\_init}{subsection.5.4.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.2}4.2 Teilaufgabe test\_model\_get\_state und test\_model\_get\_winner}{21}{subsection.5.4.2}\protected@file@percent }
 | 
			
		||||
\newlabel{P05_TicTacToe/README:teilaufgabe-test-model-get-state-und-test-model-get-winner}{{5.4.2}{21}{4.2 Teilaufgabe test\_model\_get\_state und test\_model\_get\_winner}{subsection.5.4.2}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.3}4.3 Teilaufgabe test\_model\_can\_move}{22}{subsection.5.4.3}\protected@file@percent }
 | 
			
		||||
\newlabel{P05_TicTacToe/README:teilaufgabe-test-model-can-move}{{5.4.3}{22}{4.3 Teilaufgabe test\_model\_can\_move}{subsection.5.4.3}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.4}4.4 Teilaufgabe test\_model\_move und test\_model\_get\_win\_line}{22}{subsection.5.4.4}\protected@file@percent }
 | 
			
		||||
\newlabel{P05_TicTacToe/README:teilaufgabe-test-model-move-und-test-model-get-win-line}{{5.4.4}{22}{4.4 Teilaufgabe test\_model\_move und test\_model\_get\_win\_line}{subsection.5.4.4}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {5.5}5. Bewertung}{23}{section.5.5}\protected@file@percent }
 | 
			
		||||
\newlabel{P05_TicTacToe/README:bewertung}{{5.5}{23}{5. Bewertung}{section.5.5}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {chapter}{\numberline {6}06 \sphinxhyphen {} Personen Verwaltung \textendash {} Linked List}{24}{chapter.6}\protected@file@percent }
 | 
			
		||||
\@writefile{lof}{\addvspace {10\p@ }}
 | 
			
		||||
\@writefile{lot}{\addvspace {10\p@ }}
 | 
			
		||||
\newlabel{P06_Personen_Verwaltung_Linked_List/README:personen-verwaltung-linked-list}{{6}{24}{06 \sphinxhyphen {} Personen Verwaltung \textendash {} Linked List}{chapter.6}{}}
 | 
			
		||||
\newlabel{P06_Personen_Verwaltung_Linked_List/README::doc}{{6}{24}{06 \sphinxhyphen {} Personen Verwaltung \textendash {} Linked List}{chapter.6}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {6.1}1. Übersicht}{24}{section.6.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P06_Personen_Verwaltung_Linked_List/README:ubersicht}{{6.1}{24}{1. Übersicht}{section.6.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {6.2}2. Lernziele}{25}{section.6.2}\protected@file@percent }
 | 
			
		||||
\newlabel{P06_Personen_Verwaltung_Linked_List/README:lernziele}{{6.2}{25}{2. Lernziele}{section.6.2}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {6.3}3. Personenverwaltung}{25}{section.6.3}\protected@file@percent }
 | 
			
		||||
\newlabel{P06_Personen_Verwaltung_Linked_List/README:personenverwaltung}{{6.3}{25}{3. Personenverwaltung}{section.6.3}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.1}3.1 Programmfunktion}{25}{subsection.6.3.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P06_Personen_Verwaltung_Linked_List/README:programmfunktion}{{6.3.1}{25}{3.1 Programmfunktion}{subsection.6.3.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.2}3.2 Designvorgaben}{25}{subsection.6.3.2}\protected@file@percent }
 | 
			
		||||
\newlabel{P06_Personen_Verwaltung_Linked_List/README:designvorgaben}{{6.3.2}{25}{3.2 Designvorgaben}{subsection.6.3.2}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.3}3.3 Bestehender Programmrahmen}{28}{subsection.6.3.3}\protected@file@percent }
 | 
			
		||||
\newlabel{P06_Personen_Verwaltung_Linked_List/README:bestehender-programmrahmen}{{6.3.3}{28}{3.3 Bestehender Programmrahmen}{subsection.6.3.3}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {6.4}4. Aufgabe 1: Modularisierung \textendash {} API und Implementation main.c}{28}{section.6.4}\protected@file@percent }
 | 
			
		||||
\newlabel{P06_Personen_Verwaltung_Linked_List/README:aufgabe-1-modularisierung-api-und-implementation-main-c}{{6.4}{28}{4. Aufgabe 1: Modularisierung \textendash {} API und Implementation main.c}{section.6.4}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {6.5}5. Aufgabe 2: Implementierung von person.c und list.c}{29}{section.6.5}\protected@file@percent }
 | 
			
		||||
\newlabel{P06_Personen_Verwaltung_Linked_List/README:aufgabe-2-implementierung-von-person-c-und-list-c}{{6.5}{29}{5. Aufgabe 2: Implementierung von person.c und list.c}{section.6.5}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {6.5.1}5.1 Teilaufgabe: Implementierung von person.c}{29}{subsection.6.5.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P06_Personen_Verwaltung_Linked_List/README:teilaufgabe-implementierung-von-person-c}{{6.5.1}{29}{5.1 Teilaufgabe: Implementierung von person.c}{subsection.6.5.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {6.5.2}5.2 Teilaufgabe: Implementierung von list.c}{29}{subsection.6.5.2}\protected@file@percent }
 | 
			
		||||
\newlabel{P06_Personen_Verwaltung_Linked_List/README:teilaufgabe-implementierung-von-list-c}{{6.5.2}{29}{5.2 Teilaufgabe: Implementierung von list.c}{subsection.6.5.2}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {6.6}6. Aufgabe 3: Unit Tests}{29}{section.6.6}\protected@file@percent }
 | 
			
		||||
\newlabel{P06_Personen_Verwaltung_Linked_List/README:aufgabe-3-unit-tests}{{6.6}{29}{6. Aufgabe 3: Unit Tests}{section.6.6}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {6.7}7. Bewertung}{29}{section.6.7}\protected@file@percent }
 | 
			
		||||
\newlabel{P06_Personen_Verwaltung_Linked_List/README:bewertung}{{6.7}{29}{7. Bewertung}{section.6.7}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {chapter}{\numberline {7}07 \sphinxhyphen {} Prozesse und Threads}{31}{chapter.7}\protected@file@percent }
 | 
			
		||||
\@writefile{lof}{\addvspace {10\p@ }}
 | 
			
		||||
\@writefile{lot}{\addvspace {10\p@ }}
 | 
			
		||||
\newlabel{P07_Prozesse_und_Threads/README:prozesse-und-threads}{{7}{31}{07 \sphinxhyphen {} Prozesse und Threads}{chapter.7}{}}
 | 
			
		||||
\newlabel{P07_Prozesse_und_Threads/README::doc}{{7}{31}{07 \sphinxhyphen {} Prozesse und Threads}{chapter.7}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {7.1}1. Übersicht}{32}{section.7.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P07_Prozesse_und_Threads/README:ubersicht}{{7.1}{32}{1. Übersicht}{section.7.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {7.1.1}1.1 Nachweis}{32}{subsection.7.1.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P07_Prozesse_und_Threads/README:nachweis}{{7.1.1}{32}{1.1 Nachweis}{subsection.7.1.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {7.2}2. Lernziele}{32}{section.7.2}\protected@file@percent }
 | 
			
		||||
\newlabel{P07_Prozesse_und_Threads/README:lernziele}{{7.2}{32}{2. Lernziele}{section.7.2}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {7.3}3. Aufgaben}{32}{section.7.3}\protected@file@percent }
 | 
			
		||||
\newlabel{P07_Prozesse_und_Threads/README:aufgaben}{{7.3}{32}{3. Aufgaben}{section.7.3}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.1}3.1 Aufgabe 1: Prozess mit fork() erzeugen}{33}{subsection.7.3.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P07_Prozesse_und_Threads/README:aufgabe-1-prozess-mit-fork-erzeugen}{{7.3.1}{33}{3.1 Aufgabe 1: Prozess mit fork() erzeugen}{subsection.7.3.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.2}3.2 Aufgabe 2: Prozess mit fork() und exec(): Programm Image ersetzen}{33}{subsection.7.3.2}\protected@file@percent }
 | 
			
		||||
\newlabel{P07_Prozesse_und_Threads/README:aufgabe-2-prozess-mit-fork-und-exec-programm-image-ersetzen}{{7.3.2}{33}{3.2 Aufgabe 2: Prozess mit fork() und exec(): Programm Image ersetzen}{subsection.7.3.2}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.3}3.3 Aufgabe 3: Prozesshierarchie analysieren}{33}{subsection.7.3.3}\protected@file@percent }
 | 
			
		||||
\newlabel{P07_Prozesse_und_Threads/README:aufgabe-3-prozesshierarchie-analysieren}{{7.3.3}{33}{3.3 Aufgabe 3: Prozesshierarchie analysieren}{subsection.7.3.3}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.4}3.4 Aufgabe 4: Zeitlicher Ablauf von Prozessen}{34}{subsection.7.3.4}\protected@file@percent }
 | 
			
		||||
\newlabel{P07_Prozesse_und_Threads/README:aufgabe-4-zeitlicher-ablauf-von-prozessen}{{7.3.4}{34}{3.4 Aufgabe 4: Zeitlicher Ablauf von Prozessen}{subsection.7.3.4}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.5}3.5 Aufgabe 5: Waisenkinder (Orphan Processes)}{34}{subsection.7.3.5}\protected@file@percent }
 | 
			
		||||
\newlabel{P07_Prozesse_und_Threads/README:aufgabe-5-waisenkinder-orphan-processes}{{7.3.5}{34}{3.5 Aufgabe 5: Waisenkinder (Orphan Processes)}{subsection.7.3.5}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.6}3.6 Aufgabe 6: Terminierte, halbtote Prozesse (Zombies)}{34}{subsection.7.3.6}\protected@file@percent }
 | 
			
		||||
\newlabel{P07_Prozesse_und_Threads/README:aufgabe-6-terminierte-halbtote-prozesse-zombies}{{7.3.6}{34}{3.6 Aufgabe 6: Terminierte, halbtote Prozesse (Zombies)}{subsection.7.3.6}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.7}3.7 Aufgabe 7: Auf Terminieren von Kindprozessen warten}{35}{subsection.7.3.7}\protected@file@percent }
 | 
			
		||||
\newlabel{P07_Prozesse_und_Threads/README:aufgabe-7-auf-terminieren-von-kindprozessen-warten}{{7.3.7}{35}{3.7 Aufgabe 7: Auf Terminieren von Kindprozessen warten}{subsection.7.3.7}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.8}3.8 Aufgabe 8: Kindprozess als Kopie des Elternprozesses}{36}{subsection.7.3.8}\protected@file@percent }
 | 
			
		||||
\newlabel{P07_Prozesse_und_Threads/README:aufgabe-8-kindprozess-als-kopie-des-elternprozesses}{{7.3.8}{36}{3.8 Aufgabe 8: Kindprozess als Kopie des Elternprozesses}{subsection.7.3.8}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.9}3.9 Aufgabe 9: Unterschied von Threads gegenüber Prozessen}{36}{subsection.7.3.9}\protected@file@percent }
 | 
			
		||||
\newlabel{P07_Prozesse_und_Threads/README:aufgabe-9-unterschied-von-threads-gegenuber-prozessen}{{7.3.9}{36}{3.9 Aufgabe 9: Unterschied von Threads gegenüber Prozessen}{subsection.7.3.9}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.10}3.10 Aufgabe 10 (optional):}{37}{subsection.7.3.10}\protected@file@percent }
 | 
			
		||||
\newlabel{P07_Prozesse_und_Threads/README:aufgabe-10-optional}{{7.3.10}{37}{3.10 Aufgabe 10 (optional):}{subsection.7.3.10}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.3.10.1}3.10.1 Übersicht}{37}{subsubsection.7.3.10.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P07_Prozesse_und_Threads/README:id1}{{7.3.10.1}{37}{3.10.1 Übersicht}{subsubsection.7.3.10.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {paragraph}{3.10.1.1 Nachweis}{37}{paragraph*.7}\protected@file@percent }
 | 
			
		||||
\newlabel{P07_Prozesse_und_Threads/README:id2}{{7.3.10.1}{37}{3.10.1.1 Nachweis}{paragraph*.7}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.3.10.2}3.10.2 Lernziele}{37}{subsubsection.7.3.10.2}\protected@file@percent }
 | 
			
		||||
\newlabel{P07_Prozesse_und_Threads/README:id3}{{7.3.10.2}{37}{3.10.2 Lernziele}{subsubsection.7.3.10.2}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.3.10.3}3.10.3 Aufgabe: Dämon Prozesse}{37}{subsubsection.7.3.10.3}\protected@file@percent }
 | 
			
		||||
\newlabel{P07_Prozesse_und_Threads/README:aufgabe-damon-prozesse}{{7.3.10.3}{37}{3.10.3 Aufgabe: Dämon Prozesse}{subsubsection.7.3.10.3}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.3.10.4}3.10.4 Zusatzinformationen}{38}{subsubsection.7.3.10.4}\protected@file@percent }
 | 
			
		||||
\newlabel{P07_Prozesse_und_Threads/README:zusatzinformationen}{{7.3.10.4}{38}{3.10.4 Zusatzinformationen}{subsubsection.7.3.10.4}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {paragraph}{3.10.4.1 Diese Implementation}{38}{paragraph*.8}\protected@file@percent }
 | 
			
		||||
\newlabel{P07_Prozesse_und_Threads/README:diese-implementation}{{7.3.10.4}{38}{3.10.4.1 Diese Implementation}{paragraph*.8}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {paragraph}{3.10.4.2 Zusatzinformation zu Dämon Prozessen}{39}{paragraph*.9}\protected@file@percent }
 | 
			
		||||
\newlabel{P07_Prozesse_und_Threads/README:zusatzinformation-zu-damon-prozessen}{{7.3.10.4}{39}{3.10.4.2 Zusatzinformation zu Dämon Prozessen}{paragraph*.9}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {7.4}4. Bewertung}{39}{section.7.4}\protected@file@percent }
 | 
			
		||||
\newlabel{P07_Prozesse_und_Threads/README:bewertung}{{7.4}{39}{4. Bewertung}{section.7.4}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {chapter}{\numberline {8}08 \sphinxhyphen {} Synchronisationsprobleme}{41}{chapter.8}\protected@file@percent }
 | 
			
		||||
\@writefile{lof}{\addvspace {10\p@ }}
 | 
			
		||||
\@writefile{lot}{\addvspace {10\p@ }}
 | 
			
		||||
\newlabel{P08_Sync/README:synchronisationsprobleme}{{8}{41}{08 \sphinxhyphen {} Synchronisationsprobleme}{chapter.8}{}}
 | 
			
		||||
\newlabel{P08_Sync/README::doc}{{8}{41}{08 \sphinxhyphen {} Synchronisationsprobleme}{chapter.8}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {8.1}1. Übersicht}{41}{section.8.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P08_Sync/README:ubersicht}{{8.1}{41}{1. Übersicht}{section.8.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.1}1.1 Nachweis}{42}{subsection.8.1.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P08_Sync/README:nachweis}{{8.1.1}{42}{1.1 Nachweis}{subsection.8.1.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {8.2}2. Lernziele}{42}{section.8.2}\protected@file@percent }
 | 
			
		||||
\newlabel{P08_Sync/README:lernziele}{{8.2}{42}{2. Lernziele}{section.8.2}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {8.3}3. Einführung}{42}{section.8.3}\protected@file@percent }
 | 
			
		||||
\newlabel{P08_Sync/README:einfuhrung}{{8.3}{42}{3. Einführung}{section.8.3}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {8.3.1}3.1 Wie löst man Synchronisationsprobleme?}{42}{subsection.8.3.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P08_Sync/README:wie-lost-man-synchronisationsprobleme}{{8.3.1}{42}{3.1 Wie löst man Synchronisationsprobleme?}{subsection.8.3.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {8.4}4. Der Kaffee\sphinxhyphen {}Automat}{43}{section.8.4}\protected@file@percent }
 | 
			
		||||
\newlabel{P08_Sync/README:der-kaffee-automat}{{8.4}{43}{4. Der Kaffee\sphinxhyphen {}Automat}{section.8.4}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {8.4.1}4.1 Aufgabe: Mutual Exclusion}{44}{subsection.8.4.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P08_Sync/README:aufgabe-mutual-exclusion}{{8.4.1}{44}{4.1 Aufgabe: Mutual Exclusion}{subsection.8.4.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {8.4.1.1}Aufgaben}{44}{subsubsection.8.4.1.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P08_Sync/README:aufgaben}{{8.4.1.1}{44}{Aufgaben}{subsubsection.8.4.1.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {8.4.2}4.2 Aufgabe: Einfache Reihenfolge}{44}{subsection.8.4.2}\protected@file@percent }
 | 
			
		||||
\newlabel{P08_Sync/README:aufgabe-einfache-reihenfolge}{{8.4.2}{44}{4.2 Aufgabe: Einfache Reihenfolge}{subsection.8.4.2}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {8.4.2.1}Aufgaben}{45}{subsubsection.8.4.2.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P08_Sync/README:id1}{{8.4.2.1}{45}{Aufgaben}{subsubsection.8.4.2.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {8.4.3}4.3 Aufgabe: Erweiterte Reihenfolge}{45}{subsection.8.4.3}\protected@file@percent }
 | 
			
		||||
\newlabel{P08_Sync/README:aufgabe-erweiterte-reihenfolge}{{8.4.3}{45}{4.3 Aufgabe: Erweiterte Reihenfolge}{subsection.8.4.3}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {8.4.3.1}Aufgabe}{45}{subsubsection.8.4.3.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P08_Sync/README:aufgabe}{{8.4.3.1}{45}{Aufgabe}{subsubsection.8.4.3.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {8.4.4}4.4 Zusammenfassung}{45}{subsection.8.4.4}\protected@file@percent }
 | 
			
		||||
\newlabel{P08_Sync/README:zusammenfassung}{{8.4.4}{45}{4.4 Zusammenfassung}{subsection.8.4.4}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {8.5}5. International Banking}{46}{section.8.5}\protected@file@percent }
 | 
			
		||||
\newlabel{P08_Sync/README:international-banking}{{8.5}{46}{5. International Banking}{section.8.5}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {8.5.1}5.1 Implementation}{46}{subsection.8.5.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P08_Sync/README:implementation}{{8.5.1}{46}{5.1 Implementation}{subsection.8.5.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {8.5.2}5.2 Aufgabe: Konto Synchronisation}{46}{subsection.8.5.2}\protected@file@percent }
 | 
			
		||||
\newlabel{P08_Sync/README:aufgabe-konto-synchronisation}{{8.5.2}{46}{5.2 Aufgabe: Konto Synchronisation}{subsection.8.5.2}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {8.5.3}5.3 Aufgabe: Filialen Zugriff in Critical Section}{46}{subsection.8.5.3}\protected@file@percent }
 | 
			
		||||
\newlabel{P08_Sync/README:aufgabe-filialen-zugriff-in-critical-section}{{8.5.3}{46}{5.3 Aufgabe: Filialen Zugriff in Critical Section}{subsection.8.5.3}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {subsection}{\numberline {8.5.4}5.4 Aufgabe: Refactoring der Synchronisation}{46}{subsection.8.5.4}\protected@file@percent }
 | 
			
		||||
\newlabel{P08_Sync/README:aufgabe-refactoring-der-synchronisation}{{8.5.4}{46}{5.4 Aufgabe: Refactoring der Synchronisation}{subsection.8.5.4}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {8.6}6. Bewertung}{47}{section.8.6}\protected@file@percent }
 | 
			
		||||
\newlabel{P08_Sync/README:bewertung}{{8.6}{47}{6. Bewertung}{section.8.6}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {chapter}{\numberline {9}09 \sphinxhyphen {} File Operations}{48}{chapter.9}\protected@file@percent }
 | 
			
		||||
\@writefile{lof}{\addvspace {10\p@ }}
 | 
			
		||||
\@writefile{lot}{\addvspace {10\p@ }}
 | 
			
		||||
\newlabel{P09_File_Operations/README:file-operations}{{9}{48}{09 \sphinxhyphen {} File Operations}{chapter.9}{}}
 | 
			
		||||
\newlabel{P09_File_Operations/README::doc}{{9}{48}{09 \sphinxhyphen {} File Operations}{chapter.9}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {9.1}1. Übersicht}{48}{section.9.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P09_File_Operations/README:ubersicht}{{9.1}{48}{1. Übersicht}{section.9.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {9.2}2. Lernziele}{48}{section.9.2}\protected@file@percent }
 | 
			
		||||
\newlabel{P09_File_Operations/README:lernziele}{{9.2}{48}{2. Lernziele}{section.9.2}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {9.3}3. Aufgabe 1:}{48}{section.9.3}\protected@file@percent }
 | 
			
		||||
\newlabel{P09_File_Operations/README:aufgabe-1}{{9.3}{48}{3. Aufgabe 1:}{section.9.3}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {9.4}4. Bewertung}{48}{section.9.4}\protected@file@percent }
 | 
			
		||||
\newlabel{P09_File_Operations/README:bewertung}{{9.4}{48}{4. Bewertung}{section.9.4}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {chapter}{\numberline {10}10 \sphinxhyphen {} IPC}{49}{chapter.10}\protected@file@percent }
 | 
			
		||||
\@writefile{lof}{\addvspace {10\p@ }}
 | 
			
		||||
\@writefile{lot}{\addvspace {10\p@ }}
 | 
			
		||||
\newlabel{P10_IPC/README:ipc}{{10}{49}{10 \sphinxhyphen {} IPC}{chapter.10}{}}
 | 
			
		||||
\newlabel{P10_IPC/README::doc}{{10}{49}{10 \sphinxhyphen {} IPC}{chapter.10}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {10.1}1. Übersicht}{49}{section.10.1}\protected@file@percent }
 | 
			
		||||
\newlabel{P10_IPC/README:ubersicht}{{10.1}{49}{1. Übersicht}{section.10.1}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {10.2}2. Lernziele}{49}{section.10.2}\protected@file@percent }
 | 
			
		||||
\newlabel{P10_IPC/README:lernziele}{{10.2}{49}{2. Lernziele}{section.10.2}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {10.3}3. Aufgabe 1:}{49}{section.10.3}\protected@file@percent }
 | 
			
		||||
\newlabel{P10_IPC/README:aufgabe-1}{{10.3}{49}{3. Aufgabe 1:}{section.10.3}{}}
 | 
			
		||||
\@writefile{toc}{\contentsline {section}{\numberline {10.4}4. Bewertung}{49}{section.10.4}\protected@file@percent }
 | 
			
		||||
\newlabel{P10_IPC/README:bewertung}{{10.4}{49}{4. Bewertung}{section.10.4}{}}
 | 
			
		||||
\gdef \@abspage@last{53}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,218 @@
 | 
			
		|||
# Fdb version 3
 | 
			
		||||
["makeindex main.idx"] 1645024877 "main.idx" "main.ind" "main" 1645084636
 | 
			
		||||
  "main.idx" 1645084635 0 d41d8cd98f00b204e9800998ecf8427e "pdflatex"
 | 
			
		||||
  (generated)
 | 
			
		||||
  "main.ilg"
 | 
			
		||||
  "main.ind"
 | 
			
		||||
["pdflatex"] 1645084634 "main.tex" "main.pdf" "main" 1645084636
 | 
			
		||||
  "135oALYhkYyXB2aG0F-qrwA.jpeg" 1644933039 28796 f9cef91ae7a04013ca14640f35187599 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/MiKTeX/fonts/map/pdftex/pdftex.map" 1644474942 123072 4dfec00f36c42e8f2db702e61ef5862a ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/MiKTeX/fonts/pk/ljfour/jknappen/ec/dpi600/ecbx1000.pk" 1644474959 25420 b1b863c5175ccd2a9a60bbcd0e07aec7 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/MiKTeX/fonts/pk/ljfour/jknappen/ec/dpi600/ecbx1200.pk" 1644474955 31952 a08b7c23b9d95a70bd956de9e30f758b ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/MiKTeX/fonts/pk/ljfour/jknappen/ec/dpi600/ecbx1440.pk" 1644474962 40136 86f2bd3c6b4564d84b54d6621ebe96c1 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/MiKTeX/fonts/pk/ljfour/jknappen/ec/dpi600/ecbx2074.pk" 1644474957 59008 131236bef7192b1be43caa07e4981c9e ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/MiKTeX/fonts/pk/ljfour/jknappen/ec/dpi600/ecbx2488.pk" 1644474964 72288 41615f73245b77d5ff98e3014ff72ebc ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/MiKTeX/fonts/pk/ljfour/jknappen/ec/dpi600/ecit1000.pk" 1644474949 26728 f42cf8151a404c2d9bae3ab9e9c6023b ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/MiKTeX/fonts/pk/ljfour/jknappen/ec/dpi600/ecrm0800.pk" 1644474947 19080 2b1eea2e535e11d98a202141c1b0e935 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/MiKTeX/fonts/pk/ljfour/jknappen/ec/dpi600/ecrm0900.pk" 1644474961 21356 b52f161ff6876516265c4e7f48c5165e ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/MiKTeX/fonts/pk/ljfour/jknappen/ec/dpi600/ecrm1000.pk" 1644474958 23808 7e7929695c466f92ed0c8f45f373c2b0 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/MiKTeX/fonts/pk/ljfour/jknappen/ec/dpi600/ecss1000.pk" 1644474950 19932 a83ca62b8d19276d4dd16b36b7c613b2 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/MiKTeX/fonts/pk/ljfour/jknappen/ec/dpi600/ecti0900.pk" 1644474960 28820 366a24d5ffd435b4b93b0566c01a73d7 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/MiKTeX/fonts/pk/ljfour/jknappen/ec/dpi600/ecti1000.pk" 1644474954 31892 54481007e6fbe225dfaa98331c87cd34 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/MiKTeX/fonts/pk/ljfour/jknappen/ec/dpi600/ectt1000.pk" 1644474953 20028 07b9d27d05a3c1d587f5d3bf61d9e041 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/MiKTeX/fonts/pk/ljfour/jknappen/ec/dpi600/tcrm1000.pk" 1644474952 11548 0b0d56ec4dada4d64b236d26d8259ea3 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/MiKTeX/fonts/pk/ljfour/jknappen/ec/dpi600/tctt1000.pk" 1644474944 9492 b32fae978048c63bed8b8ea5b4c01e26 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/MiKTeX/miktex/data/le/pdftex/pdflatex.fmt" 1641968746 9769493 e69ef452068a007dd8a62918dcf32fd8 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/jknappen/ec/ecbx1000.tfm" 993058356 3200 328792ff19833a39406f06fa0555a6dc ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/jknappen/ec/ecbx1200.tfm" 993058358 3200 b8d69bc738e5ef3e08cefeef3109ff56 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/jknappen/ec/ecbx1440.tfm" 993058360 3196 0b37fa3083e15c57cfa8c4ff52f2807a ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/jknappen/ec/ecbx2074.tfm" 993058364 3208 da5ec29ca7c2f5f55c296dd6713d4a74 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/jknappen/ec/ecbx2488.tfm" 993058366 3192 b0a07ba84fb3fb36d088c4f796e254b9 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/jknappen/ec/ecit1000.tfm" 993058448 1356 26b6ae61ed8e8f2b58dad9f0a3f033b4 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/jknappen/ec/ecrm0800.tfm" 993058518 3152 11ecf5aad6aacf00ff18f394ab23a8b5 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/jknappen/ec/ecrm0900.tfm" 993058520 3156 6d4f5755d77638125f6f89de4f3bb757 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/jknappen/ec/ecrm1000.tfm" 993058522 3148 7e594c8240c71e432203f65ab5f95a51 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/jknappen/ec/ecrm1200.tfm" 993058526 3152 4850ff0163852b7fab34bd55e1197f28 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/jknappen/ec/ecrm1440.tfm" 993058528 3168 3bd7b08ba4330af81521911744311212 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/jknappen/ec/ecrm2074.tfm" 993058530 3184 b2541675eba9fa86d240ec0ecc913558 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/jknappen/ec/ecrm2488.tfm" 993058532 3184 93c67f4c0884ba9e31b75d469978f63b ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/jknappen/ec/ecss1000.tfm" 993058634 3140 7eb06dfefee71119860002af13820d26 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/jknappen/ec/ecti0900.tfm" 993058718 2840 ee8ddc1ae849c174661b3a0424c5b864 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/jknappen/ec/ecti1000.tfm" 993058720 2840 5606e1a681c23005308de9d61c09a8ff ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/jknappen/ec/ectt0800.tfm" 993058738 1348 ad6a25e9916b0e5ddfcc7ffcb8d43448 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/jknappen/ec/ectt1000.tfm" 993058740 1348 d70ddf2d5d512b838e50a335e385e919 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/jknappen/ec/tcrm1000.tfm" 993058908 1436 c7f957a372ef2fbe93c0982f96625e12 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/jknappen/ec/tctt1000.tfm" 993058964 1284 ebe6f6da538d21a08b8f29b6479c4f22 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm" 1233951848 1004 54797486969f23fa377b128694d548df ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/public/amsfonts/symbols/msam10.tfm" 1233951854 916 f87d7c45f9c908e672703b83b72241a3 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/public/amsfonts/symbols/msam5.tfm" 1233951854 924 9904cf1d39e9767e7a3622f2a125a565 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/public/amsfonts/symbols/msam7.tfm" 1233951854 928 2dc8d444221b7a635bb58038579b861a ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/public/amsfonts/symbols/msbm10.tfm" 1233951854 908 2921f8a10601f252058503cc6570e581 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/public/amsfonts/symbols/msbm5.tfm" 1233951854 940 75ac932a52f80982a9f8ea75d03a34cf ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/tfm/public/amsfonts/symbols/msbm7.tfm" 1233951854 940 228d6584342e91276bf566bcf9716b83 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/type1/public/amsfonts/cm/cmmi5.pfb" 1247593067 37912 07513ec114ac737ab54cea0152f4424b ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/fonts/type1/public/amsfonts/cm/cmsy5.pfb" 1247593066 32915 7bf7720c61a5b3a7ff25b0964421c9b6 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/context/base/mkii/supp-pdf.mkii" 1580390158 71627 94eb9990bed73c364d7f53f960cc8c5b ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/generic/atbegshi/atbegshi.sty" 1575571100 24708 5584a51a7101caf7e6bbf1fc27d8f7b1 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/generic/babel/babel.sty" 1640863413 147419 612046eb31f6ee1a29c1e163d25a9bdd ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/generic/babel/txtbabel.def" 1640863413 5233 a89961f969f72563cb59411e9dc4ae8e ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/generic/bigintcalc/bigintcalc.sty" 1576433602 40635 c40361e206be584d448876bba8a64a3b ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/generic/bitset/bitset.sty" 1575926576 33961 6b5c75130e435b2bfdb9f480a09a39f9 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/generic/etexcmds/etexcmds.sty" 1576433638 7734 b98cbb34c81f667027c1e3ebdbfce34b ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/generic/gettitlestring/gettitlestring.sty" 1576433666 8371 9d55b8bd010bc717624922fb3477d92e ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/generic/iftex/iftex.sty" 1583523400 6501 4011d89d9621e0b0901138815ba5ff29 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/generic/iftex/ifvtex.sty" 1583523400 1057 525c2192b5febbd8c1f662c9468335bb ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/generic/infwarerr/infwarerr.sty" 1575399508 8356 7bbb2c2373aa810be568c29e333da8ed ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/generic/intcalc/intcalc.sty" 1576433764 31769 002a487f55041f8e805cfbf6385ffd97 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/generic/kvdefinekeys/kvdefinekeys.sty" 1576763304 5412 d5a2436094cd7be85769db90f29250a6 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/generic/kvsetkeys/kvsetkeys.sty" 1576433820 13807 952b0226d4efca026f0e19dd266dcc22 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/generic/ltxcmds/ltxcmds.sty" 1601732009 18568 4409f8f50cd365c68e684407e5350b1b ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/generic/pdfescape/pdfescape.sty" 1575926700 19007 15924f7228aca6c6d184b115f4baa231 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/generic/pdftexcmds/pdftexcmds.sty" 1623001677 20089 80423eac55aa175305d35b49e04fe23b ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/generic/uniquecounter/uniquecounter.sty" 1576434012 7008 f92eaa0a3872ed622bbf538217cd2ab7 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/generic/xkeyval/xkeyval.tex" 1623002090 19231 3cbf682090baecad8e17a66b7a271ed1 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/generic/xkeyval/xkvutils.tex" 1623002090 7677 cf3e6aa6a8d444f55327f61df80bfa0c ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/00miktex/epstopdf-sys.cfg" 1616067285 584 2a1075dd71571459f59146da9f7502ad ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/amscls/amsthm.sty" 1591020009 12594 0d51ac3a545aaaa555021326ff22a6cc ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/amsfonts/amsfonts.sty" 1358197772 5949 3f3fd50a8cc94c3d4cbf4fc66cd3df1c ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/amsfonts/amssymb.sty" 1358197772 13829 94730e64147574077f8ecfea9bb69af4 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/amsfonts/umsa.fd" 1358197772 961 6518c6525a34feb5e8250ffa91731cff ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/amsfonts/umsb.fd" 1358197772 961 d02606146ba5601b5645f987c92e6193 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/amsmath/amsbsy.sty" 1636824341 2222 da905dc1db75412efd2d8f67739f0596 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/amsmath/amsgen.sty" 1636824342 4173 bc0410bcccdff806d6132d3c1ef35481 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/amsmath/amsmath.sty" 1636824342 87648 07fbb6e9169e00cb2a2f40b31b2dbf3c ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/amsmath/amsopn.sty" 1636824343 4128 8eea906621b6639f7ba476a472036bbe ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/amsmath/amstext.sty" 1636824343 2444 926f379cc60fcf0c6e3fee2223b4370d ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/arabi/bblopts.cfg" 1139961600 902 c30e5c373bc58bde21f8f63a3091626f ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/atveryend/atveryend.sty" 1576101110 19336 ce7ae9438967282886b3b036cfad1e4d ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/auxhook/auxhook.sty" 1576538732 3935 57aa3c3e203a5c2effb4d2bd2efbc323 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/babel-english/english.ldf" 1622998066 7008 9ff5fdcc865b01beca2b0fe4a46231d4 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/base/alltt.sty" 1638775084 3137 2366459cfce784001c7405ed16a872fb ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/base/atbegshi-ltx.sty" 1638775084 3034 3bfb87122e6fa8758225c0dd3cbaceba ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/base/atveryend-ltx.sty" 1638775084 2462 754d6b31b2ab5a09bb72c348ace2ec75 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/base/fontenc.sty" 1638775084 4946 461cc78f6f26901410d9f1d725079cc6 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/base/ifthen.sty" 1638775084 5157 f308c7c04889e16c588e78aa42599fae ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/base/inputenc.sty" 1638775084 5049 969aec05d5f39c43f8005910498fcf90 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/base/makeidx.sty" 1638775082 1939 e44505a18ba4edebb8b70993e32c6350 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/base/report.cls" 1638775084 23203 8fbc410e29d3fd675970d5f9698c9c11 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/base/size10.clo" 1638775084 8448 96f18c76bf608a36ee6fbf021ac1dd32 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/base/t1cmss.fd" 1638775084 2621 95d97d14f2ca40d81472d6fd62553199 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/base/t1cmtt.fd" 1638775084 2443 6dd9a5deeddddfcceb01d1932590ebad ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/base/textcomp.sty" 1638775084 2894 55431114fc0e491ecee275edafd6c881 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/base/ts1cmtt.fd" 1638775082 2287 321c9b3e7f8038f483d2c21d3393e4fe ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/capt-of/capt-of.sty" 1264504665 1344 063f8536a047a2d9cb1803321f793f37 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/cmap/cmap.sty" 1612609498 3574 ddc11a0ae1c579d351ed20d2319ad422 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/cmap/ot1.cmap" 1612609498 1207 4e0d96772f0d338847cbfb4eca683c81 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/cmap/t1.cmap" 1612609498 1938 beaa4a8467aa0074076e0e19f2992e29 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/datetime/datetime-defaults.sty" 1429533782 4215 4c80eaed8cd4f9a80cc6244c0adeb81f ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/datetime/datetime.sty" 1429533782 28417 b023ffe1328fa89e7f133201d87029de ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/enumitem/enumitem.sty" 1561036220 51697 f8f08183cd2080d9d18a41432d651dfb ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/epigraph/epigraph.sty" 1578053510 4738 e947be1727d6ac747322008f8359ee17 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/epstopdf-pkg/epstopdf-base.sty" 1622999586 13886 d1306dcf79a944f6988e688c1785f9ce ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/eso-pic/eso-pic.sty" 1607182970 11772 8d0db0794e6aeb45348f60bbe3a3e093 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/etoolbox/etoolbox.sty" 1601894156 46845 3b58f70c6e861a13d927bff09d35ecbc ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/fancyhdr/fancyhdr.sty" 1612001844 17086 7ed8cbc4d361ec87392817e0dd4f65ec ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/fancyvrb/fancyvrb.sty" 1640113799 44023 c6f2f55a2bb9630fba10bfd488a5addd ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/float/float.sty" 1469020353 6916 16d2656a1984957e674b149555f1ea1d ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/fmtcount/fc-english.def" 1582571040 14870 f66b7dd28616119c2519cd5cc4dcae14 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/fmtcount/fcnumparser.sty" 1582571040 12791 43a81443714469abac77ce09f44ad2e2 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/fmtcount/fcprefix.sty" 1582571040 12519 5c732241af77b5f0e56e640b7d538395 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/fmtcount/fmtcount.sty" 1582571040 32021 ed70d543c537f19c96fc753321f1c3cc ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/fncychap/fncychap.sty" 1291943048 19488 fdd52eb173b3197d748e1ec25acb042f ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/footnotebackref/footnotebackref.sty" 1341124290 2729 a95b43c08b818612edc645e42967b2a2 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/framed/framed.sty" 1338538572 22449 7ec15c16d0d66790f28e90343c5434a3 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/geometry/geometry.cfg" 1578053545 1104 7ac475a4e3466b0b43e138e9356bda83 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/geometry/geometry.sty" 1578053545 42759 9cf6c5257b1bc7af01a58859749dd37a ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/graphics-cfg/color.cfg" 1465890692 1213 620bba36b25224fa9b7e1ccb4ecb76fd ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/graphics-cfg/graphics.cfg" 1465890692 1224 978390e9c2234eab29404bc21b268d1e ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/graphics-def/pdftex.def" 1637518328 19103 48d29b6e2a64cb717117ef65f107b404 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/graphics/color.sty" 1639593010 7197 eb6c1ebf41667a05cb50c23c19d5e8bc ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/graphics/graphics.sty" 1639593010 18399 7e40f80366dffb22c0e7b70517db5cb4 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/graphics/graphicx.sty" 1639593010 7996 a8fb260d598dcaf305a7ae7b9c3e3229 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/graphics/keyval.sty" 1639593011 2671 4de6781a30211fe0ea4c672e4a2a8166 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/graphics/trig.sty" 1639593011 4009 187ea2dc3194cd5a76cd99a8d7a6c4d0 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/hycolor/hycolor.sty" 1580380792 18571 4c28a13fc3d975e6e81c9bea1d697276 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/hyperref/hpdftex.def" 1623054242 49890 0bb76a5b745d92e86aed6f3f93e334f0 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/hyperref/hyperref-langpatches.def" 1623054242 1777 940b1aa83773bc035eb882e8d6842769 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/hyperref/hyperref.sty" 1623054242 230915 97a8817f13de4e61bbc3592cb2caa995 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/hyperref/nameref.sty" 1623054242 13242 133e617c5eebffdd05e421624022b267 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/hyperref/pd1enc.def" 1623054242 14132 c9404e8e78123ef0d1007c34d1d6da51 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/hyperref/puenc.def" 1623054242 117004 86586f287ddfad919a0a4bd68934277a ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/kvoptions/kvoptions.sty" 1602224496 22521 d2fceb764a442a2001d257ef11db7618 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/l3backend/l3backend-pdftex.def" 1639465870 29971 0fb19a39718d289d512ef2f074f16cc2 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/l3kernel/expl3.sty" 1637595832 6208 8e07b49f15e79668e492fab98378014d ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/l3packages/l3keys2e/l3keys2e.sty" 1636720796 4674 175cd58a3276550cf236fd19e68aba45 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/letltxmacro/letltxmacro.sty" 1575399536 5766 13a9e8766c47f30327caf893ece86ac8 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/lipsum/lipsum.ltd.tex" 1633250122 95525 6fd0552101a6b1f9b7a84b402ec435ba ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/lipsum/lipsum.sty" 1633250122 14690 c2c754218a7108db7823a4839c1bc3cd ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/mmap/oml.cmap" 1215048213 1866 c1c12138091b4a8edd4a24a940e6f792 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/mmap/oms.cmap" 1215048213 2370 3b1f71b14b974f07cef532db09ae9ee0 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/mmap/omx.cmap" 1215048260 3001 252c8ca42b06a22cb1a11c0e47790c6e ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/needspace/needspace.sty" 1364792977 852 0e34dbb72efc69fa07602405ad95585e ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/nextpage/nextpage.sty" 1251937171 1745 04b0f50af5d59a9cf3c17f3f4452ed12 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/oberdiek/hypcap.sty" 1637060716 3822 b53c749cd81352b4679a35b0dafefb95 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/parskip/parskip-2001-04-09.sty" 1615716820 2757 ea00cb4f4e9abc702916f74d3812ef67 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/parskip/parskip.sty" 1615976160 4288 94714aa7f535440f33181fec52a31963 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/refcount/refcount.sty" 1576433952 9878 9e94e8fa600d95f9c7731bb21dfb67a4 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/rerunfilecheck/rerunfilecheck.sty" 1575571282 9715 b051d5b493d9fe5f4bc251462d039e5f ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/setspace/setspace.sty" 1324294077 22913 a27d7908fc6f0385466454a966a316eb ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/tabulary/tabulary.sty" 1403515508 14242 8c83287d79183c3bf58fd70871e8a70b ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/titlesec/titlesec.sty" 1625494067 48833 3b7b4cfab1a3d15596bfd3772a77ab65 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/tocbibind/tocbibind.sty" 1286954396 8927 46f54e33fc9cef24f78ab3bc811cb63f ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/tools/array.sty" 1636710260 12694 6c23725d50ab9d1e2d3ce482c58ffcf3 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/tools/longtable.sty" 1636710260 12892 3ffe092fc7f5d1cb9866f1bcb071d0d6 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/tools/multicol.sty" 1636710260 32262 2bb622a0aa56c4a7a5cbdfe9d122c15a ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/transparent/transparent.sty" 1575059884 4155 541de118e0abc42fce3317addc90afb0 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/upquote/upquote.sty" 1335531156 1088 517e01cde97c1c0baf72e69d43aa5a2e ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/url/url.sty" 1388490452 12796 8edb7d69a20b857904dd0ea757c14ec9 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/varwidth/varwidth.sty" 1238465940 10894 d359a13923460b2a73d4312d613554c8 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/wrapfig/wrapfig.sty" 1044403200 26220 3701aebf80ccdef248c0c20dd062fea9 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/xcolor/xcolor.sty" 1636284872 56029 3f7889dab51d620aa43177c391b7b190 ""
 | 
			
		||||
  "C:/Users/Thor/AppData/Local/Programs/MiKTeX/tex/latex/xkeyval/xkeyval.sty" 1623002090 4902 efb3d66683a2da2a232f71e3a571a899 ""
 | 
			
		||||
  "MVC_pattern.png" 1644997428 7876 646a6038633703275a2727875edba16a ""
 | 
			
		||||
  "P04_Aufgabenstellung.png" 1644917366 7263 f32bb04e523e9546f9777cbc5463d130 ""
 | 
			
		||||
  "TicTacToe.png" 1644997430 53954 f7d3405a232123a1f8de81ab1faa4a4e ""
 | 
			
		||||
  "Wochentagsberechnung.jpg" 1644919224 15553 3526ef927a880fdd8c095aca9e544b6f ""
 | 
			
		||||
  "a.png" 1644998095 829 93c48111959d27f1bcf856368e58cd64 ""
 | 
			
		||||
  "b.png" 1644998096 1905 d9e5fe1fe0597e8f695a2ec364daa617 ""
 | 
			
		||||
  "c.png" 1644998096 4196 6b6acc128946e5abfc76e28dcc73fc67 ""
 | 
			
		||||
  "coffee_customer.png" 1644999828 5049 852e8343298a5c53ff3083a875ecfbe8 ""
 | 
			
		||||
  "d.png" 1644998097 3353 87a7ad2316a416303812466ce26b70f9 ""
 | 
			
		||||
  "ein_mann_orchester.png" 1644999665 217305 a89e417b00d1e7adc5e17158cd8d8b3e ""
 | 
			
		||||
  "en-zhaw-ines-rgb.png" 1641300576 57463 4d3e5434fd873ef81796cea85238b56c ""
 | 
			
		||||
  "kalender-108_v-ARDFotogalerie.jpg" 1644918852 69510 cc3b70126d66f5bcbb1045c6918a4543 ""
 | 
			
		||||
  "linked_list.png" 1644998098 2921 a44bc849a6f2f25f9fd11f0303aab513 ""
 | 
			
		||||
  "main.aux" 1645084636 34148 2f58faf03b2558dddc3c8b5f56cb14ee "pdflatex"
 | 
			
		||||
  "main.ind" 1645024878 0 d41d8cd98f00b204e9800998ecf8427e "makeindex main.idx"
 | 
			
		||||
  "main.out" 1645084636 23968 6ef42dbae541b613d10db90e85f6476e "pdflatex"
 | 
			
		||||
  "main.tex" 1645084633 153762 c3d44457c25b91e885993afef0ebbf1d ""
 | 
			
		||||
  "main.toc" 1645084636 11305 19480f5dbeb28029e3680675fa29a9a5 "pdflatex"
 | 
			
		||||
  "random_number.png" 1644918675 7457 9ce36e5f5d9ac102987863cba398bdb6 ""
 | 
			
		||||
  "sequence_graph.png" 1644999830 3045 d7f77b908aed90608f903e5b41624b5a ""
 | 
			
		||||
  "sphinx.sty" 1644224256 13262 0226aaccc1147ed884a3946fce78a6d2 ""
 | 
			
		||||
  "sphinxhighlight.sty" 1645084632 6777 8ee39fca897f152770a05a0325c8e603 ""
 | 
			
		||||
  "sphinxlatexadmonitions.sty" 1644224256 6238 2d867d769abf3f72abc17ef52adff78b ""
 | 
			
		||||
  "sphinxlatexcontainers.sty" 1644224256 901 d3a3a1b7b2547f47ade2499350b5c420 ""
 | 
			
		||||
  "sphinxlatexgraphics.sty" 1644224256 4840 a9578332b6f3b35e198751fb632c9b79 ""
 | 
			
		||||
  "sphinxlatexindbibtoc.sty" 1644224256 2066 b93f8504d02f6337fde3074b179de55e ""
 | 
			
		||||
  "sphinxlatexlists.sty" 1644224256 3540 28bde24363589dd8238e1c3089e5b1b5 ""
 | 
			
		||||
  "sphinxlatexliterals.sty" 1644224256 35719 daaa4295be807130a5df36ead18b83fa ""
 | 
			
		||||
  "sphinxlatexnumfig.sty" 1644224256 4532 3633caf84afa1a98e1a060b7868202bb ""
 | 
			
		||||
  "sphinxlatexobjects.sty" 1644224256 7539 5bd439fe3b377102e234413cf4aac14a ""
 | 
			
		||||
  "sphinxlatexshadowbox.sty" 1644224256 3885 01355157c5580b34ec18031ea7a5e0e0 ""
 | 
			
		||||
  "sphinxlatexstyleheadings.sty" 1644224256 3253 144b82f37e9d225d888cce45c19b8ed4 ""
 | 
			
		||||
  "sphinxlatexstylepage.sty" 1644224256 3064 abce6c3018a84afee0afb08a431944ea ""
 | 
			
		||||
  "sphinxlatexstyletext.sty" 1644224256 6177 c18841ce3fafc366cd3b145f8faa4c37 ""
 | 
			
		||||
  "sphinxlatextables.sty" 1644224256 21848 2827eb0b11b99b185a8b77317d3e131c ""
 | 
			
		||||
  "sphinxmessages.sty" 1645084633 765 3f5fcd6cdd7964ed608767954a8ced6f ""
 | 
			
		||||
  "sphinxoptionsgeometry.sty" 1644224256 2061 47bb34b8ed8a78823eb0c886abfb9f4d ""
 | 
			
		||||
  "sphinxoptionshyperref.sty" 1644224256 1094 79beb8b8a3f10784f8cce804e0f9d3aa ""
 | 
			
		||||
  "sphinxpackagefootnote.sty" 1644224256 13248 e2c77871396275ccf592403f8130f6f2 ""
 | 
			
		||||
  "synchronisationsprobleme.png" 1644999832 259198 c789607c889a43f0353fee8b2d3dc4dd ""
 | 
			
		||||
  (generated)
 | 
			
		||||
  "main.aux"
 | 
			
		||||
  "main.idx"
 | 
			
		||||
  "main.log"
 | 
			
		||||
  "main.out"
 | 
			
		||||
  "main.pdf"
 | 
			
		||||
  "main.toc"
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,5 @@
 | 
			
		|||
This is makeindex, version 2.16 [MiKTeX 21.12.10].
 | 
			
		||||
Scanning style file ./python.ist.......done (7 attributes redefined, 0 ignored).
 | 
			
		||||
Scanning input file main.idx...done (0 entries accepted, 0 rejected).
 | 
			
		||||
Nothing written in main.ind.
 | 
			
		||||
Transcript written in main.ilg.
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,121 @@
 | 
			
		|||
\BOOKMARK [0][-]{chapter*.1}{\376\377\000T\000a\000b\000l\000e\000\040\000o\000f\000\040\000c\000o\000n\000t\000e\000n\000t\000s}{}% 1
 | 
			
		||||
\BOOKMARK [0][-]{chapter.1}{\376\377\0000\0001\000\040\000-\000\040\000E\000r\000s\000t\000e\000\040\000S\000c\000h\000r\000i\000t\000t\000e\000\040\000m\000i\000t\000\040\000C}{}% 2
 | 
			
		||||
\BOOKMARK [1][-]{section.1.1}{\376\377\0001\000.\000\040\000\334\000b\000e\000r\000s\000i\000c\000h\000t}{chapter.1}% 3
 | 
			
		||||
\BOOKMARK [1][-]{section.1.2}{\376\377\0002\000.\000\040\000L\000e\000r\000n\000z\000i\000e\000l\000e}{chapter.1}% 4
 | 
			
		||||
\BOOKMARK [1][-]{section.1.3}{\376\377\0003\000.\000\040\000A\000u\000f\000g\000a\000b\000e\000\040\0001\000:\000\040\000v\000i\000r\000t\000u\000e\000l\000l\000e\000\040\000M\000a\000s\000c\000h\000i\000n\000e}{chapter.1}% 5
 | 
			
		||||
\BOOKMARK [1][-]{section.1.4}{\376\377\0004\000.\000\040\000A\000u\000f\000g\000a\000b\000e\000\040\0002\000:\000\040\000H\000e\000l\000l\000o\000\040\000W\000o\000r\000l\000d}{chapter.1}% 6
 | 
			
		||||
\BOOKMARK [1][-]{section.1.5}{\376\377\0005\000.\000\040\000A\000u\000f\000g\000a\000b\000e\000\040\0003\000:\000\040\000T\000a\000b\000e\000l\000l\000e\000n\000a\000u\000s\000g\000a\000b\000e}{chapter.1}% 7
 | 
			
		||||
\BOOKMARK [1][-]{section.1.6}{\376\377\0006\000.\000\040\000A\000u\000f\000g\000a\000b\000e\000\040\0004\000:\000\040\000Z\000e\000i\000c\000h\000e\000n\000\040\000u\000n\000d\000\040\000W\000\366\000r\000t\000e\000r\000\040\000z\000\344\000h\000l\000e\000n}{chapter.1}% 8
 | 
			
		||||
\BOOKMARK [1][-]{section.1.7}{\376\377\0007\000.\000\040\000B\000e\000w\000e\000r\000t\000u\000n\000g}{chapter.1}% 9
 | 
			
		||||
\BOOKMARK [0][-]{chapter.2}{\376\377\0000\0002\000:\000\040\000F\000u\000n\000k\000t\000i\000o\000n\000e\000n\000,\000\040\000D\000a\000t\000e\000n\000t\000y\000p\000\040\040\034\000e\000n\000u\000m\040\035}{}% 10
 | 
			
		||||
\BOOKMARK [1][-]{section.2.1}{\376\377\0001\000.\000\040\000\334\000b\000e\000r\000s\000i\000c\000h\000t}{chapter.2}% 11
 | 
			
		||||
\BOOKMARK [1][-]{section.2.2}{\376\377\0002\000.\000\040\000L\000e\000r\000n\000z\000i\000e\000l\000e}{chapter.2}% 12
 | 
			
		||||
\BOOKMARK [1][-]{section.2.3}{\376\377\0003\000.\000\040\000A\000u\000f\000g\000a\000b\000e\000n}{chapter.2}% 13
 | 
			
		||||
\BOOKMARK [2][-]{subsection.2.3.1}{\376\377\0003\000.\0001\000\040\000A\000u\000f\000g\000a\000b\000e\000\040\0001\000\040\000T\000a\000g\000e\000\040\000p\000r\000o\000\040\000M\000o\000n\000a\000t}{section.2.3}% 14
 | 
			
		||||
\BOOKMARK [2][-]{subsection.2.3.2}{\376\377\0003\000.\0002\000\040\000A\000u\000f\000g\000a\000b\000e\000\040\0002\000\040\000B\000e\000s\000t\000i\000m\000m\000e\000n\000\040\000d\000e\000s\000\040\000W\000o\000c\000h\000e\000n\000t\000a\000g\000s}{section.2.3}% 15
 | 
			
		||||
\BOOKMARK [3][-]{subsubsection.2.3.2.1}{\376\377\0003\000.\0002\000.\0001\000\040\000T\000e\000i\000l\000a\000u\000f\000g\000a\000b\000e\000\040\000A\000r\000g\000u\000m\000e\000n\000t\000e\000\040\000P\000a\000r\000s\000e\000n\000\040\000u\000n\000d\000\040\000a\000u\000f\000\040\000K\000o\000r\000r\000e\000k\000t\000h\000e\000i\000t\000\040\000p\000r\000\374\000f\000e\000n}{subsection.2.3.2}% 16
 | 
			
		||||
\BOOKMARK [4][-]{paragraph*.3}{\376\377\0003\000.\0002\000.\0001\000.\0001\000\040\000A\000r\000g\000u\000m\000e\000n\000t\000\040\000F\000o\000r\000m\000a\000t}{subsubsection.2.3.2.1}% 17
 | 
			
		||||
\BOOKMARK [4][-]{paragraph*.4}{\376\377\0003\000.\0002\000.\0001\000.\0002\000\040\000K\000o\000r\000r\000e\000k\000t\000e\000s\000\040\000D\000a\000t\000u\000m}{subsubsection.2.3.2.1}% 18
 | 
			
		||||
\BOOKMARK [4][-]{paragraph*.5}{\376\377\0003\000.\0002\000.\0001\000.\0003\000\040\000V\000o\000r\000g\000a\000b\000e\000n\000\040\000a\000n\000\040\000d\000i\000e\000\040\000U\000m\000s\000e\000t\000z\000u\000n\000g}{subsubsection.2.3.2.1}% 19
 | 
			
		||||
\BOOKMARK [4][-]{paragraph*.6}{\376\377\0003\000.\0002\000.\0001\000.\0004\000\040\000H\000i\000n\000w\000e\000i\000s\000e}{subsubsection.2.3.2.1}% 20
 | 
			
		||||
\BOOKMARK [3][-]{subsubsection.2.3.2.2}{\376\377\0003\000.\0002\000.\0002\000\040\000T\000e\000i\000l\000a\000u\000f\000g\000a\000b\000e\000\040\000W\000o\000c\000h\000e\000n\000t\000a\000g\000\040\000B\000e\000r\000e\000c\000h\000n\000u\000n\000g}{subsection.2.3.2}% 21
 | 
			
		||||
\BOOKMARK [1][-]{section.2.4}{\376\377\0004\000.\000\040\000B\000e\000w\000e\000r\000t\000u\000n\000g}{chapter.2}% 22
 | 
			
		||||
\BOOKMARK [1][-]{section.2.5}{\376\377\0005\000.\000\040\000A\000n\000h\000a\000n\000g}{chapter.2}% 23
 | 
			
		||||
\BOOKMARK [2][-]{subsection.2.5.1}{\376\377\0005\000.\0001\000\040\000S\000p\000r\000a\000c\000h\000\040\000E\000l\000e\000m\000e\000n\000t}{section.2.5}% 24
 | 
			
		||||
\BOOKMARK [2][-]{subsection.2.5.2}{\376\377\0005\000.\0002\000\040\000B\000e\000s\000c\000h\000r\000e\000i\000b\000u\000n\000g}{section.2.5}% 25
 | 
			
		||||
\BOOKMARK [0][-]{chapter.3}{\376\377\0000\0003\000\040\000-\000\040\000B\000i\000t\000\040\000O\000p\000e\000r\000a\000t\000i\000o\000n\000e\000n\000,\000\040\000S\000t\000r\000u\000c\000t\000,\000\040\000T\000y\000p\000e\000d\000e\000f}{}% 26
 | 
			
		||||
\BOOKMARK [1][-]{section.3.1}{\376\377\0001\000.\000\040\000B\000i\000t\000\040\000O\000p\000e\000r\000a\000t\000i\000o\000n\000e\000n}{chapter.3}% 27
 | 
			
		||||
\BOOKMARK [2][-]{subsection.3.1.1}{\376\377\0001\000.\0001\000\040\000\334\000b\000u\000n\000g\000e\000n}{section.3.1}% 28
 | 
			
		||||
\BOOKMARK [3][-]{subsubsection.3.1.1.1}{\376\377\0001\000.\000\040\000B\000a\000s\000i\000s\000\040\000O\000p\000e\000r\000a\000t\000i\000o\000n\000e\000n}{subsection.3.1.1}% 29
 | 
			
		||||
\BOOKMARK [3][-]{subsubsection.3.1.1.2}{\376\377\0002\000.\000\040\000V\000a\000r\000i\000a\000b\000l\000e\000n\000\040\000t\000a\000u\000s\000c\000h\000e\000n\000\040\000\050\000o\000h\000n\000e\000\040\000D\000r\000i\000t\000t\000-\000V\000a\000r\000i\000a\000b\000l\000e\000\051}{subsection.3.1.1}% 30
 | 
			
		||||
\BOOKMARK [3][-]{subsubsection.3.1.1.3}{\376\377\0003\000.\000\040\000L\000o\000w\000e\000r\000-\000\040\000/\000\040\000U\000p\000p\000e\000r\000c\000a\000s\000e}{subsection.3.1.1}% 31
 | 
			
		||||
\BOOKMARK [3][-]{subsubsection.3.1.1.4}{\376\377\0004\000.\000\040\000P\000r\000\374\000f\000e\000n\000\040\000a\000u\000f\000\040\0002\000-\000e\000r\000\040\000P\000o\000t\000e\000n\000z}{subsection.3.1.1}% 32
 | 
			
		||||
\BOOKMARK [1][-]{section.3.2}{\376\377\0002\000.\000\040\000S\000t\000r\000u\000c\000t\000\040\000\046\000\040\000t\000y\000p\000e\000d\000e\000f}{chapter.3}% 33
 | 
			
		||||
\BOOKMARK [2][-]{subsection.3.2.1}{\376\377\0002\000.\0001\000\040\000\334\000b\000u\000n\000g\000e\000n}{section.3.2}% 34
 | 
			
		||||
\BOOKMARK [3][-]{subsubsection.3.2.1.1}{\376\377\0001\000.\000\040\000B\000i\000t\000\040\000O\000p\000e\000r\000a\000t\000i\000o\000n\000e\000n\000\040\000R\000e\000c\000h\000n\000e\000r}{subsection.3.2.1}% 35
 | 
			
		||||
\BOOKMARK [0][-]{chapter.4}{\376\377\0000\0004\000\040\000-\000\040\000M\000o\000d\000u\000l\000a\000r\000i\000s\000i\000e\000r\000e\000n\000\040\000v\000o\000n\000\040\000C\000\040\000C\000o\000d\000e}{}% 36
 | 
			
		||||
\BOOKMARK [1][-]{section.4.1}{\376\377\0001\000.\000\040\000\334\000b\000e\000r\000s\000i\000c\000h\000t}{chapter.4}% 37
 | 
			
		||||
\BOOKMARK [1][-]{section.4.2}{\376\377\0002\000.\000\040\000L\000e\000r\000n\000z\000i\000e\000l\000e}{chapter.4}% 38
 | 
			
		||||
\BOOKMARK [1][-]{section.4.3}{\376\377\0003\000.\000\040\000A\000u\000f\000g\000a\000b\000e\000\040\0001\000:\000\040\000M\000o\000d\000u\000l\000a\000r\000i\000s\000i\000e\000r\000e\000n}{chapter.4}% 39
 | 
			
		||||
\BOOKMARK [2][-]{subsection.4.3.1}{\376\377\0003\000.\0001\000\040\000T\000e\000i\000l\000a\000u\000f\000g\000a\000b\000e\000\040\000M\000o\000d\000u\000l\000e\000s\000\040\000e\000i\000n\000b\000i\000n\000d\000e\000n\000,\000\040\000H\000e\000a\000d\000e\000r\000\040\000F\000i\000l\000e\000s\000\040\000s\000c\000h\000r\000e\000i\000b\000e\000n}{section.4.3}% 40
 | 
			
		||||
\BOOKMARK [1][-]{section.4.4}{\376\377\0004\000.\000\040\000A\000u\000f\000g\000a\000b\000e\000\040\0002\000:\000\040\000M\000a\000k\000e\000f\000i\000l\000e\000\040\000R\000e\000g\000e\000l\000n}{chapter.4}% 41
 | 
			
		||||
\BOOKMARK [2][-]{subsection.4.4.1}{\376\377\0004\000.\0001\000\040\000N\000e\000u\000e\000\040\000R\000e\000g\000e\000l\000n\000\040\000h\000i\000n\000z\000u\000f\000\374\000g\000e\000n}{section.4.4}% 42
 | 
			
		||||
\BOOKMARK [1][-]{section.4.5}{\376\377\0005\000.\000\040\000A\000u\000f\000g\000a\000b\000e\000\040\0003}{chapter.4}% 43
 | 
			
		||||
\BOOKMARK [1][-]{section.4.6}{\376\377\0006\000.\000\040\000B\000e\000w\000e\000r\000t\000u\000n\000g}{chapter.4}% 44
 | 
			
		||||
\BOOKMARK [1][-]{section.4.7}{\376\377\0007\000.\000\040\000E\000r\000w\000e\000i\000t\000e\000r\000u\000n\000g\000\040\000D\000o\000x\000y\000f\000i\000l\000e\000\040\000f\000\374\000r\000\040\000A\000b\000h\000\344\000n\000g\000i\000g\000k\000e\000i\000t\000s\000a\000n\000a\000l\000y\000s\000e}{chapter.4}% 45
 | 
			
		||||
\BOOKMARK [0][-]{chapter.5}{\376\377\0000\0005\000\040\000-\000\040\000A\000r\000r\000a\000y\000s\000/\000S\000t\000r\000i\000n\000g\000s\000/\000T\000i\000c\000T\000a\000c\000T\000o\000e}{}% 46
 | 
			
		||||
\BOOKMARK [1][-]{section.5.1}{\376\377\0001\000.\000\040\000\334\000b\000e\000r\000s\000i\000c\000h\000t}{chapter.5}% 47
 | 
			
		||||
\BOOKMARK [1][-]{section.5.2}{\376\377\0002\000.\000\040\000L\000e\000r\000n\000z\000i\000e\000l\000e}{chapter.5}% 48
 | 
			
		||||
\BOOKMARK [1][-]{section.5.3}{\376\377\0003\000.\000\040\000A\000u\000f\000g\000a\000b\000e\000\040\0001\000:\000\040\000S\000o\000r\000t\000i\000e\000r\000e\000n\000\040\000v\000o\000n\000\040\000S\000t\000r\000i\000n\000g\000s}{chapter.5}% 49
 | 
			
		||||
\BOOKMARK [1][-]{section.5.4}{\376\377\0004\000.\000\040\000A\000u\000f\000g\000a\000b\000e\000\040\0002\000:\000\040\000T\000i\000c\000T\000a\000c\000T\000o\000e}{chapter.5}% 50
 | 
			
		||||
\BOOKMARK [2][-]{subsection.5.4.1}{\376\377\0004\000.\0001\000\040\000T\000e\000i\000l\000a\000u\000f\000g\000a\000b\000e\000\040\000t\000e\000s\000t\000\137\000m\000o\000d\000e\000l\000\137\000i\000n\000i\000t}{section.5.4}% 51
 | 
			
		||||
\BOOKMARK [2][-]{subsection.5.4.2}{\376\377\0004\000.\0002\000\040\000T\000e\000i\000l\000a\000u\000f\000g\000a\000b\000e\000\040\000t\000e\000s\000t\000\137\000m\000o\000d\000e\000l\000\137\000g\000e\000t\000\137\000s\000t\000a\000t\000e\000\040\000u\000n\000d\000\040\000t\000e\000s\000t\000\137\000m\000o\000d\000e\000l\000\137\000g\000e\000t\000\137\000w\000i\000n\000n\000e\000r}{section.5.4}% 52
 | 
			
		||||
\BOOKMARK [2][-]{subsection.5.4.3}{\376\377\0004\000.\0003\000\040\000T\000e\000i\000l\000a\000u\000f\000g\000a\000b\000e\000\040\000t\000e\000s\000t\000\137\000m\000o\000d\000e\000l\000\137\000c\000a\000n\000\137\000m\000o\000v\000e}{section.5.4}% 53
 | 
			
		||||
\BOOKMARK [2][-]{subsection.5.4.4}{\376\377\0004\000.\0004\000\040\000T\000e\000i\000l\000a\000u\000f\000g\000a\000b\000e\000\040\000t\000e\000s\000t\000\137\000m\000o\000d\000e\000l\000\137\000m\000o\000v\000e\000\040\000u\000n\000d\000\040\000t\000e\000s\000t\000\137\000m\000o\000d\000e\000l\000\137\000g\000e\000t\000\137\000w\000i\000n\000\137\000l\000i\000n\000e}{section.5.4}% 54
 | 
			
		||||
\BOOKMARK [1][-]{section.5.5}{\376\377\0005\000.\000\040\000B\000e\000w\000e\000r\000t\000u\000n\000g}{chapter.5}% 55
 | 
			
		||||
\BOOKMARK [0][-]{chapter.6}{\376\377\0000\0006\000\040\000-\000\040\000P\000e\000r\000s\000o\000n\000e\000n\000\040\000V\000e\000r\000w\000a\000l\000t\000u\000n\000g\000\040\040\023\000\040\000L\000i\000n\000k\000e\000d\000\040\000L\000i\000s\000t}{}% 56
 | 
			
		||||
\BOOKMARK [1][-]{section.6.1}{\376\377\0001\000.\000\040\000\334\000b\000e\000r\000s\000i\000c\000h\000t}{chapter.6}% 57
 | 
			
		||||
\BOOKMARK [1][-]{section.6.2}{\376\377\0002\000.\000\040\000L\000e\000r\000n\000z\000i\000e\000l\000e}{chapter.6}% 58
 | 
			
		||||
\BOOKMARK [1][-]{section.6.3}{\376\377\0003\000.\000\040\000P\000e\000r\000s\000o\000n\000e\000n\000v\000e\000r\000w\000a\000l\000t\000u\000n\000g}{chapter.6}% 59
 | 
			
		||||
\BOOKMARK [2][-]{subsection.6.3.1}{\376\377\0003\000.\0001\000\040\000P\000r\000o\000g\000r\000a\000m\000m\000f\000u\000n\000k\000t\000i\000o\000n}{section.6.3}% 60
 | 
			
		||||
\BOOKMARK [2][-]{subsection.6.3.2}{\376\377\0003\000.\0002\000\040\000D\000e\000s\000i\000g\000n\000v\000o\000r\000g\000a\000b\000e\000n}{section.6.3}% 61
 | 
			
		||||
\BOOKMARK [2][-]{subsection.6.3.3}{\376\377\0003\000.\0003\000\040\000B\000e\000s\000t\000e\000h\000e\000n\000d\000e\000r\000\040\000P\000r\000o\000g\000r\000a\000m\000m\000r\000a\000h\000m\000e\000n}{section.6.3}% 62
 | 
			
		||||
\BOOKMARK [1][-]{section.6.4}{\376\377\0004\000.\000\040\000A\000u\000f\000g\000a\000b\000e\000\040\0001\000:\000\040\000M\000o\000d\000u\000l\000a\000r\000i\000s\000i\000e\000r\000u\000n\000g\000\040\040\023\000\040\000A\000P\000I\000\040\000u\000n\000d\000\040\000I\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n\000\040\000m\000a\000i\000n\000.\000c}{chapter.6}% 63
 | 
			
		||||
\BOOKMARK [1][-]{section.6.5}{\376\377\0005\000.\000\040\000A\000u\000f\000g\000a\000b\000e\000\040\0002\000:\000\040\000I\000m\000p\000l\000e\000m\000e\000n\000t\000i\000e\000r\000u\000n\000g\000\040\000v\000o\000n\000\040\000p\000e\000r\000s\000o\000n\000.\000c\000\040\000u\000n\000d\000\040\000l\000i\000s\000t\000.\000c}{chapter.6}% 64
 | 
			
		||||
\BOOKMARK [2][-]{subsection.6.5.1}{\376\377\0005\000.\0001\000\040\000T\000e\000i\000l\000a\000u\000f\000g\000a\000b\000e\000:\000\040\000I\000m\000p\000l\000e\000m\000e\000n\000t\000i\000e\000r\000u\000n\000g\000\040\000v\000o\000n\000\040\000p\000e\000r\000s\000o\000n\000.\000c}{section.6.5}% 65
 | 
			
		||||
\BOOKMARK [2][-]{subsection.6.5.2}{\376\377\0005\000.\0002\000\040\000T\000e\000i\000l\000a\000u\000f\000g\000a\000b\000e\000:\000\040\000I\000m\000p\000l\000e\000m\000e\000n\000t\000i\000e\000r\000u\000n\000g\000\040\000v\000o\000n\000\040\000l\000i\000s\000t\000.\000c}{section.6.5}% 66
 | 
			
		||||
\BOOKMARK [1][-]{section.6.6}{\376\377\0006\000.\000\040\000A\000u\000f\000g\000a\000b\000e\000\040\0003\000:\000\040\000U\000n\000i\000t\000\040\000T\000e\000s\000t\000s}{chapter.6}% 67
 | 
			
		||||
\BOOKMARK [1][-]{section.6.7}{\376\377\0007\000.\000\040\000B\000e\000w\000e\000r\000t\000u\000n\000g}{chapter.6}% 68
 | 
			
		||||
\BOOKMARK [0][-]{chapter.7}{\376\377\0000\0007\000\040\000-\000\040\000P\000r\000o\000z\000e\000s\000s\000e\000\040\000u\000n\000d\000\040\000T\000h\000r\000e\000a\000d\000s}{}% 69
 | 
			
		||||
\BOOKMARK [1][-]{section.7.1}{\376\377\0001\000.\000\040\000\334\000b\000e\000r\000s\000i\000c\000h\000t}{chapter.7}% 70
 | 
			
		||||
\BOOKMARK [2][-]{subsection.7.1.1}{\376\377\0001\000.\0001\000\040\000N\000a\000c\000h\000w\000e\000i\000s}{section.7.1}% 71
 | 
			
		||||
\BOOKMARK [1][-]{section.7.2}{\376\377\0002\000.\000\040\000L\000e\000r\000n\000z\000i\000e\000l\000e}{chapter.7}% 72
 | 
			
		||||
\BOOKMARK [1][-]{section.7.3}{\376\377\0003\000.\000\040\000A\000u\000f\000g\000a\000b\000e\000n}{chapter.7}% 73
 | 
			
		||||
\BOOKMARK [2][-]{subsection.7.3.1}{\376\377\0003\000.\0001\000\040\000A\000u\000f\000g\000a\000b\000e\000\040\0001\000:\000\040\000P\000r\000o\000z\000e\000s\000s\000\040\000m\000i\000t\000\040\000f\000o\000r\000k\000\050\000\051\000\040\000e\000r\000z\000e\000u\000g\000e\000n}{section.7.3}% 74
 | 
			
		||||
\BOOKMARK [2][-]{subsection.7.3.2}{\376\377\0003\000.\0002\000\040\000A\000u\000f\000g\000a\000b\000e\000\040\0002\000:\000\040\000P\000r\000o\000z\000e\000s\000s\000\040\000m\000i\000t\000\040\000f\000o\000r\000k\000\050\000\051\000\040\000u\000n\000d\000\040\000e\000x\000e\000c\000\050\000\051\000:\000\040\000P\000r\000o\000g\000r\000a\000m\000m\000\040\000I\000m\000a\000g\000e\000\040\000e\000r\000s\000e\000t\000z\000e\000n}{section.7.3}% 75
 | 
			
		||||
\BOOKMARK [2][-]{subsection.7.3.3}{\376\377\0003\000.\0003\000\040\000A\000u\000f\000g\000a\000b\000e\000\040\0003\000:\000\040\000P\000r\000o\000z\000e\000s\000s\000h\000i\000e\000r\000a\000r\000c\000h\000i\000e\000\040\000a\000n\000a\000l\000y\000s\000i\000e\000r\000e\000n}{section.7.3}% 76
 | 
			
		||||
\BOOKMARK [2][-]{subsection.7.3.4}{\376\377\0003\000.\0004\000\040\000A\000u\000f\000g\000a\000b\000e\000\040\0004\000:\000\040\000Z\000e\000i\000t\000l\000i\000c\000h\000e\000r\000\040\000A\000b\000l\000a\000u\000f\000\040\000v\000o\000n\000\040\000P\000r\000o\000z\000e\000s\000s\000e\000n}{section.7.3}% 77
 | 
			
		||||
\BOOKMARK [2][-]{subsection.7.3.5}{\376\377\0003\000.\0005\000\040\000A\000u\000f\000g\000a\000b\000e\000\040\0005\000:\000\040\000W\000a\000i\000s\000e\000n\000k\000i\000n\000d\000e\000r\000\040\000\050\000O\000r\000p\000h\000a\000n\000\040\000P\000r\000o\000c\000e\000s\000s\000e\000s\000\051}{section.7.3}% 78
 | 
			
		||||
\BOOKMARK [2][-]{subsection.7.3.6}{\376\377\0003\000.\0006\000\040\000A\000u\000f\000g\000a\000b\000e\000\040\0006\000:\000\040\000T\000e\000r\000m\000i\000n\000i\000e\000r\000t\000e\000,\000\040\000h\000a\000l\000b\000t\000o\000t\000e\000\040\000P\000r\000o\000z\000e\000s\000s\000e\000\040\000\050\000Z\000o\000m\000b\000i\000e\000s\000\051}{section.7.3}% 79
 | 
			
		||||
\BOOKMARK [2][-]{subsection.7.3.7}{\376\377\0003\000.\0007\000\040\000A\000u\000f\000g\000a\000b\000e\000\040\0007\000:\000\040\000A\000u\000f\000\040\000T\000e\000r\000m\000i\000n\000i\000e\000r\000e\000n\000\040\000v\000o\000n\000\040\000K\000i\000n\000d\000p\000r\000o\000z\000e\000s\000s\000e\000n\000\040\000w\000a\000r\000t\000e\000n}{section.7.3}% 80
 | 
			
		||||
\BOOKMARK [2][-]{subsection.7.3.8}{\376\377\0003\000.\0008\000\040\000A\000u\000f\000g\000a\000b\000e\000\040\0008\000:\000\040\000K\000i\000n\000d\000p\000r\000o\000z\000e\000s\000s\000\040\000a\000l\000s\000\040\000K\000o\000p\000i\000e\000\040\000d\000e\000s\000\040\000E\000l\000t\000e\000r\000n\000p\000r\000o\000z\000e\000s\000s\000e\000s}{section.7.3}% 81
 | 
			
		||||
\BOOKMARK [2][-]{subsection.7.3.9}{\376\377\0003\000.\0009\000\040\000A\000u\000f\000g\000a\000b\000e\000\040\0009\000:\000\040\000U\000n\000t\000e\000r\000s\000c\000h\000i\000e\000d\000\040\000v\000o\000n\000\040\000T\000h\000r\000e\000a\000d\000s\000\040\000g\000e\000g\000e\000n\000\374\000b\000e\000r\000\040\000P\000r\000o\000z\000e\000s\000s\000e\000n}{section.7.3}% 82
 | 
			
		||||
\BOOKMARK [2][-]{subsection.7.3.10}{\376\377\0003\000.\0001\0000\000\040\000A\000u\000f\000g\000a\000b\000e\000\040\0001\0000\000\040\000\050\000o\000p\000t\000i\000o\000n\000a\000l\000\051\000:}{section.7.3}% 83
 | 
			
		||||
\BOOKMARK [3][-]{subsubsection.7.3.10.1}{\376\377\0003\000.\0001\0000\000.\0001\000\040\000\334\000b\000e\000r\000s\000i\000c\000h\000t}{subsection.7.3.10}% 84
 | 
			
		||||
\BOOKMARK [4][-]{paragraph*.7}{\376\377\0003\000.\0001\0000\000.\0001\000.\0001\000\040\000N\000a\000c\000h\000w\000e\000i\000s}{subsubsection.7.3.10.1}% 85
 | 
			
		||||
\BOOKMARK [3][-]{subsubsection.7.3.10.2}{\376\377\0003\000.\0001\0000\000.\0002\000\040\000L\000e\000r\000n\000z\000i\000e\000l\000e}{subsection.7.3.10}% 86
 | 
			
		||||
\BOOKMARK [3][-]{subsubsection.7.3.10.3}{\376\377\0003\000.\0001\0000\000.\0003\000\040\000A\000u\000f\000g\000a\000b\000e\000:\000\040\000D\000\344\000m\000o\000n\000\040\000P\000r\000o\000z\000e\000s\000s\000e}{subsection.7.3.10}% 87
 | 
			
		||||
\BOOKMARK [3][-]{subsubsection.7.3.10.4}{\376\377\0003\000.\0001\0000\000.\0004\000\040\000Z\000u\000s\000a\000t\000z\000i\000n\000f\000o\000r\000m\000a\000t\000i\000o\000n\000e\000n}{subsection.7.3.10}% 88
 | 
			
		||||
\BOOKMARK [4][-]{paragraph*.8}{\376\377\0003\000.\0001\0000\000.\0004\000.\0001\000\040\000D\000i\000e\000s\000e\000\040\000I\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n}{subsubsection.7.3.10.4}% 89
 | 
			
		||||
\BOOKMARK [4][-]{paragraph*.9}{\376\377\0003\000.\0001\0000\000.\0004\000.\0002\000\040\000Z\000u\000s\000a\000t\000z\000i\000n\000f\000o\000r\000m\000a\000t\000i\000o\000n\000\040\000z\000u\000\040\000D\000\344\000m\000o\000n\000\040\000P\000r\000o\000z\000e\000s\000s\000e\000n}{subsubsection.7.3.10.4}% 90
 | 
			
		||||
\BOOKMARK [1][-]{section.7.4}{\376\377\0004\000.\000\040\000B\000e\000w\000e\000r\000t\000u\000n\000g}{chapter.7}% 91
 | 
			
		||||
\BOOKMARK [0][-]{chapter.8}{\376\377\0000\0008\000\040\000-\000\040\000S\000y\000n\000c\000h\000r\000o\000n\000i\000s\000a\000t\000i\000o\000n\000s\000p\000r\000o\000b\000l\000e\000m\000e}{}% 92
 | 
			
		||||
\BOOKMARK [1][-]{section.8.1}{\376\377\0001\000.\000\040\000\334\000b\000e\000r\000s\000i\000c\000h\000t}{chapter.8}% 93
 | 
			
		||||
\BOOKMARK [2][-]{subsection.8.1.1}{\376\377\0001\000.\0001\000\040\000N\000a\000c\000h\000w\000e\000i\000s}{section.8.1}% 94
 | 
			
		||||
\BOOKMARK [1][-]{section.8.2}{\376\377\0002\000.\000\040\000L\000e\000r\000n\000z\000i\000e\000l\000e}{chapter.8}% 95
 | 
			
		||||
\BOOKMARK [1][-]{section.8.3}{\376\377\0003\000.\000\040\000E\000i\000n\000f\000\374\000h\000r\000u\000n\000g}{chapter.8}% 96
 | 
			
		||||
\BOOKMARK [2][-]{subsection.8.3.1}{\376\377\0003\000.\0001\000\040\000W\000i\000e\000\040\000l\000\366\000s\000t\000\040\000m\000a\000n\000\040\000S\000y\000n\000c\000h\000r\000o\000n\000i\000s\000a\000t\000i\000o\000n\000s\000p\000r\000o\000b\000l\000e\000m\000e\000?}{section.8.3}% 97
 | 
			
		||||
\BOOKMARK [1][-]{section.8.4}{\376\377\0004\000.\000\040\000D\000e\000r\000\040\000K\000a\000f\000f\000e\000e\000-\000A\000u\000t\000o\000m\000a\000t}{chapter.8}% 98
 | 
			
		||||
\BOOKMARK [2][-]{subsection.8.4.1}{\376\377\0004\000.\0001\000\040\000A\000u\000f\000g\000a\000b\000e\000:\000\040\000M\000u\000t\000u\000a\000l\000\040\000E\000x\000c\000l\000u\000s\000i\000o\000n}{section.8.4}% 99
 | 
			
		||||
\BOOKMARK [3][-]{subsubsection.8.4.1.1}{\376\377\000A\000u\000f\000g\000a\000b\000e\000n}{subsection.8.4.1}% 100
 | 
			
		||||
\BOOKMARK [2][-]{subsection.8.4.2}{\376\377\0004\000.\0002\000\040\000A\000u\000f\000g\000a\000b\000e\000:\000\040\000E\000i\000n\000f\000a\000c\000h\000e\000\040\000R\000e\000i\000h\000e\000n\000f\000o\000l\000g\000e}{section.8.4}% 101
 | 
			
		||||
\BOOKMARK [3][-]{subsubsection.8.4.2.1}{\376\377\000A\000u\000f\000g\000a\000b\000e\000n}{subsection.8.4.2}% 102
 | 
			
		||||
\BOOKMARK [2][-]{subsection.8.4.3}{\376\377\0004\000.\0003\000\040\000A\000u\000f\000g\000a\000b\000e\000:\000\040\000E\000r\000w\000e\000i\000t\000e\000r\000t\000e\000\040\000R\000e\000i\000h\000e\000n\000f\000o\000l\000g\000e}{section.8.4}% 103
 | 
			
		||||
\BOOKMARK [3][-]{subsubsection.8.4.3.1}{\376\377\000A\000u\000f\000g\000a\000b\000e}{subsection.8.4.3}% 104
 | 
			
		||||
\BOOKMARK [2][-]{subsection.8.4.4}{\376\377\0004\000.\0004\000\040\000Z\000u\000s\000a\000m\000m\000e\000n\000f\000a\000s\000s\000u\000n\000g}{section.8.4}% 105
 | 
			
		||||
\BOOKMARK [1][-]{section.8.5}{\376\377\0005\000.\000\040\000I\000n\000t\000e\000r\000n\000a\000t\000i\000o\000n\000a\000l\000\040\000B\000a\000n\000k\000i\000n\000g}{chapter.8}% 106
 | 
			
		||||
\BOOKMARK [2][-]{subsection.8.5.1}{\376\377\0005\000.\0001\000\040\000I\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.8.5}% 107
 | 
			
		||||
\BOOKMARK [2][-]{subsection.8.5.2}{\376\377\0005\000.\0002\000\040\000A\000u\000f\000g\000a\000b\000e\000:\000\040\000K\000o\000n\000t\000o\000\040\000S\000y\000n\000c\000h\000r\000o\000n\000i\000s\000a\000t\000i\000o\000n}{section.8.5}% 108
 | 
			
		||||
\BOOKMARK [2][-]{subsection.8.5.3}{\376\377\0005\000.\0003\000\040\000A\000u\000f\000g\000a\000b\000e\000:\000\040\000F\000i\000l\000i\000a\000l\000e\000n\000\040\000Z\000u\000g\000r\000i\000f\000f\000\040\000i\000n\000\040\000C\000r\000i\000t\000i\000c\000a\000l\000\040\000S\000e\000c\000t\000i\000o\000n}{section.8.5}% 109
 | 
			
		||||
\BOOKMARK [2][-]{subsection.8.5.4}{\376\377\0005\000.\0004\000\040\000A\000u\000f\000g\000a\000b\000e\000:\000\040\000R\000e\000f\000a\000c\000t\000o\000r\000i\000n\000g\000\040\000d\000e\000r\000\040\000S\000y\000n\000c\000h\000r\000o\000n\000i\000s\000a\000t\000i\000o\000n}{section.8.5}% 110
 | 
			
		||||
\BOOKMARK [1][-]{section.8.6}{\376\377\0006\000.\000\040\000B\000e\000w\000e\000r\000t\000u\000n\000g}{chapter.8}% 111
 | 
			
		||||
\BOOKMARK [0][-]{chapter.9}{\376\377\0000\0009\000\040\000-\000\040\000F\000i\000l\000e\000\040\000O\000p\000e\000r\000a\000t\000i\000o\000n\000s}{}% 112
 | 
			
		||||
\BOOKMARK [1][-]{section.9.1}{\376\377\0001\000.\000\040\000\334\000b\000e\000r\000s\000i\000c\000h\000t}{chapter.9}% 113
 | 
			
		||||
\BOOKMARK [1][-]{section.9.2}{\376\377\0002\000.\000\040\000L\000e\000r\000n\000z\000i\000e\000l\000e}{chapter.9}% 114
 | 
			
		||||
\BOOKMARK [1][-]{section.9.3}{\376\377\0003\000.\000\040\000A\000u\000f\000g\000a\000b\000e\000\040\0001\000:}{chapter.9}% 115
 | 
			
		||||
\BOOKMARK [1][-]{section.9.4}{\376\377\0004\000.\000\040\000B\000e\000w\000e\000r\000t\000u\000n\000g}{chapter.9}% 116
 | 
			
		||||
\BOOKMARK [0][-]{chapter.10}{\376\377\0001\0000\000\040\000-\000\040\000I\000P\000C}{}% 117
 | 
			
		||||
\BOOKMARK [1][-]{section.10.1}{\376\377\0001\000.\000\040\000\334\000b\000e\000r\000s\000i\000c\000h\000t}{chapter.10}% 118
 | 
			
		||||
\BOOKMARK [1][-]{section.10.2}{\376\377\0002\000.\000\040\000L\000e\000r\000n\000z\000i\000e\000l\000e}{chapter.10}% 119
 | 
			
		||||
\BOOKMARK [1][-]{section.10.3}{\376\377\0003\000.\000\040\000A\000u\000f\000g\000a\000b\000e\000\040\0001\000:}{chapter.10}% 120
 | 
			
		||||
\BOOKMARK [1][-]{section.10.4}{\376\377\0004\000.\000\040\000B\000e\000w\000e\000r\000t\000u\000n\000g}{chapter.10}% 121
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,122 @@
 | 
			
		|||
\babel@toc {english}{}\relax 
 | 
			
		||||
\contentsline {chapter}{Table of contents}{i}{chapter*.1}%
 | 
			
		||||
\contentsline {chapter}{\numberline {1}01 \sphinxhyphen {} Erste Schritte mit C}{1}{chapter.1}%
 | 
			
		||||
\contentsline {section}{\numberline {1.1}1. Übersicht}{1}{section.1.1}%
 | 
			
		||||
\contentsline {section}{\numberline {1.2}2. Lernziele}{1}{section.1.2}%
 | 
			
		||||
\contentsline {section}{\numberline {1.3}3. Aufgabe 1: virtuelle Maschine}{1}{section.1.3}%
 | 
			
		||||
\contentsline {section}{\numberline {1.4}4. Aufgabe 2: Hello World}{2}{section.1.4}%
 | 
			
		||||
\contentsline {section}{\numberline {1.5}5. Aufgabe 3: Tabellenausgabe}{2}{section.1.5}%
 | 
			
		||||
\contentsline {section}{\numberline {1.6}6. Aufgabe 4: Zeichen und Wörter zählen}{3}{section.1.6}%
 | 
			
		||||
\contentsline {section}{\numberline {1.7}7. Bewertung}{3}{section.1.7}%
 | 
			
		||||
\contentsline {chapter}{\numberline {2}02: Funktionen, Datentyp “enum”}{4}{chapter.2}%
 | 
			
		||||
\contentsline {section}{\numberline {2.1}1. Übersicht}{4}{section.2.1}%
 | 
			
		||||
\contentsline {section}{\numberline {2.2}2. Lernziele}{5}{section.2.2}%
 | 
			
		||||
\contentsline {section}{\numberline {2.3}3. Aufgaben}{5}{section.2.3}%
 | 
			
		||||
\contentsline {subsection}{\numberline {2.3.1}3.1 Aufgabe 1 Tage pro Monat}{6}{subsection.2.3.1}%
 | 
			
		||||
\contentsline {subsection}{\numberline {2.3.2}3.2 Aufgabe 2 Bestimmen des Wochentags}{7}{subsection.2.3.2}%
 | 
			
		||||
\contentsline {subsubsection}{\numberline {2.3.2.1}3.2.1 Teilaufgabe Argumente Parsen und auf Korrektheit prüfen}{7}{subsubsection.2.3.2.1}%
 | 
			
		||||
\contentsline {paragraph}{3.2.1.1 Argument Format}{7}{paragraph*.3}%
 | 
			
		||||
\contentsline {paragraph}{3.2.1.2 Korrektes Datum}{7}{paragraph*.4}%
 | 
			
		||||
\contentsline {paragraph}{3.2.1.3 Vorgaben an die Umsetzung}{7}{paragraph*.5}%
 | 
			
		||||
\contentsline {paragraph}{3.2.1.4 Hinweise}{8}{paragraph*.6}%
 | 
			
		||||
\contentsline {subsubsection}{\numberline {2.3.2.2}3.2.2 Teilaufgabe Wochentag Berechnung}{8}{subsubsection.2.3.2.2}%
 | 
			
		||||
\contentsline {section}{\numberline {2.4}4. Bewertung}{8}{section.2.4}%
 | 
			
		||||
\contentsline {section}{\numberline {2.5}5. Anhang}{9}{section.2.5}%
 | 
			
		||||
\contentsline {subsection}{\numberline {2.5.1}5.1 Sprach Element}{9}{subsection.2.5.1}%
 | 
			
		||||
\contentsline {subsection}{\numberline {2.5.2}5.2 Beschreibung}{9}{subsection.2.5.2}%
 | 
			
		||||
\contentsline {chapter}{\numberline {3}03 \sphinxhyphen {} Bit Operationen, Struct, Typedef}{10}{chapter.3}%
 | 
			
		||||
\contentsline {section}{\numberline {3.1}1. Bit Operationen}{10}{section.3.1}%
 | 
			
		||||
\contentsline {subsection}{\numberline {3.1.1}1.1 Übungen}{11}{subsection.3.1.1}%
 | 
			
		||||
\contentsline {subsubsection}{\numberline {3.1.1.1}1. Basis Operationen}{11}{subsubsection.3.1.1.1}%
 | 
			
		||||
\contentsline {subsubsection}{\numberline {3.1.1.2}2. Variablen tauschen (ohne Dritt\sphinxhyphen {}Variable)}{11}{subsubsection.3.1.1.2}%
 | 
			
		||||
\contentsline {subsubsection}{\numberline {3.1.1.3}3. Lower\sphinxhyphen {} / Uppercase}{12}{subsubsection.3.1.1.3}%
 | 
			
		||||
\contentsline {subsubsection}{\numberline {3.1.1.4}4. Prüfen auf 2\sphinxhyphen {}er Potenz}{12}{subsubsection.3.1.1.4}%
 | 
			
		||||
\contentsline {section}{\numberline {3.2}2. Struct \& typedef}{13}{section.3.2}%
 | 
			
		||||
\contentsline {subsection}{\numberline {3.2.1}2.1 Übungen}{13}{subsection.3.2.1}%
 | 
			
		||||
\contentsline {subsubsection}{\numberline {3.2.1.1}1. Bit Operationen Rechner}{13}{subsubsection.3.2.1.1}%
 | 
			
		||||
\contentsline {chapter}{\numberline {4}04 \sphinxhyphen {} Modularisieren von C Code}{14}{chapter.4}%
 | 
			
		||||
\contentsline {section}{\numberline {4.1}1. Übersicht}{14}{section.4.1}%
 | 
			
		||||
\contentsline {section}{\numberline {4.2}2. Lernziele}{14}{section.4.2}%
 | 
			
		||||
\contentsline {section}{\numberline {4.3}3. Aufgabe 1: Modularisieren}{15}{section.4.3}%
 | 
			
		||||
\contentsline {subsection}{\numberline {4.3.1}3.1 Teilaufgabe Modules einbinden, Header Files schreiben}{15}{subsection.4.3.1}%
 | 
			
		||||
\contentsline {section}{\numberline {4.4}4. Aufgabe 2: Makefile Regeln}{16}{section.4.4}%
 | 
			
		||||
\contentsline {subsection}{\numberline {4.4.1}4.1 Neue Regeln hinzufügen}{16}{subsection.4.4.1}%
 | 
			
		||||
\contentsline {section}{\numberline {4.5}5. Aufgabe 3}{16}{section.4.5}%
 | 
			
		||||
\contentsline {section}{\numberline {4.6}6. Bewertung}{16}{section.4.6}%
 | 
			
		||||
\contentsline {section}{\numberline {4.7}7. Erweiterung Doxyfile für Abhängigkeitsanalyse}{16}{section.4.7}%
 | 
			
		||||
\contentsline {chapter}{\numberline {5}05 \sphinxhyphen {} Arrays/Strings/TicTacToe}{18}{chapter.5}%
 | 
			
		||||
\contentsline {section}{\numberline {5.1}1. Übersicht}{18}{section.5.1}%
 | 
			
		||||
\contentsline {section}{\numberline {5.2}2. Lernziele}{18}{section.5.2}%
 | 
			
		||||
\contentsline {section}{\numberline {5.3}3. Aufgabe 1: Sortieren von Strings}{18}{section.5.3}%
 | 
			
		||||
\contentsline {section}{\numberline {5.4}4. Aufgabe 2: TicTacToe}{19}{section.5.4}%
 | 
			
		||||
\contentsline {subsection}{\numberline {5.4.1}4.1 Teilaufgabe test\_model\_init}{20}{subsection.5.4.1}%
 | 
			
		||||
\contentsline {subsection}{\numberline {5.4.2}4.2 Teilaufgabe test\_model\_get\_state und test\_model\_get\_winner}{21}{subsection.5.4.2}%
 | 
			
		||||
\contentsline {subsection}{\numberline {5.4.3}4.3 Teilaufgabe test\_model\_can\_move}{22}{subsection.5.4.3}%
 | 
			
		||||
\contentsline {subsection}{\numberline {5.4.4}4.4 Teilaufgabe test\_model\_move und test\_model\_get\_win\_line}{22}{subsection.5.4.4}%
 | 
			
		||||
\contentsline {section}{\numberline {5.5}5. Bewertung}{23}{section.5.5}%
 | 
			
		||||
\contentsline {chapter}{\numberline {6}06 \sphinxhyphen {} Personen Verwaltung \textendash {} Linked List}{24}{chapter.6}%
 | 
			
		||||
\contentsline {section}{\numberline {6.1}1. Übersicht}{24}{section.6.1}%
 | 
			
		||||
\contentsline {section}{\numberline {6.2}2. Lernziele}{25}{section.6.2}%
 | 
			
		||||
\contentsline {section}{\numberline {6.3}3. Personenverwaltung}{25}{section.6.3}%
 | 
			
		||||
\contentsline {subsection}{\numberline {6.3.1}3.1 Programmfunktion}{25}{subsection.6.3.1}%
 | 
			
		||||
\contentsline {subsection}{\numberline {6.3.2}3.2 Designvorgaben}{25}{subsection.6.3.2}%
 | 
			
		||||
\contentsline {subsection}{\numberline {6.3.3}3.3 Bestehender Programmrahmen}{28}{subsection.6.3.3}%
 | 
			
		||||
\contentsline {section}{\numberline {6.4}4. Aufgabe 1: Modularisierung \textendash {} API und Implementation main.c}{28}{section.6.4}%
 | 
			
		||||
\contentsline {section}{\numberline {6.5}5. Aufgabe 2: Implementierung von person.c und list.c}{29}{section.6.5}%
 | 
			
		||||
\contentsline {subsection}{\numberline {6.5.1}5.1 Teilaufgabe: Implementierung von person.c}{29}{subsection.6.5.1}%
 | 
			
		||||
\contentsline {subsection}{\numberline {6.5.2}5.2 Teilaufgabe: Implementierung von list.c}{29}{subsection.6.5.2}%
 | 
			
		||||
\contentsline {section}{\numberline {6.6}6. Aufgabe 3: Unit Tests}{29}{section.6.6}%
 | 
			
		||||
\contentsline {section}{\numberline {6.7}7. Bewertung}{29}{section.6.7}%
 | 
			
		||||
\contentsline {chapter}{\numberline {7}07 \sphinxhyphen {} Prozesse und Threads}{31}{chapter.7}%
 | 
			
		||||
\contentsline {section}{\numberline {7.1}1. Übersicht}{32}{section.7.1}%
 | 
			
		||||
\contentsline {subsection}{\numberline {7.1.1}1.1 Nachweis}{32}{subsection.7.1.1}%
 | 
			
		||||
\contentsline {section}{\numberline {7.2}2. Lernziele}{32}{section.7.2}%
 | 
			
		||||
\contentsline {section}{\numberline {7.3}3. Aufgaben}{32}{section.7.3}%
 | 
			
		||||
\contentsline {subsection}{\numberline {7.3.1}3.1 Aufgabe 1: Prozess mit fork() erzeugen}{33}{subsection.7.3.1}%
 | 
			
		||||
\contentsline {subsection}{\numberline {7.3.2}3.2 Aufgabe 2: Prozess mit fork() und exec(): Programm Image ersetzen}{33}{subsection.7.3.2}%
 | 
			
		||||
\contentsline {subsection}{\numberline {7.3.3}3.3 Aufgabe 3: Prozesshierarchie analysieren}{33}{subsection.7.3.3}%
 | 
			
		||||
\contentsline {subsection}{\numberline {7.3.4}3.4 Aufgabe 4: Zeitlicher Ablauf von Prozessen}{34}{subsection.7.3.4}%
 | 
			
		||||
\contentsline {subsection}{\numberline {7.3.5}3.5 Aufgabe 5: Waisenkinder (Orphan Processes)}{34}{subsection.7.3.5}%
 | 
			
		||||
\contentsline {subsection}{\numberline {7.3.6}3.6 Aufgabe 6: Terminierte, halbtote Prozesse (Zombies)}{34}{subsection.7.3.6}%
 | 
			
		||||
\contentsline {subsection}{\numberline {7.3.7}3.7 Aufgabe 7: Auf Terminieren von Kindprozessen warten}{35}{subsection.7.3.7}%
 | 
			
		||||
\contentsline {subsection}{\numberline {7.3.8}3.8 Aufgabe 8: Kindprozess als Kopie des Elternprozesses}{36}{subsection.7.3.8}%
 | 
			
		||||
\contentsline {subsection}{\numberline {7.3.9}3.9 Aufgabe 9: Unterschied von Threads gegenüber Prozessen}{36}{subsection.7.3.9}%
 | 
			
		||||
\contentsline {subsection}{\numberline {7.3.10}3.10 Aufgabe 10 (optional):}{37}{subsection.7.3.10}%
 | 
			
		||||
\contentsline {subsubsection}{\numberline {7.3.10.1}3.10.1 Übersicht}{37}{subsubsection.7.3.10.1}%
 | 
			
		||||
\contentsline {paragraph}{3.10.1.1 Nachweis}{37}{paragraph*.7}%
 | 
			
		||||
\contentsline {subsubsection}{\numberline {7.3.10.2}3.10.2 Lernziele}{37}{subsubsection.7.3.10.2}%
 | 
			
		||||
\contentsline {subsubsection}{\numberline {7.3.10.3}3.10.3 Aufgabe: Dämon Prozesse}{37}{subsubsection.7.3.10.3}%
 | 
			
		||||
\contentsline {subsubsection}{\numberline {7.3.10.4}3.10.4 Zusatzinformationen}{38}{subsubsection.7.3.10.4}%
 | 
			
		||||
\contentsline {paragraph}{3.10.4.1 Diese Implementation}{38}{paragraph*.8}%
 | 
			
		||||
\contentsline {paragraph}{3.10.4.2 Zusatzinformation zu Dämon Prozessen}{39}{paragraph*.9}%
 | 
			
		||||
\contentsline {section}{\numberline {7.4}4. Bewertung}{39}{section.7.4}%
 | 
			
		||||
\contentsline {chapter}{\numberline {8}08 \sphinxhyphen {} Synchronisationsprobleme}{41}{chapter.8}%
 | 
			
		||||
\contentsline {section}{\numberline {8.1}1. Übersicht}{41}{section.8.1}%
 | 
			
		||||
\contentsline {subsection}{\numberline {8.1.1}1.1 Nachweis}{42}{subsection.8.1.1}%
 | 
			
		||||
\contentsline {section}{\numberline {8.2}2. Lernziele}{42}{section.8.2}%
 | 
			
		||||
\contentsline {section}{\numberline {8.3}3. Einführung}{42}{section.8.3}%
 | 
			
		||||
\contentsline {subsection}{\numberline {8.3.1}3.1 Wie löst man Synchronisationsprobleme?}{42}{subsection.8.3.1}%
 | 
			
		||||
\contentsline {section}{\numberline {8.4}4. Der Kaffee\sphinxhyphen {}Automat}{43}{section.8.4}%
 | 
			
		||||
\contentsline {subsection}{\numberline {8.4.1}4.1 Aufgabe: Mutual Exclusion}{44}{subsection.8.4.1}%
 | 
			
		||||
\contentsline {subsubsection}{\numberline {8.4.1.1}Aufgaben}{44}{subsubsection.8.4.1.1}%
 | 
			
		||||
\contentsline {subsection}{\numberline {8.4.2}4.2 Aufgabe: Einfache Reihenfolge}{44}{subsection.8.4.2}%
 | 
			
		||||
\contentsline {subsubsection}{\numberline {8.4.2.1}Aufgaben}{45}{subsubsection.8.4.2.1}%
 | 
			
		||||
\contentsline {subsection}{\numberline {8.4.3}4.3 Aufgabe: Erweiterte Reihenfolge}{45}{subsection.8.4.3}%
 | 
			
		||||
\contentsline {subsubsection}{\numberline {8.4.3.1}Aufgabe}{45}{subsubsection.8.4.3.1}%
 | 
			
		||||
\contentsline {subsection}{\numberline {8.4.4}4.4 Zusammenfassung}{45}{subsection.8.4.4}%
 | 
			
		||||
\contentsline {section}{\numberline {8.5}5. International Banking}{46}{section.8.5}%
 | 
			
		||||
\contentsline {subsection}{\numberline {8.5.1}5.1 Implementation}{46}{subsection.8.5.1}%
 | 
			
		||||
\contentsline {subsection}{\numberline {8.5.2}5.2 Aufgabe: Konto Synchronisation}{46}{subsection.8.5.2}%
 | 
			
		||||
\contentsline {subsection}{\numberline {8.5.3}5.3 Aufgabe: Filialen Zugriff in Critical Section}{46}{subsection.8.5.3}%
 | 
			
		||||
\contentsline {subsection}{\numberline {8.5.4}5.4 Aufgabe: Refactoring der Synchronisation}{46}{subsection.8.5.4}%
 | 
			
		||||
\contentsline {section}{\numberline {8.6}6. Bewertung}{47}{section.8.6}%
 | 
			
		||||
\contentsline {chapter}{\numberline {9}09 \sphinxhyphen {} File Operations}{48}{chapter.9}%
 | 
			
		||||
\contentsline {section}{\numberline {9.1}1. Übersicht}{48}{section.9.1}%
 | 
			
		||||
\contentsline {section}{\numberline {9.2}2. Lernziele}{48}{section.9.2}%
 | 
			
		||||
\contentsline {section}{\numberline {9.3}3. Aufgabe 1:}{48}{section.9.3}%
 | 
			
		||||
\contentsline {section}{\numberline {9.4}4. Bewertung}{48}{section.9.4}%
 | 
			
		||||
\contentsline {chapter}{\numberline {10}10 \sphinxhyphen {} IPC}{49}{chapter.10}%
 | 
			
		||||
\contentsline {section}{\numberline {10.1}1. Übersicht}{49}{section.10.1}%
 | 
			
		||||
\contentsline {section}{\numberline {10.2}2. Lernziele}{49}{section.10.2}%
 | 
			
		||||
\contentsline {section}{\numberline {10.3}3. Aufgabe 1:}{49}{section.10.3}%
 | 
			
		||||
\contentsline {section}{\numberline {10.4}4. Bewertung}{49}{section.10.4}%
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,31 @@
 | 
			
		|||
@ECHO OFF
 | 
			
		||||
 | 
			
		||||
REM Command file for Sphinx documentation
 | 
			
		||||
 | 
			
		||||
pushd %~dp0
 | 
			
		||||
 | 
			
		||||
set PDFLATEX=latexmk -pdf -dvi- -ps-
 | 
			
		||||
 | 
			
		||||
set "LATEXOPTS= "
 | 
			
		||||
 | 
			
		||||
if "%1" == "" goto all-pdf
 | 
			
		||||
 | 
			
		||||
if "%1" == "all-pdf" (
 | 
			
		||||
	:all-pdf
 | 
			
		||||
	for %%i in (*.tex) do (
 | 
			
		||||
		%PDFLATEX% %LATEXMKOPTS% %%i
 | 
			
		||||
	)
 | 
			
		||||
	goto end
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
if "%1" == "all-pdf-ja" (
 | 
			
		||||
	goto all-pdf
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
if "%1" == "clean" (
 | 
			
		||||
	del /q /s *.dvi *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla *.ps *.tar *.tar.gz *.tar.bz2 *.tar.xz *.fls *.fdb_latexmk
 | 
			
		||||
	goto end
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
:end
 | 
			
		||||
popd
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
line_max 100
 | 
			
		||||
headings_flag 1
 | 
			
		||||
heading_prefix "  \\bigletter "
 | 
			
		||||
 | 
			
		||||
preamble "\\begin{sphinxtheindex}
 | 
			
		||||
\\let\\bigletter\\sphinxstyleindexlettergroup
 | 
			
		||||
\\let\\spxpagem \\sphinxstyleindexpagemain
 | 
			
		||||
\\let\\spxentry \\sphinxstyleindexentry
 | 
			
		||||
\\let\\spxextra \\sphinxstyleindexextra
 | 
			
		||||
 | 
			
		||||
"
 | 
			
		||||
 | 
			
		||||
postamble "\n\n\\end{sphinxtheindex}\n"
 | 
			
		||||
 | 
			
		||||
symhead_positive "{\\sphinxsymbolsname}"
 | 
			
		||||
numhead_positive "{\\sphinxnumbersname}"
 | 
			
		||||
| 
		 After Width: | Height: | Size: 7.3 KiB  | 
| 
		 After Width: | Height: | Size: 3.0 KiB  | 
| 
						 | 
				
			
			@ -0,0 +1,351 @@
 | 
			
		|||
%
 | 
			
		||||
% sphinx.sty
 | 
			
		||||
%
 | 
			
		||||
% Adapted from the old python.sty, mostly written by Fred Drake,
 | 
			
		||||
% by Georg Brandl.
 | 
			
		||||
%
 | 
			
		||||
 | 
			
		||||
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
 | 
			
		||||
\ProvidesPackage{sphinx}[2021/01/27 v4.0.0 LaTeX package (Sphinx markup)]
 | 
			
		||||
 | 
			
		||||
% provides \ltx@ifundefined
 | 
			
		||||
% (many packages load ltxcmds: graphicx does for pdftex and lualatex but
 | 
			
		||||
% not xelatex, and anyhow kvoptions does, but it may be needed in future to
 | 
			
		||||
% use \sphinxdeprecationwarning earlier, and it needs \ltx@ifundefined)
 | 
			
		||||
\RequirePackage{ltxcmds}
 | 
			
		||||
 | 
			
		||||
%% for deprecation warnings
 | 
			
		||||
\newcommand\sphinxdeprecationwarning[4]{% #1 the deprecated macro or name,
 | 
			
		||||
% #2 = when deprecated, #3 = when removed, #4 = additional info
 | 
			
		||||
  \edef\spx@tempa{\detokenize{#1}}%
 | 
			
		||||
  \ltx@ifundefined{sphinx_depr_\spx@tempa}{%
 | 
			
		||||
     \global\expandafter\let\csname sphinx_depr_\spx@tempa\endcsname\spx@tempa
 | 
			
		||||
     \expandafter\AtEndDocument\expandafter{\expandafter\let\expandafter
 | 
			
		||||
         \sphinxdeprecatedmacro\csname sphinx_depr_\spx@tempa\endcsname
 | 
			
		||||
         \PackageWarningNoLine{sphinx}{^^J**** SPHINX DEPRECATION WARNING:^^J
 | 
			
		||||
         \sphinxdeprecatedmacro^^J
 | 
			
		||||
         \@spaces- is deprecated at Sphinx #2^^J
 | 
			
		||||
         \@spaces- and removed at Sphinx #3.^^J
 | 
			
		||||
         #4^^J****}}%
 | 
			
		||||
  }{% warning already emitted (at end of latex log), don't repeat
 | 
			
		||||
  }}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% OPTION HANDLING
 | 
			
		||||
%
 | 
			
		||||
 | 
			
		||||
% We first handle options then load packages, but we need \definecolor from
 | 
			
		||||
% xcolor/color.
 | 
			
		||||
 | 
			
		||||
% FIXME: we should \RequirePackage{xcolor} always now
 | 
			
		||||
% The xcolor package draws better fcolorboxes around verbatim code
 | 
			
		||||
\IfFileExists{xcolor.sty}{
 | 
			
		||||
    \RequirePackage{xcolor}
 | 
			
		||||
}{
 | 
			
		||||
    \RequirePackage{color}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
% Handle options via "kvoptions" (later loaded by hyperref anyhow)
 | 
			
		||||
\RequirePackage{kvoptions}
 | 
			
		||||
\SetupKeyvalOptions{prefix=spx@opt@} % use \spx@opt@ prefix
 | 
			
		||||
 | 
			
		||||
% Sphinx legacy text layout: 1in margins on all four sides
 | 
			
		||||
\ifx\@jsc@uplatextrue\@undefined
 | 
			
		||||
\DeclareStringOption[1in]{hmargin}
 | 
			
		||||
\DeclareStringOption[1in]{vmargin}
 | 
			
		||||
\DeclareStringOption[.5in]{marginpar}
 | 
			
		||||
\else
 | 
			
		||||
% Japanese standard document classes handle \mag in a special way
 | 
			
		||||
\DeclareStringOption[\inv@mag in]{hmargin}
 | 
			
		||||
\DeclareStringOption[\inv@mag in]{vmargin}
 | 
			
		||||
\DeclareStringOption[.5\dimexpr\inv@mag in\relax]{marginpar}
 | 
			
		||||
\fi
 | 
			
		||||
 | 
			
		||||
\DeclareStringOption[0]{maxlistdepth}% \newcommand*\spx@opt@maxlistdepth{0}
 | 
			
		||||
\DeclareStringOption[-1]{numfigreset}
 | 
			
		||||
\DeclareBoolOption[false]{nonumfigreset}
 | 
			
		||||
\DeclareBoolOption[false]{mathnumfig}
 | 
			
		||||
\define@key{sphinx}{bookmarksdepth}{\AtBeginDocument{\hypersetup{bookmarksdepth=#1}}}
 | 
			
		||||
\AtBeginDocument{\define@key{sphinx}{bookmarksdepth}{\hypersetup{bookmarksdepth=#1}}}
 | 
			
		||||
% \DeclareBoolOption[false]{usespart}% not used
 | 
			
		||||
% dimensions, we declare the \dimen registers here.
 | 
			
		||||
\newdimen\sphinxverbatimsep
 | 
			
		||||
\newdimen\sphinxverbatimborder
 | 
			
		||||
\newdimen\sphinxshadowsep
 | 
			
		||||
\newdimen\sphinxshadowsize
 | 
			
		||||
\newdimen\sphinxshadowrule
 | 
			
		||||
% \DeclareStringOption is not convenient for the handling of these dimensions
 | 
			
		||||
% because we want to assign the values to the corresponding registers. Even if
 | 
			
		||||
% we added the code to the key handler it would be too late for the initial
 | 
			
		||||
% set-up and we would need to do initial assignments explicitly. We end up
 | 
			
		||||
% using \define@key directly.
 | 
			
		||||
% verbatim
 | 
			
		||||
\sphinxverbatimsep=\fboxsep
 | 
			
		||||
  \define@key{sphinx}{verbatimsep}{\sphinxverbatimsep\dimexpr #1\relax}
 | 
			
		||||
\sphinxverbatimborder=\fboxrule
 | 
			
		||||
  \define@key{sphinx}{verbatimborder}{\sphinxverbatimborder\dimexpr #1\relax}
 | 
			
		||||
% topic boxes
 | 
			
		||||
\sphinxshadowsep =5pt
 | 
			
		||||
  \define@key{sphinx}{shadowsep}{\sphinxshadowsep\dimexpr #1\relax}
 | 
			
		||||
\sphinxshadowsize=4pt
 | 
			
		||||
  \define@key{sphinx}{shadowsize}{\sphinxshadowsize\dimexpr #1\relax}
 | 
			
		||||
\sphinxshadowrule=\fboxrule
 | 
			
		||||
  \define@key{sphinx}{shadowrule}{\sphinxshadowrule\dimexpr #1\relax}
 | 
			
		||||
% verbatim
 | 
			
		||||
\DeclareBoolOption[true]{verbatimwithframe}
 | 
			
		||||
\DeclareBoolOption[true]{verbatimwrapslines}
 | 
			
		||||
\DeclareBoolOption[false]{verbatimforcewraps}
 | 
			
		||||
\DeclareStringOption[3]{verbatimmaxoverfull}
 | 
			
		||||
\DeclareStringOption[100]{verbatimmaxunderfull}
 | 
			
		||||
\DeclareBoolOption[true]{verbatimhintsturnover}
 | 
			
		||||
\DeclareBoolOption[true]{inlineliteralwraps}
 | 
			
		||||
\DeclareStringOption[t]{literalblockcappos}
 | 
			
		||||
\DeclareStringOption[r]{verbatimcontinuedalign}
 | 
			
		||||
\DeclareStringOption[r]{verbatimcontinuesalign}
 | 
			
		||||
% parsed literal
 | 
			
		||||
\DeclareBoolOption[true]{parsedliteralwraps}
 | 
			
		||||
% \textvisiblespace for compatibility with fontspec+XeTeX/LuaTeX
 | 
			
		||||
\DeclareStringOption[\textcolor{red}{\textvisiblespace}]{verbatimvisiblespace}
 | 
			
		||||
\DeclareStringOption % must use braces to hide the brackets
 | 
			
		||||
  [{\makebox[2\fontcharwd\font`\x][r]{\textcolor{red}{\tiny$\m@th\hookrightarrow$}}}]%
 | 
			
		||||
  {verbatimcontinued}
 | 
			
		||||
% notices/admonitions
 | 
			
		||||
% the dimensions for notices/admonitions are kept as macros and assigned to
 | 
			
		||||
% \spx@notice@border at time of use, hence \DeclareStringOption is ok for this
 | 
			
		||||
\newdimen\spx@notice@border
 | 
			
		||||
\DeclareStringOption[0.5pt]{noteborder}
 | 
			
		||||
\DeclareStringOption[0.5pt]{hintborder}
 | 
			
		||||
\DeclareStringOption[0.5pt]{importantborder}
 | 
			
		||||
\DeclareStringOption[0.5pt]{tipborder}
 | 
			
		||||
\DeclareStringOption[1pt]{warningborder}
 | 
			
		||||
\DeclareStringOption[1pt]{cautionborder}
 | 
			
		||||
\DeclareStringOption[1pt]{attentionborder}
 | 
			
		||||
\DeclareStringOption[1pt]{dangerborder}
 | 
			
		||||
\DeclareStringOption[1pt]{errorborder}
 | 
			
		||||
% footnotes
 | 
			
		||||
\DeclareStringOption[\mbox{ }]{AtStartFootnote}
 | 
			
		||||
% we need a public macro name for direct use in latex file
 | 
			
		||||
\newcommand*{\sphinxAtStartFootnote}{\spx@opt@AtStartFootnote}
 | 
			
		||||
% no such need for this one, as it is used inside other macros
 | 
			
		||||
\DeclareStringOption[\leavevmode\unskip]{BeforeFootnote}
 | 
			
		||||
% some font styling.
 | 
			
		||||
\DeclareStringOption[\sffamily\bfseries]{HeaderFamily}
 | 
			
		||||
% colours
 | 
			
		||||
% same problems as for dimensions: we want the key handler to use \definecolor.
 | 
			
		||||
% first, some colours with no prefix, for backwards compatibility
 | 
			
		||||
\newcommand*{\sphinxDeclareColorOption}[2]{%
 | 
			
		||||
   \definecolor{#1}#2%
 | 
			
		||||
   \define@key{sphinx}{#1}{\definecolor{#1}##1}%
 | 
			
		||||
}%
 | 
			
		||||
\sphinxDeclareColorOption{TitleColor}{{rgb}{0.126,0.263,0.361}}
 | 
			
		||||
\sphinxDeclareColorOption{InnerLinkColor}{{rgb}{0.208,0.374,0.486}}
 | 
			
		||||
\sphinxDeclareColorOption{OuterLinkColor}{{rgb}{0.216,0.439,0.388}}
 | 
			
		||||
\sphinxDeclareColorOption{VerbatimColor}{{rgb}{1,1,1}}
 | 
			
		||||
\sphinxDeclareColorOption{VerbatimBorderColor}{{rgb}{0,0,0}}
 | 
			
		||||
% now the colours defined with "sphinx" prefix in their names
 | 
			
		||||
\newcommand*{\sphinxDeclareSphinxColorOption}[2]{%
 | 
			
		||||
   % set the initial default
 | 
			
		||||
   \definecolor{sphinx#1}#2%
 | 
			
		||||
   % set the key handler. The "value" ##1 must be acceptable by \definecolor.
 | 
			
		||||
   \define@key{sphinx}{#1}{\definecolor{sphinx#1}##1}%
 | 
			
		||||
}%
 | 
			
		||||
% Default color chosen to be as in minted.sty LaTeX package!
 | 
			
		||||
\sphinxDeclareSphinxColorOption{VerbatimHighlightColor}{{rgb}{0.878,1,1}}
 | 
			
		||||
% admonition boxes, "light" style
 | 
			
		||||
\sphinxDeclareSphinxColorOption{noteBorderColor}{{rgb}{0,0,0}}
 | 
			
		||||
\sphinxDeclareSphinxColorOption{hintBorderColor}{{rgb}{0,0,0}}
 | 
			
		||||
\sphinxDeclareSphinxColorOption{importantBorderColor}{{rgb}{0,0,0}}
 | 
			
		||||
\sphinxDeclareSphinxColorOption{tipBorderColor}{{rgb}{0,0,0}}
 | 
			
		||||
% admonition boxes, "heavy" style
 | 
			
		||||
\sphinxDeclareSphinxColorOption{warningBorderColor}{{rgb}{0,0,0}}
 | 
			
		||||
\sphinxDeclareSphinxColorOption{cautionBorderColor}{{rgb}{0,0,0}}
 | 
			
		||||
\sphinxDeclareSphinxColorOption{attentionBorderColor}{{rgb}{0,0,0}}
 | 
			
		||||
\sphinxDeclareSphinxColorOption{dangerBorderColor}{{rgb}{0,0,0}}
 | 
			
		||||
\sphinxDeclareSphinxColorOption{errorBorderColor}{{rgb}{0,0,0}}
 | 
			
		||||
\sphinxDeclareSphinxColorOption{warningBgColor}{{rgb}{1,1,1}}
 | 
			
		||||
\sphinxDeclareSphinxColorOption{cautionBgColor}{{rgb}{1,1,1}}
 | 
			
		||||
\sphinxDeclareSphinxColorOption{attentionBgColor}{{rgb}{1,1,1}}
 | 
			
		||||
\sphinxDeclareSphinxColorOption{dangerBgColor}{{rgb}{1,1,1}}
 | 
			
		||||
\sphinxDeclareSphinxColorOption{errorBgColor}{{rgb}{1,1,1}}
 | 
			
		||||
 | 
			
		||||
\DeclareDefaultOption{\@unknownoptionerror}
 | 
			
		||||
\ProcessKeyvalOptions*
 | 
			
		||||
% don't allow use of maxlistdepth via \sphinxsetup.
 | 
			
		||||
\DisableKeyvalOption{sphinx}{maxlistdepth}
 | 
			
		||||
\DisableKeyvalOption{sphinx}{numfigreset}
 | 
			
		||||
\DisableKeyvalOption{sphinx}{nonumfigreset}
 | 
			
		||||
\DisableKeyvalOption{sphinx}{mathnumfig}
 | 
			
		||||
% FIXME: this is unrelated to an option, move this elsewhere
 | 
			
		||||
% To allow hyphenation of first word in narrow contexts; no option,
 | 
			
		||||
% customization to be done via 'preamble' key
 | 
			
		||||
\newcommand*\sphinxAtStartPar{\leavevmode\nobreak\hskip\z@skip}
 | 
			
		||||
% No need for the \hspace{0pt} trick (\hskip\z@skip) with luatex
 | 
			
		||||
\ifdefined\directlua\let\sphinxAtStartPar\@empty\fi
 | 
			
		||||
% user interface: options can be changed midway in a document!
 | 
			
		||||
\newcommand\sphinxsetup[1]{\setkeys{sphinx}{#1}}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% MISCELLANEOUS CONTEXT
 | 
			
		||||
%
 | 
			
		||||
% flag to be set in a framed environment
 | 
			
		||||
% (defined here as currently needed by three sphinxlatex....sty files and
 | 
			
		||||
% even if not needed if such files are replaced, the definition does no harm)
 | 
			
		||||
\newif\ifspx@inframed
 | 
			
		||||
%
 | 
			
		||||
% \spx@ifcaptionpackage (defined at begin document)
 | 
			
		||||
%     is needed currently in macros from:
 | 
			
		||||
%     sphinxlatexliterals.sty (sphinxVerbatim)
 | 
			
		||||
%     sphinxlatextables.sty   (for some macros used in the table templates)
 | 
			
		||||
%
 | 
			
		||||
% \sphinxcaption is mark-up injected by the tabular and tabulary templates
 | 
			
		||||
%     it is defined in sphinxlatextables.sty
 | 
			
		||||
%
 | 
			
		||||
% store the original \caption macro for usage with figures inside longtable
 | 
			
		||||
% and tabulary cells. Make sure we get the final \caption in presence of
 | 
			
		||||
% caption package, whether the latter was loaded before or after sphinx.
 | 
			
		||||
\AtBeginDocument{%
 | 
			
		||||
    \let\spx@originalcaption\caption
 | 
			
		||||
    \@ifpackageloaded{caption}
 | 
			
		||||
      {\let\spx@ifcaptionpackage\@firstoftwo
 | 
			
		||||
       \caption@AtBeginDocument*{\let\spx@originalcaption\caption}%
 | 
			
		||||
% in presence of caption package, drop our own \sphinxcaption whose aim was to
 | 
			
		||||
% ensure same width of caption to all kinds of tables (tabular(y), longtable),
 | 
			
		||||
% because caption package has its own width (or margin) option
 | 
			
		||||
       \def\sphinxcaption{\caption}%
 | 
			
		||||
      }%
 | 
			
		||||
      {\let\spx@ifcaptionpackage\@secondoftwo}%
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
%% PASS OPTIONS
 | 
			
		||||
%
 | 
			
		||||
% pass options to hyperref; it must not have been loaded already
 | 
			
		||||
\input{sphinxoptionshyperref.sty}
 | 
			
		||||
% pass options to geometry; it must not have been loaded already
 | 
			
		||||
\input{sphinxoptionsgeometry.sty}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% COLOR (general)
 | 
			
		||||
%
 | 
			
		||||
% FIXME: these two should be deprecated
 | 
			
		||||
%
 | 
			
		||||
% FIXME: \normalcolor should be used and \py@NormalColor never defined
 | 
			
		||||
\def\py@NormalColor{\color{black}}
 | 
			
		||||
% FIXME: \color{TitleColor} should be used directly and \py@TitleColor
 | 
			
		||||
% should never get defined.
 | 
			
		||||
\def\py@TitleColor{\color{TitleColor}}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% PACKAGES
 | 
			
		||||
%
 | 
			
		||||
% as will be indicated below, secondary style files load some more packages
 | 
			
		||||
%
 | 
			
		||||
% For \text macro (sphinx.util.texescape)
 | 
			
		||||
% also for usage of \firstchoice@true(false) in sphinxlatexgraphics.sty
 | 
			
		||||
\RequirePackage{amstext}
 | 
			
		||||
% It was passed "warn" option from latex template in case it is already loaded
 | 
			
		||||
% via some other package before \usepackage{sphinx} in preamble
 | 
			
		||||
\RequirePackage{textcomp}
 | 
			
		||||
% For the H specifier. Do not \restylefloat{figure}, it breaks Sphinx code
 | 
			
		||||
% for allowing figures in tables.
 | 
			
		||||
\RequirePackage{float}
 | 
			
		||||
% For floating figures in the text. Better to load after float.
 | 
			
		||||
\RequirePackage{wrapfig}
 | 
			
		||||
% Provides \captionof, used once by latex writer (\captionof{figure})
 | 
			
		||||
\RequirePackage{capt-of}
 | 
			
		||||
% Support hlist directive
 | 
			
		||||
\RequirePackage{multicol}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% GRAPHICS
 | 
			
		||||
%
 | 
			
		||||
% It will always be needed, so let's load it here
 | 
			
		||||
\RequirePackage{graphicx}
 | 
			
		||||
\input{sphinxlatexgraphics.sty}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% FRAMED ENVIRONMENTS
 | 
			
		||||
%
 | 
			
		||||
\input{sphinxlatexadmonitions.sty}
 | 
			
		||||
\input{sphinxlatexliterals.sty}
 | 
			
		||||
\input{sphinxlatexshadowbox.sty}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% CONTAINERS
 | 
			
		||||
%
 | 
			
		||||
\input{sphinxlatexcontainers.sty}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% PYGMENTS
 | 
			
		||||
% stylesheet for highlighting with pygments
 | 
			
		||||
\RequirePackage{sphinxhighlight}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% TABLES
 | 
			
		||||
%
 | 
			
		||||
\input{sphinxlatextables.sty}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% NUMBERING OF FIGURES, TABLES, AND LITERAL BLOCKS
 | 
			
		||||
%
 | 
			
		||||
\input{sphinxlatexnumfig.sty}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% LISTS
 | 
			
		||||
%
 | 
			
		||||
\input{sphinxlatexlists.sty}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% FOOTNOTES
 | 
			
		||||
%
 | 
			
		||||
% Support scopes for footnote numbering
 | 
			
		||||
\newcounter{sphinxscope}
 | 
			
		||||
\newcommand{\sphinxstepscope}{\stepcounter{sphinxscope}}
 | 
			
		||||
% Explicitly numbered footnotes may be referred to, and for this to be
 | 
			
		||||
% clickable we need to have only one target. So we will step this at each
 | 
			
		||||
% explicit footnote and let \thesphinxscope take it into account
 | 
			
		||||
\newcounter{sphinxexplicit}
 | 
			
		||||
\newcommand{\sphinxstepexplicit}{\stepcounter{sphinxexplicit}}
 | 
			
		||||
% Some babel/polyglossia languages fiddle with \@arabic, so let's be extra
 | 
			
		||||
% cautious and redefine \thesphinxscope with \number not \@arabic.
 | 
			
		||||
% Memo: we expect some subtle redefinition of \thesphinxscope to be a part of page
 | 
			
		||||
% scoping for footnotes, when we shall implement it.
 | 
			
		||||
\renewcommand{\thesphinxscope}{\number\value{sphinxscope}.\number\value{sphinxexplicit}}
 | 
			
		||||
\newcommand\sphinxthefootnotemark[2]{%
 | 
			
		||||
   % this is used to make reference to an explicitly numbered footnote not on same page
 | 
			
		||||
   % #1=label of footnote text, #2=page number where footnote text was printed
 | 
			
		||||
   \ifdefined\pagename
 | 
			
		||||
      \pagename\space#2, % <- space
 | 
			
		||||
    \else
 | 
			
		||||
      p. #2, % <- space
 | 
			
		||||
   \fi #1% no space
 | 
			
		||||
}
 | 
			
		||||
% support large numbered footnotes in minipage; but this is now obsolete
 | 
			
		||||
% from systematic use of savenotes environment around minipages
 | 
			
		||||
\def\thempfootnote{\arabic{mpfootnote}}
 | 
			
		||||
% This package is needed to support hyperlinked footnotes in tables and
 | 
			
		||||
% framed contents, and to allow code-blocks in footnotes.
 | 
			
		||||
\RequirePackage{sphinxpackagefootnote}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% INDEX, BIBLIOGRAPHY, APPENDIX, TABLE OF CONTENTS
 | 
			
		||||
%
 | 
			
		||||
\input{sphinxlatexindbibtoc.sty}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% STYLING
 | 
			
		||||
%
 | 
			
		||||
\input{sphinxlatexstylepage.sty}
 | 
			
		||||
\input{sphinxlatexstyleheadings.sty}
 | 
			
		||||
\input{sphinxlatexstyletext.sty}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% MODULE RELEASE DATA AND OBJECT DESCRIPTIONS
 | 
			
		||||
%
 | 
			
		||||
\input{sphinxlatexobjects.sty}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
% FIXME: this line should be dropped, as "9" is default anyhow.
 | 
			
		||||
\ifdefined\pdfcompresslevel\pdfcompresslevel = 9 \fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
\endinput
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,230 @@
 | 
			
		|||
;;; -*- mode: lisp; coding: utf-8; -*-
 | 
			
		||||
 | 
			
		||||
;; Unfortunately xindy is out-of-the-box hyperref-incompatible.  This
 | 
			
		||||
;; configuration is a workaround, which requires to pass option
 | 
			
		||||
;; hyperindex=false to hyperref.
 | 
			
		||||
;; textit and emph not currently used, spxpagem replaces former textbf
 | 
			
		||||
(define-attributes (("textbf" "textit" "emph" "spxpagem" "default")))
 | 
			
		||||
(markup-locref :open "\textbf{\hyperpage{" :close "}}" :attr "textbf")
 | 
			
		||||
(markup-locref :open "\textit{\hyperpage{" :close "}}" :attr "textit")
 | 
			
		||||
(markup-locref :open "\emph{\hyperpage{" :close "}}" :attr "emph")
 | 
			
		||||
(markup-locref :open "\spxpagem{\hyperpage{" :close "}}" :attr "spxpagem")
 | 
			
		||||
(markup-locref :open "\hyperpage{" :close "}" :attr "default")
 | 
			
		||||
 | 
			
		||||
(require "numeric-sort.xdy")
 | 
			
		||||
 | 
			
		||||
;; xindy base module latex.xdy loads tex.xdy and the latter instructs
 | 
			
		||||
;; xindy to ignore **all** TeX macros in .idx entries, except those
 | 
			
		||||
;; explicitly described in merge rule.  But when after applying all
 | 
			
		||||
;; merge rules an empty string results, xindy raises an error:
 | 
			
		||||
 | 
			
		||||
;;   ERROR: CHAR: index 0 should be less than the length of the string
 | 
			
		||||
 | 
			
		||||
;; For example when using pdflatex with utf-8 characters the index
 | 
			
		||||
;; file will contain \IeC macros and they will get ignored except if
 | 
			
		||||
;; suitable merge rules are loaded early.  The texindy script coming
 | 
			
		||||
;; with xindy provides this, but only for Latin scripts.  The texindy
 | 
			
		||||
;; man page says to use rather xelatex or lualatex in case of Cyrillic
 | 
			
		||||
;; scripts.
 | 
			
		||||
 | 
			
		||||
;; Sphinx contributes LICRcyr2utf8.xdy to provide support for Cyrillic
 | 
			
		||||
;; scripts for the pdflatex engine.
 | 
			
		||||
 | 
			
		||||
;; Another issue caused by xindy ignoring all TeX macros except those
 | 
			
		||||
;; explicitly declared reveals itself when attempting to index ">>>",
 | 
			
		||||
;; as the ">" is converted to "\textgreater{}" by Sphinx's LaTeX
 | 
			
		||||
;; escaping.
 | 
			
		||||
 | 
			
		||||
;; To fix this, Sphinx does **not** use texindy, and does not even
 | 
			
		||||
;; load the xindy latex.xdy base module.
 | 
			
		||||
 | 
			
		||||
;(require "latex.xdy")
 | 
			
		||||
 | 
			
		||||
;; Rather it incorporates some suitable extracts from latex.xdy and
 | 
			
		||||
;; tex.xdy with additional Sphinx contributed rules.
 | 
			
		||||
 | 
			
		||||
;; But, this means for pdflatex and Latin scripts that the xindy file
 | 
			
		||||
;; tex/inputenc/uf8.xdy is not usable because it refers to the macro
 | 
			
		||||
;; \IeC only sporadically, and as tex.xdy is not loaded, a rule such as
 | 
			
		||||
;;     (merge-rule "\'e" "é" :string)
 | 
			
		||||
;; does not work, it must be
 | 
			
		||||
;;     (merge-rule "\IeC {\'e}" "é" :string)
 | 
			
		||||
;; So Sphinx contributes LICRlatin2utf8.xdy to mitigate that problem.
 | 
			
		||||
 | 
			
		||||
;;;;;;;; extracts from tex.xdy (discarding most original comments):
 | 
			
		||||
 | 
			
		||||
;;;
 | 
			
		||||
;;; TeX conventions
 | 
			
		||||
;;;
 | 
			
		||||
 | 
			
		||||
;; Discard leading and trailing white space. Collapse multiple white
 | 
			
		||||
;; space characters to blank.
 | 
			
		||||
 | 
			
		||||
(merge-rule "^ +" "" :eregexp)
 | 
			
		||||
(merge-rule " +$" "" :eregexp)
 | 
			
		||||
(merge-rule "  +" " " :eregexp)
 | 
			
		||||
 | 
			
		||||
;; Handle TeX markup
 | 
			
		||||
 | 
			
		||||
(merge-rule "\\([{}$%&#])" "\1" :eregexp)
 | 
			
		||||
 | 
			
		||||
;;;;;;;; end of extracts from xindy's tex.xdy
 | 
			
		||||
 | 
			
		||||
;;;;;;;; extracts from latex.xdy:
 | 
			
		||||
 | 
			
		||||
;; Standard location classes: arabic and roman numbers, and alphabets.
 | 
			
		||||
 | 
			
		||||
(define-location-class "arabic-page-numbers" ("arabic-numbers"))
 | 
			
		||||
(define-location-class "roman-page-numbers"  ("roman-numbers-lowercase"))
 | 
			
		||||
(define-location-class "Roman-page-numbers"  ("roman-numbers-uppercase"))
 | 
			
		||||
(define-location-class "alpha-page-numbers"  ("alpha"))
 | 
			
		||||
(define-location-class "Alpha-page-numbers"  ("ALPHA"))
 | 
			
		||||
 | 
			
		||||
;; Output Markup
 | 
			
		||||
 | 
			
		||||
(markup-letter-group-list :sep "~n~n  \indexspace~n")
 | 
			
		||||
 | 
			
		||||
(markup-indexentry :open "~n  \item "           :depth 0)
 | 
			
		||||
(markup-indexentry :open "~n    \subitem "      :depth 1)
 | 
			
		||||
(markup-indexentry :open "~n      \subsubitem " :depth 2)
 | 
			
		||||
 | 
			
		||||
(markup-locclass-list :open ", " :sep ", ")
 | 
			
		||||
(markup-locref-list   :sep ", ")
 | 
			
		||||
 | 
			
		||||
;;;;;;;; end of extracts from latex.xdy
 | 
			
		||||
 | 
			
		||||
;; The LaTeX \index command turns \ into normal character so the TeX macros
 | 
			
		||||
;; written to .idx files are not followed by a blank. This is different
 | 
			
		||||
;; from non-ascii letters which end up (with pdflatex) as \IeC macros in .idx
 | 
			
		||||
;; file, with a blank space after \IeC
 | 
			
		||||
 | 
			
		||||
;; Details of the syntax are explained at
 | 
			
		||||
;;     http://xindy.sourceforge.net/doc/manual-3.html
 | 
			
		||||
;; In absence of :string, "xindy uses an auto-detection mechanism to decide,
 | 
			
		||||
;; if the pattern is a regular expression or not". But it is not obvious to
 | 
			
		||||
;; guess, for example "\\_" is not detected as RE but "\\P\{\}" is, so for
 | 
			
		||||
;; being sure we apply the :string switch everywhere and do not use \\ etc...
 | 
			
		||||
 | 
			
		||||
;; Go back from sphinx.util.texescape TeX macros to UTF-8
 | 
			
		||||
 | 
			
		||||
(merge-rule "\sphinxleftcurlybrace{}" "{" :string)
 | 
			
		||||
(merge-rule "\sphinxrightcurlybrace{}" "}" :string)
 | 
			
		||||
(merge-rule "\_" "_" :string)
 | 
			
		||||
(merge-rule "{[}" "[" :string)
 | 
			
		||||
(merge-rule "{]}" "]" :string)
 | 
			
		||||
(merge-rule "\textbackslash{}" "\" :string)  ; " for Emacs syntax highlighting
 | 
			
		||||
(merge-rule "\textasciitilde{}" "~~" :string); the ~~ escape is needed here
 | 
			
		||||
(merge-rule "\textasciicircum{}" "^" :string)
 | 
			
		||||
(merge-rule "\sphinxhyphen{}" "-" :string)
 | 
			
		||||
(merge-rule "\textquotesingle{}" "'" :string)
 | 
			
		||||
(merge-rule "\textasciigrave{}" "`" :string)
 | 
			
		||||
(merge-rule "\textless{}" "<" :string)
 | 
			
		||||
(merge-rule "\textgreater{}" ">" :string)
 | 
			
		||||
(merge-rule "\P{}" "¶" :string)
 | 
			
		||||
(merge-rule "\S{}" "§" :string)
 | 
			
		||||
(merge-rule "\texteuro{}" "€" :string)
 | 
			
		||||
(merge-rule "\(\infty\)" "∞" :string)
 | 
			
		||||
(merge-rule "\(\pm\)" "±" :string)
 | 
			
		||||
(merge-rule "\(\rightarrow\)" "→" :string)
 | 
			
		||||
(merge-rule "\(\checkmark\)" "✓" :string)
 | 
			
		||||
(merge-rule "\textendash{}" "–" :string)
 | 
			
		||||
(merge-rule "\textbar{}" "|" :string)
 | 
			
		||||
(merge-rule "\(\sp{\text{0}}\)" "⁰" :string)
 | 
			
		||||
(merge-rule "\(\sp{\text{1}}\)" "¹" :string)
 | 
			
		||||
(merge-rule "\(\sp{\text{2}}\)" "²" :string)
 | 
			
		||||
(merge-rule "\(\sp{\text{3}}\)" "³" :string)
 | 
			
		||||
(merge-rule "\(\sp{\text{4}}\)" "⁴" :string)
 | 
			
		||||
(merge-rule "\(\sp{\text{5}}\)" "⁵" :string)
 | 
			
		||||
(merge-rule "\(\sp{\text{6}}\)" "⁶" :string)
 | 
			
		||||
(merge-rule "\(\sp{\text{7}}\)" "⁷" :string)
 | 
			
		||||
(merge-rule "\(\sp{\text{8}}\)" "⁸" :string)
 | 
			
		||||
(merge-rule "\(\sp{\text{9}}\)" "⁹" :string)
 | 
			
		||||
(merge-rule "\(\sb{\text{0}}\)" "₀" :string)
 | 
			
		||||
(merge-rule "\(\sb{\text{1}}\)" "₁" :string)
 | 
			
		||||
(merge-rule "\(\sb{\text{2}}\)" "₂" :string)
 | 
			
		||||
(merge-rule "\(\sb{\text{3}}\)" "₃" :string)
 | 
			
		||||
(merge-rule "\(\sb{\text{4}}\)" "₄" :string)
 | 
			
		||||
(merge-rule "\(\sb{\text{5}}\)" "₅" :string)
 | 
			
		||||
(merge-rule "\(\sb{\text{6}}\)" "₆" :string)
 | 
			
		||||
(merge-rule "\(\sb{\text{7}}\)" "₇" :string)
 | 
			
		||||
(merge-rule "\(\sb{\text{8}}\)" "₈" :string)
 | 
			
		||||
(merge-rule "\(\sb{\text{9}}\)" "₉" :string)
 | 
			
		||||
(merge-rule "\IeC {\textalpha }" "α" :string)
 | 
			
		||||
(merge-rule "\IeC {\textbeta }" "β" :string)
 | 
			
		||||
(merge-rule "\IeC {\textgamma }" "γ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textdelta }" "δ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textepsilon }" "ε" :string)
 | 
			
		||||
(merge-rule "\IeC {\textzeta }" "ζ" :string)
 | 
			
		||||
(merge-rule "\IeC {\texteta }" "η" :string)
 | 
			
		||||
(merge-rule "\IeC {\texttheta }" "θ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textiota }" "ι" :string)
 | 
			
		||||
(merge-rule "\IeC {\textkappa }" "κ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textlambda }" "λ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textmu }" "μ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textnu }" "ν" :string)
 | 
			
		||||
(merge-rule "\IeC {\textxi }" "ξ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textomicron }" "ο" :string)
 | 
			
		||||
(merge-rule "\IeC {\textpi }" "π" :string)
 | 
			
		||||
(merge-rule "\IeC {\textrho }" "ρ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textsigma }" "σ" :string)
 | 
			
		||||
(merge-rule "\IeC {\texttau }" "τ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textupsilon }" "υ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textphi }" "φ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textchi }" "χ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textpsi }" "ψ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textomega }" "ω" :string)
 | 
			
		||||
(merge-rule "\IeC {\textAlpha }" "Α" :string)
 | 
			
		||||
(merge-rule "\IeC {\textBeta }" "Β" :string)
 | 
			
		||||
(merge-rule "\IeC {\textGamma }" "Γ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textDelta }" "Δ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textEpsilon }" "Ε" :string)
 | 
			
		||||
(merge-rule "\IeC {\textZeta }" "Ζ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textEta }" "Η" :string)
 | 
			
		||||
(merge-rule "\IeC {\textTheta }" "Θ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textIota }" "Ι" :string)
 | 
			
		||||
(merge-rule "\IeC {\textKappa }" "Κ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textLambda }" "Λ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textMu }" "Μ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textNu }" "Ν" :string)
 | 
			
		||||
(merge-rule "\IeC {\textTheta }" "Θ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textIota }" "Ι" :string)
 | 
			
		||||
(merge-rule "\IeC {\textKappa }" "Κ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textLambda }" "Λ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textMu }" "Μ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textNu }" "Ν" :string)
 | 
			
		||||
(merge-rule "\IeC {\textXi }" "Ξ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textOmicron }" "Ο" :string)
 | 
			
		||||
(merge-rule "\IeC {\textPi }" "Π" :string)
 | 
			
		||||
(merge-rule "\IeC {\textRho }" "Ρ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textSigma }" "Σ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textTau }" "Τ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textUpsilon }" "Υ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textPhi }" "Φ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textChi }" "Χ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textPsi }" "Ψ" :string)
 | 
			
		||||
(merge-rule "\IeC {\textOmega }" "Ω" :string)
 | 
			
		||||
(merge-rule "\IeC {\textohm }" "Ω" :string)
 | 
			
		||||
 | 
			
		||||
;; This xindy module provides some basic support for "see"
 | 
			
		||||
(require "makeindex.xdy")
 | 
			
		||||
 | 
			
		||||
;; This creates one-letter headings and works fine with utf-8 letters.
 | 
			
		||||
;; For Cyrillic with pdflatex works thanks to LICRcyr2utf8.xdy
 | 
			
		||||
(require "latin-lettergroups.xdy")
 | 
			
		||||
 | 
			
		||||
;; currently we don't (know how to easily) separate "Numbers" from
 | 
			
		||||
;; "Symbols" with xindy as is the case with makeindex.
 | 
			
		||||
(markup-index :open  "\begin{sphinxtheindex}
 | 
			
		||||
\let\lettergroup\sphinxstyleindexlettergroup
 | 
			
		||||
\let\lettergroupDefault\sphinxstyleindexlettergroupDefault
 | 
			
		||||
\let\spxpagem\sphinxstyleindexpagemain
 | 
			
		||||
\let\spxentry\sphinxstyleindexentry
 | 
			
		||||
\let\spxextra\sphinxstyleindexextra
 | 
			
		||||
 | 
			
		||||
"
 | 
			
		||||
	      :close "
 | 
			
		||||
 | 
			
		||||
\end{sphinxtheindex}
 | 
			
		||||
"
 | 
			
		||||
	      :tree)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,106 @@
 | 
			
		|||
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
 | 
			
		||||
\ProvidesPackage{sphinxhighlight}[2016/05/29 stylesheet for highlighting with pygments]
 | 
			
		||||
% Its contents depend on pygments_style configuration variable.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
\makeatletter
 | 
			
		||||
\def\PYG@reset{\let\PYG@it=\relax \let\PYG@bf=\relax%
 | 
			
		||||
    \let\PYG@ul=\relax \let\PYG@tc=\relax%
 | 
			
		||||
    \let\PYG@bc=\relax \let\PYG@ff=\relax}
 | 
			
		||||
\def\PYG@tok#1{\csname PYG@tok@#1\endcsname}
 | 
			
		||||
\def\PYG@toks#1+{\ifx\relax#1\empty\else%
 | 
			
		||||
    \PYG@tok{#1}\expandafter\PYG@toks\fi}
 | 
			
		||||
\def\PYG@do#1{\PYG@bc{\PYG@tc{\PYG@ul{%
 | 
			
		||||
    \PYG@it{\PYG@bf{\PYG@ff{#1}}}}}}}
 | 
			
		||||
\def\PYG#1#2{\PYG@reset\PYG@toks#1+\relax+\PYG@do{#2}}
 | 
			
		||||
 | 
			
		||||
\@namedef{PYG@tok@w}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@c}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@cp}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@cs}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}\def\PYG@bc##1{{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}}
 | 
			
		||||
\@namedef{PYG@tok@k}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@kp}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@kt}{\def\PYG@tc##1{\textcolor[rgb]{0.56,0.13,0.00}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@o}{\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@ow}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@nb}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@nf}{\def\PYG@tc##1{\textcolor[rgb]{0.02,0.16,0.49}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@nc}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.05,0.52,0.71}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@nn}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.05,0.52,0.71}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@ne}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@nv}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@no}{\def\PYG@tc##1{\textcolor[rgb]{0.38,0.68,0.84}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@nl}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.13,0.44}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@ni}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.84,0.33,0.22}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@na}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@nt}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.02,0.16,0.45}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@nd}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.33,0.33,0.33}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@s}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@sd}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@si}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.44,0.63,0.82}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@se}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@sr}{\def\PYG@tc##1{\textcolor[rgb]{0.14,0.33,0.53}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@ss}{\def\PYG@tc##1{\textcolor[rgb]{0.32,0.47,0.09}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@sx}{\def\PYG@tc##1{\textcolor[rgb]{0.78,0.36,0.04}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@m}{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@gh}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@gu}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@gd}{\def\PYG@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@gi}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@gr}{\def\PYG@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@ge}{\let\PYG@it=\textit}
 | 
			
		||||
\@namedef{PYG@tok@gs}{\let\PYG@bf=\textbf}
 | 
			
		||||
\@namedef{PYG@tok@gp}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.78,0.36,0.04}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@go}{\def\PYG@tc##1{\textcolor[rgb]{0.20,0.20,0.20}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@gt}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@err}{\def\PYG@bc##1{{\setlength{\fboxsep}{-\fboxrule}\fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{\strut ##1}}}}
 | 
			
		||||
\@namedef{PYG@tok@kc}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@kd}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@kn}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@kr}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@bp}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@fm}{\def\PYG@tc##1{\textcolor[rgb]{0.02,0.16,0.49}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@vc}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@vg}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@vi}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@vm}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@sa}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@sb}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@sc}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@dl}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@s2}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@sh}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@s1}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@mb}{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@mf}{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@mh}{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@mi}{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@il}{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@mo}{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@ch}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@cm}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@cpf}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}}
 | 
			
		||||
\@namedef{PYG@tok@c1}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}}
 | 
			
		||||
 | 
			
		||||
\def\PYGZbs{\char`\\}
 | 
			
		||||
\def\PYGZus{\char`\_}
 | 
			
		||||
\def\PYGZob{\char`\{}
 | 
			
		||||
\def\PYGZcb{\char`\}}
 | 
			
		||||
\def\PYGZca{\char`\^}
 | 
			
		||||
\def\PYGZam{\char`\&}
 | 
			
		||||
\def\PYGZlt{\char`\<}
 | 
			
		||||
\def\PYGZgt{\char`\>}
 | 
			
		||||
\def\PYGZsh{\char`\#}
 | 
			
		||||
\def\PYGZpc{\char`\%}
 | 
			
		||||
\def\PYGZdl{\char`\$}
 | 
			
		||||
\def\PYGZhy{\char`\-}
 | 
			
		||||
\def\PYGZsq{\char`\'}
 | 
			
		||||
\def\PYGZdq{\char`\"}
 | 
			
		||||
\def\PYGZti{\char`\~}
 | 
			
		||||
% for compatibility with earlier versions
 | 
			
		||||
\def\PYGZat{@}
 | 
			
		||||
\def\PYGZlb{[}
 | 
			
		||||
\def\PYGZrb{]}
 | 
			
		||||
\makeatother
 | 
			
		||||
 | 
			
		||||
\renewcommand\PYGZsq{\textquotesingle}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,102 @@
 | 
			
		|||
%
 | 
			
		||||
% sphinxhowto.cls for Sphinx (https://www.sphinx-doc.org/)
 | 
			
		||||
%
 | 
			
		||||
 | 
			
		||||
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
 | 
			
		||||
\ProvidesClass{sphinxhowto}[2019/12/01 v2.3.0 Document class (Sphinx howto)]
 | 
			
		||||
 | 
			
		||||
% 'oneside' option overriding the 'twoside' default
 | 
			
		||||
\newif\if@oneside
 | 
			
		||||
\DeclareOption{oneside}{\@onesidetrue}
 | 
			
		||||
% Pass remaining document options to the parent class.
 | 
			
		||||
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\sphinxdocclass}}
 | 
			
		||||
\ProcessOptions\relax
 | 
			
		||||
 | 
			
		||||
% Default to two-side document
 | 
			
		||||
\if@oneside
 | 
			
		||||
% nothing to do (oneside is the default)
 | 
			
		||||
\else
 | 
			
		||||
\PassOptionsToClass{twoside}{\sphinxdocclass}
 | 
			
		||||
\fi
 | 
			
		||||
 | 
			
		||||
\LoadClass{\sphinxdocclass}
 | 
			
		||||
 | 
			
		||||
% Set some sane defaults for section numbering depth and TOC depth.  You can
 | 
			
		||||
% reset these counters in your preamble.
 | 
			
		||||
%
 | 
			
		||||
\setcounter{secnumdepth}{2}
 | 
			
		||||
\setcounter{tocdepth}{2}% i.e. section and subsection
 | 
			
		||||
 | 
			
		||||
% Adapt \and command to the flushright context of \sphinxmaketitle, to
 | 
			
		||||
% avoid ragged line endings if author names do not fit all on one single line
 | 
			
		||||
\DeclareRobustCommand{\and}{%
 | 
			
		||||
    \end{tabular}\kern-\tabcolsep
 | 
			
		||||
    \allowbreak
 | 
			
		||||
    \hskip\dimexpr1em+\tabcolsep\@plus.17fil\begin{tabular}[t]{c}%
 | 
			
		||||
}%
 | 
			
		||||
% If it is desired that each author name be on its own line, use in preamble:
 | 
			
		||||
%\DeclareRobustCommand{\and}{%
 | 
			
		||||
%   \end{tabular}\kern-\tabcolsep\\\begin{tabular}[t]{c}%
 | 
			
		||||
%}%
 | 
			
		||||
% Change the title page to look a bit better, and fit in with the fncychap
 | 
			
		||||
% ``Bjarne'' style a bit better.
 | 
			
		||||
%
 | 
			
		||||
\newcommand{\sphinxmaketitle}{%
 | 
			
		||||
  \noindent\rule{\textwidth}{1pt}\par
 | 
			
		||||
    \begingroup % for PDF information dictionary
 | 
			
		||||
       \def\endgraf{ }\def\and{\& }%
 | 
			
		||||
       \pdfstringdefDisableCommands{\def\\{, }}% overwrite hyperref setup
 | 
			
		||||
       \hypersetup{pdfauthor={\@author}, pdftitle={\@title}}%
 | 
			
		||||
    \endgroup
 | 
			
		||||
  \begin{flushright}
 | 
			
		||||
    \sphinxlogo
 | 
			
		||||
    \py@HeaderFamily
 | 
			
		||||
    {\Huge \@title }\par
 | 
			
		||||
    {\itshape\large \py@release \releaseinfo}\par
 | 
			
		||||
    \vspace{25pt}
 | 
			
		||||
    {\Large
 | 
			
		||||
      \begin{tabular}[t]{c}
 | 
			
		||||
        \@author
 | 
			
		||||
      \end{tabular}\kern-\tabcolsep}\par
 | 
			
		||||
    \vspace{25pt}
 | 
			
		||||
    \@date \par
 | 
			
		||||
    \py@authoraddress \par
 | 
			
		||||
  \end{flushright}
 | 
			
		||||
  \@thanks
 | 
			
		||||
  \setcounter{footnote}{0}
 | 
			
		||||
  \let\thanks\relax\let\maketitle\relax
 | 
			
		||||
  %\gdef\@thanks{}\gdef\@author{}\gdef\@title{}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
\newcommand{\sphinxtableofcontents}{%
 | 
			
		||||
  \begingroup
 | 
			
		||||
    \parskip \z@skip
 | 
			
		||||
    \sphinxtableofcontentshook
 | 
			
		||||
    \tableofcontents
 | 
			
		||||
  \endgroup
 | 
			
		||||
  \noindent\rule{\textwidth}{1pt}\par
 | 
			
		||||
  \vspace{12pt}%
 | 
			
		||||
}
 | 
			
		||||
\newcommand\sphinxtableofcontentshook{}
 | 
			
		||||
\pagenumbering{arabic}
 | 
			
		||||
 | 
			
		||||
% Fix the bibliography environment to add an entry to the Table of
 | 
			
		||||
% Contents.
 | 
			
		||||
% For an article document class this environment is a section,
 | 
			
		||||
% so no page break before it.
 | 
			
		||||
%
 | 
			
		||||
\newenvironment{sphinxthebibliography}[1]{%
 | 
			
		||||
  % \phantomsection % not needed here since TeXLive 2010's hyperref
 | 
			
		||||
  \begin{thebibliography}{#1}%
 | 
			
		||||
  \addcontentsline{toc}{section}{\ifdefined\refname\refname\else\ifdefined\bibname\bibname\fi\fi}}{\end{thebibliography}}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
% Same for the indices.
 | 
			
		||||
% The memoir class already does this, so we don't duplicate it in that case.
 | 
			
		||||
%
 | 
			
		||||
\@ifclassloaded{memoir}
 | 
			
		||||
 {\newenvironment{sphinxtheindex}{\begin{theindex}}{\end{theindex}}}
 | 
			
		||||
 {\newenvironment{sphinxtheindex}{%
 | 
			
		||||
    \phantomsection % needed because no chapter, section, ... is created by theindex
 | 
			
		||||
    \begin{theindex}%
 | 
			
		||||
    \addcontentsline{toc}{section}{\indexname}}{\end{theindex}}}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,148 @@
 | 
			
		|||
%% NOTICES AND ADMONITIONS
 | 
			
		||||
%
 | 
			
		||||
% change this info string if making any custom modification
 | 
			
		||||
\ProvidesFile{sphinxlatexadmonitions.sty}[2021/01/27 admonitions]
 | 
			
		||||
 | 
			
		||||
% Provides support for this output mark-up from Sphinx latex writer:
 | 
			
		||||
%
 | 
			
		||||
% - sphinxadmonition (environment)
 | 
			
		||||
%   This is a dispatch supporting
 | 
			
		||||
%
 | 
			
		||||
%   - note, hint, important, tip                 (via sphinxlightbox)
 | 
			
		||||
%   - warning, caution, attention, danger, error (via sphinxheavybox)
 | 
			
		||||
%
 | 
			
		||||
%   Each sphinx<notice name> environment can be redefined by user.
 | 
			
		||||
%   The defaults are customizable via various colour and dimension
 | 
			
		||||
%   settings, cf sphinx docs (latex customization).
 | 
			
		||||
%
 | 
			
		||||
% Requires:
 | 
			
		||||
\RequirePackage{framed}% used by sphinxheavybox
 | 
			
		||||
%
 | 
			
		||||
% Dependencies (they do not need to be defined at time of loading):
 | 
			
		||||
% - of course the various colour and dimension options handled via sphinx.sty
 | 
			
		||||
% - \sphinxstrong (for sphinxlightbox and sphinxheavybox)
 | 
			
		||||
% - dimension register \spx@image@maxheight from sphinxlatexgraphics.sty
 | 
			
		||||
% - \savenotes/\spewnotes from sphinxpackagefootnote (for sphinxheavybox)
 | 
			
		||||
 | 
			
		||||
% Provides: (also in sphinxlatexliterals.sty)
 | 
			
		||||
\providecommand*\sphinxvspacefixafterfrenchlists{%
 | 
			
		||||
   \ifvmode\ifdim\lastskip<\z@ \vskip\parskip\fi\else\par\fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
% Some are quite plain
 | 
			
		||||
% the spx@notice@bordercolor etc are set in the sphinxadmonition environment
 | 
			
		||||
\newenvironment{sphinxlightbox}{%
 | 
			
		||||
  \par
 | 
			
		||||
  \noindent{\color{spx@notice@bordercolor}%
 | 
			
		||||
            \rule{\linewidth}{\spx@notice@border}}\par\nobreak
 | 
			
		||||
  {\parskip\z@skip\noindent}%
 | 
			
		||||
  }
 | 
			
		||||
  {%
 | 
			
		||||
  % counteract previous possible negative skip (French lists!):
 | 
			
		||||
  % (we can't cancel that any earlier \vskip introduced a potential pagebreak)
 | 
			
		||||
  \sphinxvspacefixafterfrenchlists
 | 
			
		||||
  \nobreak\vbox{\noindent\kern\@totalleftmargin
 | 
			
		||||
      {\color{spx@notice@bordercolor}%
 | 
			
		||||
       \rule[\dimexpr.4\baselineskip-\spx@notice@border\relax]
 | 
			
		||||
             {\linewidth}{\spx@notice@border}}\hss}\allowbreak
 | 
			
		||||
  }% end of sphinxlightbox environment definition
 | 
			
		||||
% may be renewenvironment'd by user for complete customization
 | 
			
		||||
\newenvironment{sphinxnote}[1]
 | 
			
		||||
  {\begin{sphinxlightbox}\sphinxstrong{#1} }{\end{sphinxlightbox}}
 | 
			
		||||
\newenvironment{sphinxhint}[1]
 | 
			
		||||
  {\begin{sphinxlightbox}\sphinxstrong{#1} }{\end{sphinxlightbox}}
 | 
			
		||||
\newenvironment{sphinximportant}[1]
 | 
			
		||||
  {\begin{sphinxlightbox}\sphinxstrong{#1} }{\end{sphinxlightbox}}
 | 
			
		||||
\newenvironment{sphinxtip}[1]
 | 
			
		||||
  {\begin{sphinxlightbox}\sphinxstrong{#1} }{\end{sphinxlightbox}}
 | 
			
		||||
% or just use the package options
 | 
			
		||||
% these are needed for common handling by notice environment of lightbox
 | 
			
		||||
% and heavybox but they are  currently not used by lightbox environment
 | 
			
		||||
% and there is consequently no corresponding package option
 | 
			
		||||
\definecolor{sphinxnoteBgColor}{rgb}{1,1,1}
 | 
			
		||||
\definecolor{sphinxhintBgColor}{rgb}{1,1,1}
 | 
			
		||||
\definecolor{sphinximportantBgColor}{rgb}{1,1,1}
 | 
			
		||||
\definecolor{sphinxtipBgColor}{rgb}{1,1,1}
 | 
			
		||||
 | 
			
		||||
% Others get more distinction
 | 
			
		||||
% Code adapted from framed.sty's "snugshade" environment.
 | 
			
		||||
% Nesting works (inner frames do not allow page breaks).
 | 
			
		||||
\newenvironment{sphinxheavybox}{\par
 | 
			
		||||
   \setlength{\FrameRule}{\spx@notice@border}%
 | 
			
		||||
   \setlength{\FrameSep}{\dimexpr.6\baselineskip-\FrameRule\relax}
 | 
			
		||||
   \advance\spx@image@maxheight
 | 
			
		||||
   -\dimexpr2\FrameRule
 | 
			
		||||
           +2\FrameSep
 | 
			
		||||
           +\baselineskip\relax % will happen again if nested, needed indeed!
 | 
			
		||||
   % configure framed.sty's parameters to obtain same vertical spacing
 | 
			
		||||
   % as for "light" boxes. We need for this to manually insert parskip glue and
 | 
			
		||||
   % revert a skip done by framed before the frame.
 | 
			
		||||
    \ltx@ifundefined{OuterFrameSep}{}{\OuterFrameSep\z@skip}%
 | 
			
		||||
    \vspace{\FrameHeightAdjust}
 | 
			
		||||
   % copied/adapted from framed.sty's snugshade
 | 
			
		||||
   \def\FrameCommand##1{\hskip\@totalleftmargin
 | 
			
		||||
       \fboxsep\FrameSep \fboxrule\FrameRule
 | 
			
		||||
       \fcolorbox{spx@notice@bordercolor}{spx@notice@bgcolor}{##1}%
 | 
			
		||||
       \hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth}%
 | 
			
		||||
   \savenotes
 | 
			
		||||
   % use a minipage if we are already inside a framed environment
 | 
			
		||||
   \ifspx@inframed
 | 
			
		||||
       \noindent\begin{minipage}{\linewidth}
 | 
			
		||||
   \else
 | 
			
		||||
       % handle case where notice is first thing in a list item (or is quoted)
 | 
			
		||||
       \if@inlabel
 | 
			
		||||
        \noindent\par\vspace{-\baselineskip}
 | 
			
		||||
       \else
 | 
			
		||||
        \vspace{\parskip}
 | 
			
		||||
       \fi
 | 
			
		||||
   \fi
 | 
			
		||||
   \MakeFramed {\spx@inframedtrue
 | 
			
		||||
     \advance\hsize-\width \@totalleftmargin\z@ \linewidth\hsize
 | 
			
		||||
     % minipage initialization copied from LaTeX source code.
 | 
			
		||||
     \@pboxswfalse
 | 
			
		||||
     \let\@listdepth\@mplistdepth \@mplistdepth\z@
 | 
			
		||||
     \@minipagerestore
 | 
			
		||||
     \@setminipage }%
 | 
			
		||||
   }
 | 
			
		||||
   {%
 | 
			
		||||
   \par\unskip
 | 
			
		||||
   \@minipagefalse
 | 
			
		||||
   \endMakeFramed
 | 
			
		||||
   \ifspx@inframed\end{minipage}\fi
 | 
			
		||||
   % set footnotes at bottom of page
 | 
			
		||||
   \spewnotes
 | 
			
		||||
   % arrange for similar spacing below frame as for "light" boxes.
 | 
			
		||||
   \vskip .4\baselineskip
 | 
			
		||||
   }% end of sphinxheavybox environment definition
 | 
			
		||||
% may be renewenvironment'd by user for complete customization
 | 
			
		||||
\newenvironment{sphinxwarning}[1]
 | 
			
		||||
  {\begin{sphinxheavybox}\sphinxstrong{#1} }{\end{sphinxheavybox}}
 | 
			
		||||
\newenvironment{sphinxcaution}[1]
 | 
			
		||||
  {\begin{sphinxheavybox}\sphinxstrong{#1} }{\end{sphinxheavybox}}
 | 
			
		||||
\newenvironment{sphinxattention}[1]
 | 
			
		||||
  {\begin{sphinxheavybox}\sphinxstrong{#1} }{\end{sphinxheavybox}}
 | 
			
		||||
\newenvironment{sphinxdanger}[1]
 | 
			
		||||
  {\begin{sphinxheavybox}\sphinxstrong{#1} }{\end{sphinxheavybox}}
 | 
			
		||||
\newenvironment{sphinxerror}[1]
 | 
			
		||||
  {\begin{sphinxheavybox}\sphinxstrong{#1} }{\end{sphinxheavybox}}
 | 
			
		||||
% or just use package options
 | 
			
		||||
 | 
			
		||||
% the \colorlet of xcolor (if at all loaded) is overkill for our use case
 | 
			
		||||
\newcommand{\sphinxcolorlet}[2]
 | 
			
		||||
    {\expandafter\let\csname\@backslashchar color@#1\expandafter\endcsname
 | 
			
		||||
                     \csname\@backslashchar color@#2\endcsname }
 | 
			
		||||
 | 
			
		||||
% the main dispatch for all types of notices
 | 
			
		||||
\newenvironment{sphinxadmonition}[2]{% #1=type, #2=heading
 | 
			
		||||
  % can't use #1 directly in definition of end part
 | 
			
		||||
  \def\spx@noticetype {#1}%
 | 
			
		||||
  % set parameters of heavybox/lightbox
 | 
			
		||||
  \sphinxcolorlet{spx@notice@bordercolor}{sphinx#1BorderColor}%
 | 
			
		||||
  \sphinxcolorlet{spx@notice@bgcolor}{sphinx#1BgColor}%
 | 
			
		||||
  \spx@notice@border \dimexpr\csname spx@opt@#1border\endcsname\relax
 | 
			
		||||
  % start specific environment, passing the heading as argument
 | 
			
		||||
  \begin{sphinx#1}{#2}}
 | 
			
		||||
  % workaround some LaTeX "feature" of \end command
 | 
			
		||||
 {\edef\spx@temp{\noexpand\end{sphinx\spx@noticetype}}\spx@temp}
 | 
			
		||||
 | 
			
		||||
\endinput
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
%% CONTAINER DIRECTIVES
 | 
			
		||||
%
 | 
			
		||||
% change this info string if making any custom modification
 | 
			
		||||
\ProvidesFile{sphinxlatexcontainers.sty}[2021/05/03 containers]
 | 
			
		||||
 | 
			
		||||
% The purpose of this file is to provide a dummy environment sphinxclass which
 | 
			
		||||
% will be inserted for each class in each container directive. The class name
 | 
			
		||||
% will be passed as the argument to the environment. 
 | 
			
		||||
%
 | 
			
		||||
% For a class foo, the user can define customised handling of that class by
 | 
			
		||||
% defining the sphinxclassfoo LaTeX environment.
 | 
			
		||||
 | 
			
		||||
\newenvironment{sphinxuseclass}[1]{%
 | 
			
		||||
    \def\sphinxClassFunctionName{sphinxclass#1}%
 | 
			
		||||
    \ltx@ifundefined{\sphinxClassFunctionName}%
 | 
			
		||||
        {}% undefined so do nothing
 | 
			
		||||
        {\expandafter\begin\expandafter{\sphinxClassFunctionName}}%
 | 
			
		||||
}{%
 | 
			
		||||
    \ltx@ifundefined{\sphinxClassFunctionName}%
 | 
			
		||||
        {}% we did nothing so we keep doing nothing
 | 
			
		||||
        {\expandafter\end\expandafter{\sphinxClassFunctionName}}%
 | 
			
		||||
}%
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,122 @@
 | 
			
		|||
%% GRAPHICS
 | 
			
		||||
%
 | 
			
		||||
% change this info string if making any custom modification
 | 
			
		||||
\ProvidesFile{sphinxlatexgraphics.sty}[2021/01/27 graphics]
 | 
			
		||||
 | 
			
		||||
% Provides support for this output mark-up from Sphinx latex writer:
 | 
			
		||||
%
 | 
			
		||||
% - macros:
 | 
			
		||||
%
 | 
			
		||||
%   - \sphinxfigcaption
 | 
			
		||||
%   - \sphinxincludegraphics
 | 
			
		||||
%
 | 
			
		||||
% - environments:
 | 
			
		||||
%
 | 
			
		||||
%   - sphinxfigure-in-table
 | 
			
		||||
%
 | 
			
		||||
% May change:
 | 
			
		||||
%
 | 
			
		||||
% - \sphinxcaption (at begin document)
 | 
			
		||||
%
 | 
			
		||||
% Also provides:
 | 
			
		||||
%
 | 
			
		||||
% - \sphinxsafeincludegraphics (default of \sphinxincludegraphics since 2.0)
 | 
			
		||||
% - \spx@image@maxheight dimension (used by sphinxlatexadmonitions.sty)
 | 
			
		||||
% - \spx@image@box scratch box register (also used by sphinxlatexliterals.sty)
 | 
			
		||||
%
 | 
			
		||||
% Requires:
 | 
			
		||||
% \RequirePackage{graphicx}% done in sphinx.sty
 | 
			
		||||
\RequirePackage{amstext}% needed for \firstchoice@true(false)
 | 
			
		||||
 | 
			
		||||
% \sphinxincludegraphics resizes images larger than the TeX \linewidth (which
 | 
			
		||||
% is adjusted in indented environments), or taller than a certain maximal
 | 
			
		||||
% height (usually \textheight and this is reduced in the environments which use
 | 
			
		||||
% framed.sty to avoid infinite loop if image too tall).
 | 
			
		||||
%
 | 
			
		||||
% In case height or width options are present the rescaling is done
 | 
			
		||||
% (since 2.0), in a way keeping the width:height ratio either native from
 | 
			
		||||
% image or from the width and height options if both were present.
 | 
			
		||||
%
 | 
			
		||||
\newdimen\spx@image@maxheight
 | 
			
		||||
\AtBeginDocument{\spx@image@maxheight\textheight}
 | 
			
		||||
 | 
			
		||||
% box scratch register
 | 
			
		||||
\newbox\spx@image@box
 | 
			
		||||
\newcommand*{\sphinxsafeincludegraphics}[2][]{%
 | 
			
		||||
    % #1 contains possibly width=, height=, but no scale= since 1.8.4
 | 
			
		||||
    \setbox\spx@image@box\hbox{\includegraphics[#1,draft]{#2}}%
 | 
			
		||||
    \in@false % use some handy boolean flag
 | 
			
		||||
    \ifdim \wd\spx@image@box>\linewidth
 | 
			
		||||
      \in@true % flag to remember to adjust options and set box dimensions
 | 
			
		||||
      % compute height which results from rescaling width to \linewidth
 | 
			
		||||
      % and keep current aspect ratio. multiply-divide in \numexpr uses
 | 
			
		||||
      % temporarily doubled precision, hence no overflow. (of course we
 | 
			
		||||
      % assume \ht is not a few sp's below \maxdimen...(about 16384pt).
 | 
			
		||||
      \edef\spx@image@rescaledheight % with sp units
 | 
			
		||||
           {\the\numexpr\ht\spx@image@box
 | 
			
		||||
                        *\linewidth/\wd\spx@image@box sp}%
 | 
			
		||||
      \ifdim\spx@image@rescaledheight>\spx@image@maxheight
 | 
			
		||||
        % the rescaled height will be too big, so it is height which decides
 | 
			
		||||
        % the rescaling factor
 | 
			
		||||
        \def\spx@image@requiredheight{\spx@image@maxheight}% dimen register
 | 
			
		||||
        \edef\spx@image@requiredwidth % with sp units
 | 
			
		||||
         {\the\numexpr\wd\spx@image@box
 | 
			
		||||
                      *\spx@image@maxheight/\ht\spx@image@box sp}%
 | 
			
		||||
        % TODO: decide if this commented-out block could be needed due to
 | 
			
		||||
        % rounding in numexpr operations going up
 | 
			
		||||
        % \ifdim\spx@image@requiredwidth>\linewidth
 | 
			
		||||
        %     \def\spx@image@requiredwidth{\linewidth}% dimen register
 | 
			
		||||
        % \fi
 | 
			
		||||
      \else
 | 
			
		||||
        \def\spx@image@requiredwidth{\linewidth}% dimen register
 | 
			
		||||
        \let\spx@image@requiredheight\spx@image@rescaledheight% sp units
 | 
			
		||||
      \fi
 | 
			
		||||
    \else
 | 
			
		||||
      % width is ok, let's check height
 | 
			
		||||
      \ifdim\ht\spx@image@box>\spx@image@maxheight
 | 
			
		||||
        \in@true
 | 
			
		||||
        \edef\spx@image@requiredwidth % with sp units
 | 
			
		||||
            {\the\numexpr\wd\spx@image@box
 | 
			
		||||
                         *\spx@image@maxheight/\ht\spx@image@box sp}%
 | 
			
		||||
        \def\spx@image@requiredheight{\spx@image@maxheight}% dimen register
 | 
			
		||||
      \fi
 | 
			
		||||
    \fi % end of check of width and height
 | 
			
		||||
    \ifin@
 | 
			
		||||
      \setbox\spx@image@box
 | 
			
		||||
      \hbox{\includegraphics
 | 
			
		||||
            [%#1,% contained only width and/or height and overruled anyhow
 | 
			
		||||
            width=\spx@image@requiredwidth,height=\spx@image@requiredheight]%
 | 
			
		||||
            {#2}}%
 | 
			
		||||
      % \includegraphics does not set box dimensions to the exactly
 | 
			
		||||
      % requested ones, see https://github.com/latex3/latex2e/issues/112
 | 
			
		||||
      \wd\spx@image@box\spx@image@requiredwidth
 | 
			
		||||
      \ht\spx@image@box\spx@image@requiredheight
 | 
			
		||||
      \leavevmode\box\spx@image@box
 | 
			
		||||
    \else
 | 
			
		||||
      % here we do not modify the options, no need to adjust width and height
 | 
			
		||||
      % on output, they will be computed exactly as with "draft" option
 | 
			
		||||
      \setbox\spx@image@box\box\voidb@x % clear memory
 | 
			
		||||
      \includegraphics[#1]{#2}%
 | 
			
		||||
    \fi
 | 
			
		||||
}%
 | 
			
		||||
% Use the "safe" one by default (2.0)
 | 
			
		||||
\def\sphinxincludegraphics{\sphinxsafeincludegraphics}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% FIGURE IN TABLE
 | 
			
		||||
%
 | 
			
		||||
\newenvironment{sphinxfigure-in-table}[1][\linewidth]{%
 | 
			
		||||
  \def\@captype{figure}%
 | 
			
		||||
  \sphinxsetvskipsforfigintablecaption
 | 
			
		||||
  \begin{minipage}{#1}%
 | 
			
		||||
}{\end{minipage}}
 | 
			
		||||
% tabulary expands twice contents, we need to prevent double counter stepping
 | 
			
		||||
\newcommand*\sphinxfigcaption
 | 
			
		||||
  {\ifx\equation$%$% this is trick to identify tabulary first pass
 | 
			
		||||
       \firstchoice@false\else\firstchoice@true\fi
 | 
			
		||||
   \spx@originalcaption }
 | 
			
		||||
\newcommand*\sphinxsetvskipsforfigintablecaption
 | 
			
		||||
  {\abovecaptionskip\smallskipamount
 | 
			
		||||
   \belowcaptionskip\smallskipamount}
 | 
			
		||||
 | 
			
		||||
\endinput
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,69 @@
 | 
			
		|||
%% INDEX, BIBLIOGRAPHY, APPENDIX, TABLE OF CONTENTS
 | 
			
		||||
%
 | 
			
		||||
% change this info string if making any custom modification
 | 
			
		||||
\ProvidesFile{sphinxlatexindbibtoc.sty}[2021/01/27 index, bib., toc]
 | 
			
		||||
 | 
			
		||||
% Provides support for this output mark-up from Sphinx latex writer:
 | 
			
		||||
%
 | 
			
		||||
% - environments: (backup defaults or get redefined)
 | 
			
		||||
%
 | 
			
		||||
%   - sphinxtheindex (direct mark-up or via python.ist or sphinx.xdy)
 | 
			
		||||
%   - sphinxthebibliography
 | 
			
		||||
%
 | 
			
		||||
% - macros: (defines defaults)
 | 
			
		||||
%
 | 
			
		||||
%   - \sphinxmaketitle
 | 
			
		||||
%   - \sphinxtableofcontents
 | 
			
		||||
%   - \sphinxnonalphabeticalgroupname
 | 
			
		||||
%   - \sphinxsymbolsname
 | 
			
		||||
%   - \sphinxnumbersname
 | 
			
		||||
%   - \sphinxcite
 | 
			
		||||
%
 | 
			
		||||
% Requires:
 | 
			
		||||
\RequirePackage{makeidx}
 | 
			
		||||
 | 
			
		||||
% fix the double index and bibliography on the table of contents
 | 
			
		||||
% in jsclasses (Japanese standard document classes)
 | 
			
		||||
\ifx\@jsc@uplatextrue\@undefined\else
 | 
			
		||||
  \renewenvironment{sphinxtheindex}
 | 
			
		||||
    {\cleardoublepage\phantomsection
 | 
			
		||||
     \begin{theindex}}
 | 
			
		||||
    {\end{theindex}}
 | 
			
		||||
 | 
			
		||||
  \renewenvironment{sphinxthebibliography}[1]
 | 
			
		||||
    {\cleardoublepage% \phantomsection % not needed here since TeXLive 2010's hyperref
 | 
			
		||||
     \begin{thebibliography}{#1}}
 | 
			
		||||
    {\end{thebibliography}}
 | 
			
		||||
\fi
 | 
			
		||||
 | 
			
		||||
% disable \@chappos in Appendix in pTeX
 | 
			
		||||
\ifx\kanjiskip\@undefined\else
 | 
			
		||||
  \let\py@OldAppendix=\appendix
 | 
			
		||||
  \renewcommand{\appendix}{
 | 
			
		||||
    \py@OldAppendix
 | 
			
		||||
    \gdef\@chappos{}
 | 
			
		||||
  }
 | 
			
		||||
\fi
 | 
			
		||||
 | 
			
		||||
% make commands known to non-Sphinx document classes
 | 
			
		||||
\providecommand*{\sphinxmaketitle}{\maketitle}
 | 
			
		||||
\providecommand*{\sphinxtableofcontents}{\tableofcontents}
 | 
			
		||||
\ltx@ifundefined{sphinxthebibliography}
 | 
			
		||||
 {\newenvironment
 | 
			
		||||
  {sphinxthebibliography}{\begin{thebibliography}}{\end{thebibliography}}%
 | 
			
		||||
 }
 | 
			
		||||
 {}% else clause of \ltx@ifundefined
 | 
			
		||||
\ltx@ifundefined{sphinxtheindex}
 | 
			
		||||
 {\newenvironment{sphinxtheindex}{\begin{theindex}}{\end{theindex}}}%
 | 
			
		||||
 {}% else clause of \ltx@ifundefined
 | 
			
		||||
 | 
			
		||||
% for usage with xindy: this string gets internationalized in preamble
 | 
			
		||||
\newcommand*{\sphinxnonalphabeticalgroupname}{}
 | 
			
		||||
% redefined in preamble, headings for makeindex produced index
 | 
			
		||||
\newcommand*{\sphinxsymbolsname}{}
 | 
			
		||||
\newcommand*{\sphinxnumbersname}{}
 | 
			
		||||
 | 
			
		||||
\protected\def\sphinxcite{\cite}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
\endinput
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,97 @@
 | 
			
		|||
%% ALPHANUMERIC LIST ITEMS
 | 
			
		||||
%
 | 
			
		||||
% change this info string if making any custom modification
 | 
			
		||||
\ProvidesFile{sphinxlatexlists.sty}[2021/01/27 lists]
 | 
			
		||||
 | 
			
		||||
% Provides support for this output mark-up from Sphinx latex writer:
 | 
			
		||||
% - \sphinxsetlistlabels
 | 
			
		||||
 | 
			
		||||
% Dependencies: the \spx@opt@maxlistdepth from sphinx.sty
 | 
			
		||||
 | 
			
		||||
\newcommand\sphinxsetlistlabels[5]
 | 
			
		||||
{% #1 = style, #2 = enum, #3 = enumnext, #4 = prefix, #5 = suffix
 | 
			
		||||
 % #2 and #3 are counters used by enumerate environment e.g. enumi, enumii.
 | 
			
		||||
 % #1 is a macro such as \arabic or \alph
 | 
			
		||||
 % prefix and suffix are strings (by default empty and a dot).
 | 
			
		||||
 \@namedef{the#2}{#1{#2}}%
 | 
			
		||||
 \@namedef{label#2}{#4\@nameuse{the#2}#5}%
 | 
			
		||||
 \@namedef{p@#3}{\@nameuse{p@#2}#4\@nameuse{the#2}#5}%
 | 
			
		||||
}%
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% MAXLISTDEPTH
 | 
			
		||||
%
 | 
			
		||||
% remove LaTeX's cap on nesting depth if 'maxlistdepth' key used.
 | 
			
		||||
% This is a hack, which works with the standard classes: it assumes \@toodeep
 | 
			
		||||
% is always used in "true" branches: "\if ... \@toodeep \else .. \fi."
 | 
			
		||||
 | 
			
		||||
% will force use the "false" branch (if there is one)
 | 
			
		||||
\def\spx@toodeep@hack{\fi\iffalse}
 | 
			
		||||
 | 
			
		||||
% do nothing if 'maxlistdepth' key not used or if package enumitem loaded.
 | 
			
		||||
\ifnum\spx@opt@maxlistdepth=\z@\expandafter\@gobbletwo\fi
 | 
			
		||||
\AtBeginDocument{%
 | 
			
		||||
\@ifpackageloaded{enumitem}{\remove@to@nnil}{}%
 | 
			
		||||
  \let\spx@toodeepORI\@toodeep
 | 
			
		||||
  \def\@toodeep{%
 | 
			
		||||
    \ifnum\@listdepth<\spx@opt@maxlistdepth\relax
 | 
			
		||||
      \expandafter\spx@toodeep@hack
 | 
			
		||||
    \else
 | 
			
		||||
      \expandafter\spx@toodeepORI
 | 
			
		||||
    \fi}%
 | 
			
		||||
% define all missing \@list... macros
 | 
			
		||||
  \count@\@ne
 | 
			
		||||
  \loop
 | 
			
		||||
     \ltx@ifundefined{@list\romannumeral\the\count@}
 | 
			
		||||
       {\iffalse}{\iftrue\advance\count@\@ne}%
 | 
			
		||||
  \repeat
 | 
			
		||||
  \loop
 | 
			
		||||
     \ifnum\count@>\spx@opt@maxlistdepth\relax\else
 | 
			
		||||
       \expandafter\let
 | 
			
		||||
         \csname @list\romannumeral\the\count@\expandafter\endcsname
 | 
			
		||||
         \csname @list\romannumeral\the\numexpr\count@-\@ne\endcsname
 | 
			
		||||
       % workaround 2.6--3.2d babel-french issue (fixed in 3.2e; no change needed)
 | 
			
		||||
       \ltx@ifundefined{leftmargin\romannumeral\the\count@}
 | 
			
		||||
       {\expandafter\let
 | 
			
		||||
         \csname leftmargin\romannumeral\the\count@\expandafter\endcsname
 | 
			
		||||
         \csname leftmargin\romannumeral\the\numexpr\count@-\@ne\endcsname}{}%
 | 
			
		||||
     \advance\count@\@ne
 | 
			
		||||
  \repeat
 | 
			
		||||
% define all missing enum... counters and \labelenum... macros and \p@enum..
 | 
			
		||||
  \count@\@ne
 | 
			
		||||
  \loop
 | 
			
		||||
     \ltx@ifundefined{c@enum\romannumeral\the\count@}
 | 
			
		||||
       {\iffalse}{\iftrue\advance\count@\@ne}%
 | 
			
		||||
  \repeat
 | 
			
		||||
  \loop
 | 
			
		||||
     \ifnum\count@>\spx@opt@maxlistdepth\relax\else
 | 
			
		||||
       \newcounter{enum\romannumeral\the\count@}%
 | 
			
		||||
       \expandafter\def
 | 
			
		||||
         \csname labelenum\romannumeral\the\count@\expandafter\endcsname
 | 
			
		||||
         \expandafter
 | 
			
		||||
         {\csname theenum\romannumeral\the\numexpr\count@\endcsname.}%
 | 
			
		||||
       \expandafter\def
 | 
			
		||||
         \csname p@enum\romannumeral\the\count@\expandafter\endcsname
 | 
			
		||||
         \expandafter
 | 
			
		||||
         {\csname p@enum\romannumeral\the\numexpr\count@-\@ne\expandafter
 | 
			
		||||
          \endcsname\csname theenum\romannumeral\the\numexpr\count@-\@ne\endcsname.}%
 | 
			
		||||
     \advance\count@\@ne
 | 
			
		||||
  \repeat
 | 
			
		||||
% define all missing labelitem... macros
 | 
			
		||||
  \count@\@ne
 | 
			
		||||
  \loop
 | 
			
		||||
     \ltx@ifundefined{labelitem\romannumeral\the\count@}
 | 
			
		||||
     {\iffalse}{\iftrue\advance\count@\@ne}%
 | 
			
		||||
  \repeat
 | 
			
		||||
  \loop
 | 
			
		||||
     \ifnum\count@>\spx@opt@maxlistdepth\relax\else
 | 
			
		||||
       \expandafter\let
 | 
			
		||||
         \csname labelitem\romannumeral\the\count@\expandafter\endcsname
 | 
			
		||||
         \csname labelitem\romannumeral\the\numexpr\count@-\@ne\endcsname
 | 
			
		||||
     \advance\count@\@ne
 | 
			
		||||
  \repeat
 | 
			
		||||
  \PackageInfo{sphinx}{maximal list depth extended to \spx@opt@maxlistdepth}%
 | 
			
		||||
\@gobble\@nnil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
\endinput
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,804 @@
 | 
			
		|||
%% LITERAL BLOCKS
 | 
			
		||||
%
 | 
			
		||||
% change this info string if making any custom modification
 | 
			
		||||
\ProvidesFile{sphinxlatexliterals.sty}[2021/12/06 code-blocks and parsed literals]
 | 
			
		||||
 | 
			
		||||
% Provides support for this output mark-up from Sphinx latex writer:
 | 
			
		||||
%
 | 
			
		||||
% - macros:
 | 
			
		||||
%   - \sphinxLiteralBlockLabel
 | 
			
		||||
%   - \sphinxSetupCaptionForVerbatim
 | 
			
		||||
%   - \sphinxSetupCodeBlockInFootnote
 | 
			
		||||
%   - \sphinxhref
 | 
			
		||||
%   - \sphinxnolinkurl
 | 
			
		||||
%   - \sphinxresetverbatimhllines
 | 
			
		||||
%   - \sphinxunactivateextrasandspace
 | 
			
		||||
%   - \sphinxupquote
 | 
			
		||||
%   - \sphinxurl
 | 
			
		||||
%
 | 
			
		||||
% - environments:
 | 
			
		||||
%   - sphinxVerbatim
 | 
			
		||||
%   - sphinxVerbatimintable
 | 
			
		||||
%   - sphinxalltt
 | 
			
		||||
%
 | 
			
		||||
% Dependency:
 | 
			
		||||
%
 | 
			
		||||
% - hyperref (for \phantomsection and \capstart) (loaded later)
 | 
			
		||||
%
 | 
			
		||||
% Executes \RequirePackage for:
 | 
			
		||||
%
 | 
			
		||||
% - framed
 | 
			
		||||
% - fancyvrb
 | 
			
		||||
% - alltt
 | 
			
		||||
% - upquote
 | 
			
		||||
% - needspace
 | 
			
		||||
 | 
			
		||||
% also in sphinxlatexadmonitions.sty:
 | 
			
		||||
% This is a workaround to a "feature" of French lists, when literal block
 | 
			
		||||
% follows immediately; usable generally (does only \par then), a priori...
 | 
			
		||||
\providecommand*\sphinxvspacefixafterfrenchlists{%
 | 
			
		||||
   \ifvmode\ifdim\lastskip<\z@ \vskip\parskip\fi\else\par\fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
% For framing allowing pagebreaks
 | 
			
		||||
\RequirePackage{framed}
 | 
			
		||||
% For source code
 | 
			
		||||
% MEMO: fancyvrb is used mainly to
 | 
			
		||||
% 1- control horizontal and vertical spacing
 | 
			
		||||
% 2- optional line numbering
 | 
			
		||||
% 3- optional line emphasizing
 | 
			
		||||
% 4- while still allowing expansion of Pygments latex mark-up
 | 
			
		||||
% Other aspects such as framing, caption handling, codeline wrapping are
 | 
			
		||||
% added on top of it. We should stop using fancyvrb and implement
 | 
			
		||||
% 1, 2, 3, 4 by own Sphinx fully native Verbatim. This would allow to solve
 | 
			
		||||
% limitations with wrapped long code line not allowing page break.
 | 
			
		||||
\RequirePackage{fancyvrb}
 | 
			
		||||
% For parsed-literal blocks.
 | 
			
		||||
\RequirePackage{alltt}
 | 
			
		||||
% Display "real" single quotes in literal blocks.
 | 
			
		||||
\RequirePackage{upquote}
 | 
			
		||||
% Skip to next page if not enough space at bottom
 | 
			
		||||
\RequirePackage{needspace}
 | 
			
		||||
 | 
			
		||||
% Based on use of "fancyvrb.sty"'s Verbatim.
 | 
			
		||||
% - with framing allowing page breaks ("framed.sty")
 | 
			
		||||
% - with breaking of long lines (exploits Pygments mark-up),
 | 
			
		||||
% - with possibly of a top caption, non-separable by pagebreak.
 | 
			
		||||
% - and usable inside tables or footnotes ("sphinxpackagefootnote.sty").
 | 
			
		||||
 | 
			
		||||
% for emphasizing lines
 | 
			
		||||
\define@key{FV}{hllines}{\def\sphinx@verbatim@checkifhl##1{\in@{, ##1,}{#1}}}
 | 
			
		||||
% sphinxVerbatim must be usable by third party without requiring hllines set-up
 | 
			
		||||
\def\sphinxresetverbatimhllines{\def\sphinx@verbatim@checkifhl##1{\in@false}}
 | 
			
		||||
\sphinxresetverbatimhllines
 | 
			
		||||
 | 
			
		||||
% Prior to Sphinx 1.5, \Verbatim and \endVerbatim were modified by Sphinx.
 | 
			
		||||
% The aliases defined here are used in sphinxVerbatim environment and can
 | 
			
		||||
% serve as hook-points with no need to modify \Verbatim itself.
 | 
			
		||||
\let\OriginalVerbatim   \Verbatim
 | 
			
		||||
\let\endOriginalVerbatim\endVerbatim
 | 
			
		||||
 | 
			
		||||
% for captions of literal blocks
 | 
			
		||||
% at start of caption title
 | 
			
		||||
\newcommand*{\fnum@literalblock}{\literalblockname\nobreakspace\theliteralblock}
 | 
			
		||||
% this will be overwritten in document preamble by Babel translation
 | 
			
		||||
\newcommand*{\literalblockname}{Listing }
 | 
			
		||||
% file extension needed for \caption's good functioning, the file is created
 | 
			
		||||
% only if a \listof{literalblock}{foo} command is encountered, which is
 | 
			
		||||
% analogous to \listoffigures, but for the code listings (foo = chosen title.)
 | 
			
		||||
\newcommand*{\ext@literalblock}{lol}
 | 
			
		||||
 | 
			
		||||
% if forced use of minipage encapsulation is needed (e.g. table cells)
 | 
			
		||||
\newif\ifsphinxverbatimwithminipage   \sphinxverbatimwithminipagefalse
 | 
			
		||||
 | 
			
		||||
% Framing macro for use with framed.sty's \FrameCommand
 | 
			
		||||
%  - it obeys current indentation,
 | 
			
		||||
%  - frame is \fboxsep separated from the contents,
 | 
			
		||||
%  - the contents use the full available text width,
 | 
			
		||||
%  - #1 = color of frame, #2 = color of background,
 | 
			
		||||
%  - #3 = above frame, #4 = below frame, #5 = within frame,
 | 
			
		||||
%  - #3 and #4 must be already typeset boxes; they must issue \normalcolor
 | 
			
		||||
%    or similar, else, they are under scope of color #1
 | 
			
		||||
\long\def\spx@fcolorbox #1#2#3#4#5{%
 | 
			
		||||
  \hskip\@totalleftmargin
 | 
			
		||||
  \hskip-\fboxsep\hskip-\fboxrule
 | 
			
		||||
  % use of \color@b@x here is compatible with both xcolor.sty and color.sty
 | 
			
		||||
  \color@b@x {\color{#1}\spx@CustomFBox{#3}{#4}}{\color{#2}}{#5}%
 | 
			
		||||
  \hskip-\fboxsep\hskip-\fboxrule
 | 
			
		||||
  \hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth
 | 
			
		||||
}%
 | 
			
		||||
% #1 = for material above frame, such as a caption or a "continued" hint
 | 
			
		||||
% #2 = for material below frame, such as a caption or "continues on next page"
 | 
			
		||||
% #3 = actual contents, which will be typeset with a background color
 | 
			
		||||
\long\def\spx@CustomFBox#1#2#3{%
 | 
			
		||||
  \begingroup
 | 
			
		||||
  \setbox\@tempboxa\hbox{{#3}}% inner braces to avoid color leaks
 | 
			
		||||
  \vbox{#1% above frame
 | 
			
		||||
            % draw frame border _latest_ to avoid pdf viewer issue
 | 
			
		||||
            \kern\fboxrule
 | 
			
		||||
            \hbox{\kern\fboxrule
 | 
			
		||||
                  \copy\@tempboxa
 | 
			
		||||
                  \kern-\wd\@tempboxa\kern-\fboxrule
 | 
			
		||||
                  \vrule\@width\fboxrule
 | 
			
		||||
                  \kern\wd\@tempboxa
 | 
			
		||||
                  \vrule\@width\fboxrule}%
 | 
			
		||||
            \kern-\dimexpr\ht\@tempboxa+\dp\@tempboxa+\fboxrule\relax
 | 
			
		||||
            \hrule\@height\fboxrule
 | 
			
		||||
            \kern\dimexpr\ht\@tempboxa+\dp\@tempboxa\relax
 | 
			
		||||
            \hrule\@height\fboxrule
 | 
			
		||||
        #2% below frame
 | 
			
		||||
       }%
 | 
			
		||||
  \endgroup
 | 
			
		||||
}%
 | 
			
		||||
\def\spx@fcolorbox@put@c#1{% hide width from framed.sty measuring
 | 
			
		||||
    \moveright\dimexpr\fboxrule+.5\wd\@tempboxa\hb@xt@\z@{\hss#1\hss}%
 | 
			
		||||
}%
 | 
			
		||||
\def\spx@fcolorbox@put@r#1{% right align with contents, width hidden
 | 
			
		||||
    \moveright\dimexpr\fboxrule+\wd\@tempboxa-\fboxsep\hb@xt@\z@{\hss#1}%
 | 
			
		||||
}%
 | 
			
		||||
\def\spx@fcolorbox@put@l#1{% left align with contents, width hidden
 | 
			
		||||
    \moveright\dimexpr\fboxrule+\fboxsep\hb@xt@\z@{#1\hss}%
 | 
			
		||||
}%
 | 
			
		||||
%
 | 
			
		||||
\def\sphinxVerbatim@Continued
 | 
			
		||||
   {\csname spx@fcolorbox@put@\spx@opt@verbatimcontinuedalign\endcsname
 | 
			
		||||
    {\normalcolor\sphinxstylecodecontinued\literalblockcontinuedname}}%
 | 
			
		||||
\def\sphinxVerbatim@Continues
 | 
			
		||||
   {\csname spx@fcolorbox@put@\spx@opt@verbatimcontinuesalign\endcsname
 | 
			
		||||
    {\normalcolor\sphinxstylecodecontinues\literalblockcontinuesname}}%
 | 
			
		||||
\def\sphinxVerbatim@Title
 | 
			
		||||
   {\spx@fcolorbox@put@c{\unhcopy\sphinxVerbatim@TitleBox}}%
 | 
			
		||||
\let\sphinxVerbatim@Before\@empty
 | 
			
		||||
\let\sphinxVerbatim@After\@empty
 | 
			
		||||
% Defaults are redefined in document preamble according to language
 | 
			
		||||
\newcommand*\literalblockcontinuedname{continued from previous page}%
 | 
			
		||||
\newcommand*\literalblockcontinuesname{continues on next page}%
 | 
			
		||||
%
 | 
			
		||||
\def\spx@verbatimfcolorbox{\spx@fcolorbox{VerbatimBorderColor}{VerbatimColor}}%
 | 
			
		||||
\def\sphinxVerbatim@FrameCommand
 | 
			
		||||
   {\spx@verbatimfcolorbox\sphinxVerbatim@Before\sphinxVerbatim@After}%
 | 
			
		||||
\def\sphinxVerbatim@FirstFrameCommand
 | 
			
		||||
   {\spx@verbatimfcolorbox\sphinxVerbatim@Before\sphinxVerbatim@Continues}%
 | 
			
		||||
\def\sphinxVerbatim@MidFrameCommand
 | 
			
		||||
   {\spx@verbatimfcolorbox\sphinxVerbatim@Continued\sphinxVerbatim@Continues}%
 | 
			
		||||
\def\sphinxVerbatim@LastFrameCommand
 | 
			
		||||
   {\spx@verbatimfcolorbox\sphinxVerbatim@Continued\sphinxVerbatim@After}%
 | 
			
		||||
 | 
			
		||||
% For linebreaks inside Verbatim environment from package fancyvrb.
 | 
			
		||||
\newbox\sphinxcontinuationbox
 | 
			
		||||
\newbox\sphinxvisiblespacebox
 | 
			
		||||
\newcommand*\sphinxafterbreak {\copy\sphinxcontinuationbox}
 | 
			
		||||
 | 
			
		||||
% Take advantage of the already applied Pygments mark-up to insert
 | 
			
		||||
% potential linebreaks for TeX processing.
 | 
			
		||||
%        {, <, #, %, $, ' and ": go to next line.
 | 
			
		||||
%        _, }, ^, &, >, -, ~, and \: stay at end of broken line.
 | 
			
		||||
% Use of \textquotesingle for straight quote.
 | 
			
		||||
% FIXME: convert this to package options ?
 | 
			
		||||
\newcommand*\sphinxbreaksbeforelist {%
 | 
			
		||||
    \do\PYGZob\{\do\PYGZlt\<\do\PYGZsh\#\do\PYGZpc\%% {, <, #, %,
 | 
			
		||||
    \do\PYGZdl\$\do\PYGZdq\"% $, "
 | 
			
		||||
    \def\PYGZsq
 | 
			
		||||
     {\discretionary{}{\sphinxafterbreak\textquotesingle}{\textquotesingle}}% '
 | 
			
		||||
}
 | 
			
		||||
\newcommand*\sphinxbreaksafterlist {%
 | 
			
		||||
    \do\PYGZus\_\do\PYGZcb\}\do\PYGZca\^\do\PYGZam\&% _, }, ^, &,
 | 
			
		||||
    \do\PYGZgt\>\do\PYGZhy\-\do\PYGZti\~% >, -, ~
 | 
			
		||||
    \do\PYGZbs\\% \
 | 
			
		||||
}
 | 
			
		||||
\newcommand*\sphinxbreaksatspecials {%
 | 
			
		||||
  \def\do##1##2%
 | 
			
		||||
     {\def##1{\discretionary{}{\sphinxafterbreak\char`##2}{\char`##2}}}%
 | 
			
		||||
  \sphinxbreaksbeforelist
 | 
			
		||||
  \def\do##1##2%
 | 
			
		||||
     {\def##1{\discretionary{\char`##2}{\sphinxafterbreak}{\char`##2}}}%
 | 
			
		||||
  \sphinxbreaksafterlist
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
\def\sphinx@verbatim@nolig@list {\do \`}%
 | 
			
		||||
% Some characters . , ; ? ! / are neither pygmentized nor "tex-escaped".
 | 
			
		||||
% This macro makes them "active" and they will insert potential linebreaks.
 | 
			
		||||
% Not compatible with math mode (cf \sphinxunactivateextras).
 | 
			
		||||
\newcommand*\sphinxbreaksbeforeactivelist {}% none
 | 
			
		||||
\newcommand*\sphinxbreaksafteractivelist  {\do\.\do\,\do\;\do\?\do\!\do\/}
 | 
			
		||||
\newcommand*\sphinxbreaksviaactive {%
 | 
			
		||||
   \def\do##1{\lccode`\~`##1%
 | 
			
		||||
    \lowercase{\def~}{\discretionary{}{\sphinxafterbreak\char`##1}{\char`##1}}%
 | 
			
		||||
    \catcode`##1\active}%
 | 
			
		||||
   \sphinxbreaksbeforeactivelist
 | 
			
		||||
   \def\do##1{\lccode`\~`##1%
 | 
			
		||||
    \lowercase{\def~}{\discretionary{\char`##1}{\sphinxafterbreak}{\char`##1}}%
 | 
			
		||||
    \catcode`##1\active}%
 | 
			
		||||
   \sphinxbreaksafteractivelist
 | 
			
		||||
   \lccode`\~`\~
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
% If the linebreak is at a space, the latter will be displayed as visible
 | 
			
		||||
% space at end of first line, and a continuation symbol starts next line.
 | 
			
		||||
\def\spx@verbatim@space {%
 | 
			
		||||
     \nobreak\hskip\z@skip
 | 
			
		||||
     \discretionary{\copy\sphinxvisiblespacebox}{\sphinxafterbreak}
 | 
			
		||||
                   {\kern\fontdimen2\font}%
 | 
			
		||||
}%
 | 
			
		||||
 | 
			
		||||
% if the available space on page is less than \literalblockneedspace, insert pagebreak
 | 
			
		||||
\newcommand{\sphinxliteralblockneedspace}{5\baselineskip}
 | 
			
		||||
\newcommand{\sphinxliteralblockwithoutcaptionneedspace}{1.5\baselineskip}
 | 
			
		||||
% The title (caption) is specified from outside as macro \sphinxVerbatimTitle.
 | 
			
		||||
% \sphinxVerbatimTitle is reset to empty after each use of Verbatim.
 | 
			
		||||
\newcommand*\sphinxVerbatimTitle {}
 | 
			
		||||
% This box to typeset the caption before framed.sty multiple passes for framing.
 | 
			
		||||
\newbox\sphinxVerbatim@TitleBox
 | 
			
		||||
% This box to measure contents if nested as inner \MakeFramed requires then
 | 
			
		||||
% minipage encapsulation but too long contents then break outer \MakeFramed
 | 
			
		||||
\newbox\sphinxVerbatim@ContentsBox
 | 
			
		||||
% Holder macro for labels of literal blocks. Set-up by LaTeX writer.
 | 
			
		||||
\newcommand*\sphinxLiteralBlockLabel {}
 | 
			
		||||
\newcommand*\sphinxSetupCaptionForVerbatim [1]
 | 
			
		||||
{%
 | 
			
		||||
    \sphinxvspacefixafterfrenchlists
 | 
			
		||||
    \needspace{\sphinxliteralblockneedspace}%
 | 
			
		||||
% insert a \label via \sphinxLiteralBlockLabel
 | 
			
		||||
% reset to normal the color for the literal block caption
 | 
			
		||||
    \def\sphinxVerbatimTitle
 | 
			
		||||
       {\py@NormalColor\sphinxcaption{\sphinxLiteralBlockLabel #1}}%
 | 
			
		||||
}
 | 
			
		||||
\newcommand*\sphinxSetupCodeBlockInFootnote {%
 | 
			
		||||
  \fvset{fontsize=\footnotesize}\let\caption\sphinxfigcaption
 | 
			
		||||
  \sphinxverbatimwithminipagetrue % reduces vertical spaces
 | 
			
		||||
  % we counteract (this is in a group) the \@normalsize from \caption
 | 
			
		||||
  \let\normalsize\footnotesize\let\@parboxrestore\relax
 | 
			
		||||
  \def\spx@abovecaptionskip{\sphinxverbatimsmallskipamount}%
 | 
			
		||||
}
 | 
			
		||||
\newcommand*{\sphinxverbatimsmallskipamount}{\smallskipamount}
 | 
			
		||||
% serves to implement line highlighting and line wrapping
 | 
			
		||||
\newcommand\sphinxFancyVerbFormatLine[1]{%
 | 
			
		||||
  \expandafter\sphinx@verbatim@checkifhl\expandafter{\the\FV@CodeLineNo}%
 | 
			
		||||
  \ifin@
 | 
			
		||||
     \sphinxVerbatimHighlightLine{#1}%
 | 
			
		||||
  \else
 | 
			
		||||
     \sphinxVerbatimFormatLine{#1}%
 | 
			
		||||
  \fi
 | 
			
		||||
}%
 | 
			
		||||
\newcommand\sphinxVerbatimHighlightLine[1]{%
 | 
			
		||||
  \edef\sphinxrestorefboxsep{\fboxsep\the\fboxsep\relax}%
 | 
			
		||||
  \fboxsep0pt\relax % cf LaTeX bug graphics/4524
 | 
			
		||||
  \colorbox{sphinxVerbatimHighlightColor}%
 | 
			
		||||
           {\sphinxrestorefboxsep\sphinxVerbatimFormatLine{#1}}%
 | 
			
		||||
  % no need to restore \fboxsep here, as this ends up in a \hbox from fancyvrb
 | 
			
		||||
}%
 | 
			
		||||
% \sphinxVerbatimFormatLine will be set locally to one of those two:
 | 
			
		||||
\newcommand\sphinxVerbatimFormatLineWrap{%
 | 
			
		||||
  \hsize\linewidth
 | 
			
		||||
  \ifspx@opt@verbatimforcewraps
 | 
			
		||||
       \expandafter\spx@verb@FormatLineForceWrap
 | 
			
		||||
  \else\expandafter\spx@verb@FormatLineWrap
 | 
			
		||||
  \fi
 | 
			
		||||
}%
 | 
			
		||||
\newcommand\sphinxVerbatimFormatLineNoWrap[1]{\hb@xt@\linewidth{\strut #1\hss}}%
 | 
			
		||||
\long\def\spx@verb@FormatLineWrap#1{%
 | 
			
		||||
    \vtop{\raggedright\hyphenpenalty\z@\exhyphenpenalty\z@
 | 
			
		||||
          \doublehyphendemerits\z@\finalhyphendemerits\z@
 | 
			
		||||
          \strut #1\strut}%
 | 
			
		||||
}%
 | 
			
		||||
%
 | 
			
		||||
% The normal line wrapping allows breaks at spaces and ascii non
 | 
			
		||||
% letters, non digits. The \raggedright above means there will be
 | 
			
		||||
% an overfilled line only if some non-breakable "word" was
 | 
			
		||||
% encountered, which is longer than a line (it is moved always to
 | 
			
		||||
% be on its own on a new line).
 | 
			
		||||
% 
 | 
			
		||||
% The "forced" line wrapping will parse the tokens to add potential
 | 
			
		||||
% breakpoints at each character. As some strings are highlighted,
 | 
			
		||||
% we have to apply the highlighting character per character, which
 | 
			
		||||
% requires to manipulate the output of the Pygments LaTeXFormatter.
 | 
			
		||||
%
 | 
			
		||||
% Doing this at latex level is complicated. The contents should
 | 
			
		||||
% be as expected: i.e. some active characters from
 | 
			
		||||
% \sphinxbreaksviaactive, some Pygments character escapes such as
 | 
			
		||||
% \PYGZdl{}, and the highlighting \PYG macro with always 2
 | 
			
		||||
% arguments. No other macros should be there, except perhaps
 | 
			
		||||
% zero-parameter macros. In particular:
 | 
			
		||||
% - the texcomments Pygments option must be set to False
 | 
			
		||||
%
 | 
			
		||||
% With pdflatex, Unicode input gives multi-bytes characters
 | 
			
		||||
% where the first byte is active. We support the "utf8" macros
 | 
			
		||||
% only. "utf8x" is not supported.
 | 
			
		||||
%
 | 
			
		||||
% The highlighting macro \PYG will be applied character per
 | 
			
		||||
% character. Highlighting via a colored background gives thus a
 | 
			
		||||
% chain of small colored boxes which may cause some artefact in
 | 
			
		||||
% some pdf viewers. Can't do anything here if we do want the line
 | 
			
		||||
% break to be possible.
 | 
			
		||||
%
 | 
			
		||||
% First a measurement step is done of what would the standard line
 | 
			
		||||
% wrapping give (i.e line breaks only at spaces and non-letter,
 | 
			
		||||
% non-digit ascii characters), cf TeX by Topic for the basic
 | 
			
		||||
% dissecting technique: TeX unfortunately when building a vertical
 | 
			
		||||
% box does not store in an accessible way what was the maximal
 | 
			
		||||
% line-width during paragraph building.
 | 
			
		||||
%
 | 
			
		||||
% Avoid LaTeX 2021 alteration of \@@par which potentially could break our
 | 
			
		||||
% measurement step (typically if the para/after hook is configured to use
 | 
			
		||||
% \vspace).  Of course, breakage could happen only from user or package
 | 
			
		||||
% adding things to basic Sphinx latex.  And perhaps spring LaTeX 2021 will
 | 
			
		||||
% provide a non-hooked \@@par, but this should work anyway and can't be
 | 
			
		||||
% beaten for speed.
 | 
			
		||||
\ltx@ifundefined{tex_par:D}
 | 
			
		||||
% We could use \@ifl@t@r\fmtversion{2020/02/02}{use \tex_par:D}{use \@@par}.
 | 
			
		||||
  {\let\spx@par\@@par}% \@@par is then expected to be TeX's original \par
 | 
			
		||||
  {\expandafter\let\expandafter\spx@par\csname tex_par:D\endcsname}
 | 
			
		||||
% More hesitation for avoiding the at-start-of-par hooks for our
 | 
			
		||||
% measurement : 1. with old LaTeX, we can not avoid hooks from everyhook
 | 
			
		||||
% or similar packages, 2. and perhaps the hooks add stuff which we should
 | 
			
		||||
% actually measure.  Ideally, hooks are for inserting things in margin
 | 
			
		||||
% which do not change spacing.  Most everything else in fact should not be
 | 
			
		||||
% executed in our scratch box for measurement, such as counter stepping.
 | 
			
		||||
\ltx@ifundefined{tex_everypar:D}
 | 
			
		||||
  {\let\spx@everypar\everypar}
 | 
			
		||||
  {\expandafter\let\expandafter\spx@everypar\csname tex_everypar:D\endcsname}
 | 
			
		||||
%
 | 
			
		||||
% If the max width exceeds the linewidth by more than verbatimmaxoverfull
 | 
			
		||||
% character widths, or if the min width plus verbatimmaxunderfull character
 | 
			
		||||
% widths is inferior to linewidth, then we apply the "force wrapping" with
 | 
			
		||||
% potential line break at each character, else we don't.
 | 
			
		||||
\long\def\spx@verb@FormatLineForceWrap#1{%
 | 
			
		||||
    % \spx@image@box is a scratch box register that we can use here
 | 
			
		||||
    \global\let\spx@verb@maxwidth\z@
 | 
			
		||||
    \global\let\spx@verb@minwidth\linewidth
 | 
			
		||||
    \setbox\spx@image@box
 | 
			
		||||
    \vtop{\raggedright\hyphenpenalty\z@\exhyphenpenalty\z@
 | 
			
		||||
          \doublehyphendemerits\z@\finalhyphendemerits\z@
 | 
			
		||||
          \spx@everypar{}\noindent\strut #1\strut\spx@par
 | 
			
		||||
          \spx@verb@getwidths}%
 | 
			
		||||
    \ifdim\spx@verb@maxwidth>
 | 
			
		||||
          \dimexpr\linewidth+\spx@opt@verbatimmaxoverfull\fontcharwd\font`X \relax
 | 
			
		||||
      \spx@verb@FormatLineWrap{\spx@verb@wrapPYG #1\spx@verb@wrapPYG}%
 | 
			
		||||
    \else
 | 
			
		||||
      \ifdim\spx@verb@minwidth<
 | 
			
		||||
            \dimexpr\linewidth-\spx@opt@verbatimmaxunderfull\fontcharwd\font`X \relax
 | 
			
		||||
        \spx@verb@FormatLineWrap{\spx@verb@wrapPYG #1\spx@verb@wrapPYG}%
 | 
			
		||||
      \else
 | 
			
		||||
        \spx@verb@FormatLineWrap{#1}%
 | 
			
		||||
    \fi\fi
 | 
			
		||||
}%
 | 
			
		||||
% auxiliary paragraph dissector to get max and min widths
 | 
			
		||||
% but minwidth must not take into account the last line
 | 
			
		||||
\newbox\spx@scratchbox
 | 
			
		||||
\def\spx@verb@getwidths {%
 | 
			
		||||
    \unskip\unpenalty
 | 
			
		||||
    \setbox\spx@scratchbox\lastbox
 | 
			
		||||
    \ifvoid\spx@scratchbox
 | 
			
		||||
    \else
 | 
			
		||||
       \setbox\spx@scratchbox\hbox{\unhbox\spx@scratchbox}%
 | 
			
		||||
       \ifdim\spx@verb@maxwidth<\wd\spx@scratchbox
 | 
			
		||||
          \xdef\spx@verb@maxwidth{\number\wd\spx@scratchbox sp}%
 | 
			
		||||
       \fi
 | 
			
		||||
       \expandafter\spx@verb@getwidths@loop
 | 
			
		||||
    \fi
 | 
			
		||||
}%
 | 
			
		||||
\def\spx@verb@getwidths@loop {%
 | 
			
		||||
    \unskip\unpenalty
 | 
			
		||||
    \setbox\spx@scratchbox\lastbox
 | 
			
		||||
    \ifvoid\spx@scratchbox
 | 
			
		||||
    \else
 | 
			
		||||
       \setbox\spx@scratchbox\hbox{\unhbox\spx@scratchbox}%
 | 
			
		||||
       \ifdim\spx@verb@maxwidth<\wd\spx@scratchbox
 | 
			
		||||
          \xdef\spx@verb@maxwidth{\number\wd\spx@scratchbox sp}%
 | 
			
		||||
       \fi
 | 
			
		||||
       \ifdim\spx@verb@minwidth>\wd\spx@scratchbox
 | 
			
		||||
          \xdef\spx@verb@minwidth{\number\wd\spx@scratchbox sp}%
 | 
			
		||||
       \fi
 | 
			
		||||
       \expandafter\spx@verb@getwidths@loop
 | 
			
		||||
    \fi
 | 
			
		||||
}%
 | 
			
		||||
% auxiliary macros to implement "cut long line even in middle of word"
 | 
			
		||||
\catcode`Z=3 % safe delimiter
 | 
			
		||||
\def\spx@verb@wrapPYG{%
 | 
			
		||||
    \futurelet\spx@nexttoken\spx@verb@wrapPYG@i
 | 
			
		||||
}%
 | 
			
		||||
\def\spx@verb@wrapPYG@i{%
 | 
			
		||||
    \ifx\spx@nexttoken\spx@verb@wrapPYG\let\next=\@gobble\else
 | 
			
		||||
    \ifx\spx@nexttoken\PYG\let\next=\spx@verb@wrapPYG@PYG@onebyone\else
 | 
			
		||||
      \discretionary{}{\sphinxafterbreak}{}%
 | 
			
		||||
      \let\next\spx@verb@wrapPYG@ii
 | 
			
		||||
    \fi\fi
 | 
			
		||||
    \next
 | 
			
		||||
}%
 | 
			
		||||
% Let's recognize active characters. We don't support utf8x only utf8.
 | 
			
		||||
% And here #1 should not have picked up (non empty) braced contents
 | 
			
		||||
\long\def\spx@verb@wrapPYG@ii#1{%
 | 
			
		||||
    \ifcat\noexpand~\noexpand#1\relax% active character
 | 
			
		||||
      \expandafter\spx@verb@wrapPYG@active
 | 
			
		||||
    \else % non-active character, control sequence such as \PYGZdl, or empty
 | 
			
		||||
      \expandafter\spx@verb@wrapPYG@one
 | 
			
		||||
    \fi {#1}%
 | 
			
		||||
}%
 | 
			
		||||
\long\def\spx@verb@wrapPYG@active#1{%
 | 
			
		||||
% Let's hope expansion of active character does not really require arguments,
 | 
			
		||||
% as we certainly don't want to go into expanding upfront token stream anyway.
 | 
			
		||||
    \expandafter\spx@verb@wrapPYG@iii#1{}{}{}{}{}{}{}{}{}Z#1%
 | 
			
		||||
}%
 | 
			
		||||
\long\def\spx@verb@wrapPYG@iii#1#2Z{%
 | 
			
		||||
    \ifx\UTFviii@four@octets#1\let\next=\spx@verb@wrapPYG@four\else
 | 
			
		||||
    \ifx\UTFviii@three@octets#1\let\next=\spx@verb@wrapPYG@three\else
 | 
			
		||||
    \ifx\UTFviii@two@octets#1\let\next=\spx@verb@wrapPYG@two\else
 | 
			
		||||
    \let\next=\spx@verb@wrapPYG@one
 | 
			
		||||
    \fi\fi\fi
 | 
			
		||||
    \next
 | 
			
		||||
}%
 | 
			
		||||
\long\def\spx@verb@wrapPYG@one   #1{#1\futurelet\spx@nexttoken\spx@verb@wrapPYG@i}%
 | 
			
		||||
\long\def\spx@verb@wrapPYG@two   #1#2{#1#2\futurelet\spx@nexttoken\spx@verb@wrapPYG@i}%
 | 
			
		||||
\long\def\spx@verb@wrapPYG@three #1#2#3{#1#2#3\futurelet\spx@nexttoken\spx@verb@wrapPYG@i}%
 | 
			
		||||
\long\def\spx@verb@wrapPYG@four  #1#2#3#4{#1#2#3#4\futurelet\spx@nexttoken\spx@verb@wrapPYG@i}%
 | 
			
		||||
% Replace \PYG by itself applied one character at a time! This way breakpoints
 | 
			
		||||
% can be inserted.
 | 
			
		||||
\def\spx@verb@wrapPYG@PYG@onebyone#1#2#3{% #1 = \PYG, #2 = highlight spec, #3 = tokens
 | 
			
		||||
    \def\spx@verb@wrapPYG@PYG@spec{{#2}}%
 | 
			
		||||
    \futurelet\spx@nexttoken\spx@verb@wrapPYG@PYG@i#3Z%
 | 
			
		||||
}%
 | 
			
		||||
\def\spx@verb@wrapPYG@PYG@i{%
 | 
			
		||||
    \ifx\spx@nexttokenZ\let\next=\spx@verb@wrapPYG@PYG@done\else
 | 
			
		||||
      \discretionary{}{\sphinxafterbreak}{}%
 | 
			
		||||
      \let\next\spx@verb@wrapPYG@PYG@ii
 | 
			
		||||
    \fi
 | 
			
		||||
    \next
 | 
			
		||||
}%
 | 
			
		||||
\def\spx@verb@wrapPYG@PYG@doneZ{\futurelet\spx@nexttoken\spx@verb@wrapPYG@i}%
 | 
			
		||||
\long\def\spx@verb@wrapPYG@PYG@ii#1{%
 | 
			
		||||
    \ifcat\noexpand~\noexpand#1\relax% active character
 | 
			
		||||
      \expandafter\spx@verb@wrapPYG@PYG@active
 | 
			
		||||
    \else % non-active character, control sequence such as \PYGZdl, or empty
 | 
			
		||||
      \expandafter\spx@verb@wrapPYG@PYG@one
 | 
			
		||||
    \fi {#1}%
 | 
			
		||||
}%
 | 
			
		||||
\long\def\spx@verb@wrapPYG@PYG@active#1{%
 | 
			
		||||
% Let's hope expansion of active character does not really require arguments,
 | 
			
		||||
% as we certainly don't want to go into expanding upfront token stream anyway.
 | 
			
		||||
    \expandafter\spx@verb@wrapPYG@PYG@iii#1{}{}{}{}{}{}{}{}{}Z#1%
 | 
			
		||||
}%
 | 
			
		||||
\long\def\spx@verb@wrapPYG@PYG@iii#1#2Z{%
 | 
			
		||||
    \ifx\UTFviii@four@octets#1\let\next=\spx@verb@wrapPYG@PYG@four\else
 | 
			
		||||
    \ifx\UTFviii@three@octets#1\let\next=\spx@verb@wrapPYG@PYG@three\else
 | 
			
		||||
    \ifx\UTFviii@two@octets#1\let\next=\spx@verb@wrapPYG@PYG@two\else
 | 
			
		||||
    \let\next=\spx@verb@wrapPYG@PYG@one
 | 
			
		||||
    \fi\fi\fi
 | 
			
		||||
    \next
 | 
			
		||||
}%
 | 
			
		||||
\long\def\spx@verb@wrapPYG@PYG@one#1{%
 | 
			
		||||
    \expandafter\PYG\spx@verb@wrapPYG@PYG@spec{#1}%
 | 
			
		||||
    \futurelet\spx@nexttoken\spx@verb@wrapPYG@PYG@i
 | 
			
		||||
}%
 | 
			
		||||
\long\def\spx@verb@wrapPYG@PYG@two#1#2{%
 | 
			
		||||
    \expandafter\PYG\spx@verb@wrapPYG@PYG@spec{#1#2}%
 | 
			
		||||
    \futurelet\spx@nexttoken\spx@verb@wrapPYG@PYG@i
 | 
			
		||||
}%
 | 
			
		||||
\long\def\spx@verb@wrapPYG@PYG@three#1#2#3{%
 | 
			
		||||
    \expandafter\PYG\spx@verb@wrapPYG@PYG@spec{#1#2#3}%
 | 
			
		||||
    \futurelet\spx@nexttoken\spx@verb@wrapPYG@PYG@i
 | 
			
		||||
}%
 | 
			
		||||
\long\def\spx@verb@wrapPYG@PYG@four#1#2#3#4{%
 | 
			
		||||
    \expandafter\PYG\spx@verb@wrapPYG@PYG@spec{#1#2#3#4}%
 | 
			
		||||
    \futurelet\spx@nexttoken\spx@verb@wrapPYG@PYG@i
 | 
			
		||||
}%
 | 
			
		||||
\catcode`Z 11 %
 | 
			
		||||
%
 | 
			
		||||
\g@addto@macro\FV@SetupFont{%
 | 
			
		||||
    \sbox\sphinxcontinuationbox {\spx@opt@verbatimcontinued}%
 | 
			
		||||
    \sbox\sphinxvisiblespacebox {\spx@opt@verbatimvisiblespace}%
 | 
			
		||||
}%
 | 
			
		||||
\newenvironment{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
 | 
			
		||||
                 % if no frame (code-blocks inside table cells), remove
 | 
			
		||||
                 % the "verbatimsep" whitespace from the top (better visually)
 | 
			
		||||
                 \ifspx@opt@verbatimwithframe\else-\sphinxverbatimsep\fi
 | 
			
		||||
                 % caption package adds \abovecaptionskip vspace, remove it
 | 
			
		||||
                 \spx@ifcaptionpackage{-\abovecaptionskip}{}\relax}%
 | 
			
		||||
     \else
 | 
			
		||||
       \vskip\sphinxverbatimsmallskipamount
 | 
			
		||||
       \def\sphinxVerbatim@After
 | 
			
		||||
          {\nointerlineskip\kern\dimexpr\dp\strutbox
 | 
			
		||||
            \ifspx@opt@verbatimwithframe\else-\sphinxverbatimsep\fi
 | 
			
		||||
            \spx@ifcaptionpackage{-\abovecaptionskip}{}\relax
 | 
			
		||||
           \sphinxVerbatim@Title}%
 | 
			
		||||
     \fi
 | 
			
		||||
     \def\@captype{literalblock}%
 | 
			
		||||
     \capstart
 | 
			
		||||
     % \sphinxVerbatimTitle must reset color
 | 
			
		||||
     \setbox\sphinxVerbatim@TitleBox
 | 
			
		||||
            \hbox{\begin{minipage}{\linewidth}%
 | 
			
		||||
     % caption package may detect wrongly if top or bottom, so we help it
 | 
			
		||||
                    \spx@ifcaptionpackage
 | 
			
		||||
                      {\caption@setposition{\spx@opt@literalblockcappos}}{}%
 | 
			
		||||
                    \sphinxVerbatimTitle
 | 
			
		||||
                  \end{minipage}}%
 | 
			
		||||
  \fi
 | 
			
		||||
  \global\let\sphinxLiteralBlockLabel\empty
 | 
			
		||||
  \global\let\sphinxVerbatimTitle\empty
 | 
			
		||||
  \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
 | 
			
		||||
  \VerbatimEnvironment
 | 
			
		||||
  % 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 (which itself is set to zero above)
 | 
			
		||||
  % \leftmargin will be set to zero by trivlist
 | 
			
		||||
  \rightmargin\z@
 | 
			
		||||
  \parindent  \z@% becomes \itemindent. Default zero, but perhaps overwritten.
 | 
			
		||||
  \trivlist\item\relax
 | 
			
		||||
     \ifspx@inframed\setbox\sphinxVerbatim@ContentsBox\vbox\bgroup
 | 
			
		||||
        \@setminipage\hsize\linewidth
 | 
			
		||||
        % use bulk of minipage paragraph shape restores (this is needed
 | 
			
		||||
        % in indented contexts, at least for some)
 | 
			
		||||
        \textwidth\hsize \columnwidth\hsize \@totalleftmargin\z@
 | 
			
		||||
        \leftskip\z@skip \rightskip\z@skip  \@rightskip\z@skip
 | 
			
		||||
     \else
 | 
			
		||||
       \ifsphinxverbatimwithminipage\noindent\begin{minipage}{\linewidth}\fi
 | 
			
		||||
       \MakeFramed {% adapted over from framed.sty's snugshade environment
 | 
			
		||||
        \advance\hsize-\width\@totalleftmargin\z@\linewidth\hsize\@setminipage
 | 
			
		||||
        }%
 | 
			
		||||
     \fi
 | 
			
		||||
     % 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
 | 
			
		||||
  \ifspx@inframed
 | 
			
		||||
   \egroup % finish \sphinxVerbatim@ContentsBox vbox
 | 
			
		||||
   \nobreak % update page totals
 | 
			
		||||
   \ifdim\dimexpr\ht\sphinxVerbatim@ContentsBox+
 | 
			
		||||
         \dp\sphinxVerbatim@ContentsBox+
 | 
			
		||||
         \ht\sphinxVerbatim@TitleBox+
 | 
			
		||||
         \dp\sphinxVerbatim@TitleBox+
 | 
			
		||||
         2\fboxsep+2\fboxrule+
 | 
			
		||||
         % try to account for external frame parameters
 | 
			
		||||
         \FrameSep+\FrameRule+
 | 
			
		||||
         % Usage here of 2 baseline distances is empirical.
 | 
			
		||||
         % In border case where code-block fits barely in remaining space,
 | 
			
		||||
         % it gets framed and looks good but the outer frame may continue
 | 
			
		||||
         % on top of next page and give (if no contents after code-block)
 | 
			
		||||
         % an empty framed line, as testing showed.
 | 
			
		||||
         2\baselineskip+
 | 
			
		||||
         % now add all to accumulated page totals and compare to \pagegoal
 | 
			
		||||
         \pagetotal+\pagedepth>\pagegoal
 | 
			
		||||
    % long contents: do not \MakeFramed. Do make a caption (either before or
 | 
			
		||||
    % after) if title exists. Continuation hints across pagebreaks dropped.
 | 
			
		||||
    % FIXME? a bottom caption may end up isolated at top of next page
 | 
			
		||||
    %        (no problem with a top caption, which is default)
 | 
			
		||||
    \spx@opt@verbatimwithframefalse
 | 
			
		||||
    \def\sphinxVerbatim@Title{\noindent\box\sphinxVerbatim@TitleBox\par}%
 | 
			
		||||
    \sphinxVerbatim@Before
 | 
			
		||||
    \noindent\unvbox\sphinxVerbatim@ContentsBox\par
 | 
			
		||||
    \sphinxVerbatim@After
 | 
			
		||||
   \else
 | 
			
		||||
    % short enough contents: use \MakeFramed. As it is nested, this requires
 | 
			
		||||
    % minipage encapsulation.
 | 
			
		||||
    \noindent\begin{minipage}{\linewidth}%
 | 
			
		||||
     \MakeFramed {% Use it now with the fetched contents
 | 
			
		||||
      \advance\hsize-\width\@totalleftmargin\z@\linewidth\hsize\@setminipage
 | 
			
		||||
      }%
 | 
			
		||||
     \unvbox\sphinxVerbatim@ContentsBox
 | 
			
		||||
     % some of this may be superfluous:
 | 
			
		||||
     \par\unskip\@minipagefalse\endMakeFramed
 | 
			
		||||
    \end{minipage}%
 | 
			
		||||
   \fi
 | 
			
		||||
  \else % non-nested \MakeFramed
 | 
			
		||||
    \par\unskip\@minipagefalse\endMakeFramed % from framed.sty snugshade
 | 
			
		||||
    \ifsphinxverbatimwithminipage\end{minipage}\fi
 | 
			
		||||
  \fi
 | 
			
		||||
  \endtrivlist
 | 
			
		||||
}
 | 
			
		||||
\newenvironment {sphinxVerbatimNoFrame}
 | 
			
		||||
  {\spx@opt@verbatimwithframefalse
 | 
			
		||||
   \VerbatimEnvironment
 | 
			
		||||
   \begin{sphinxVerbatim}}
 | 
			
		||||
  {\end{sphinxVerbatim}}
 | 
			
		||||
\newenvironment {sphinxVerbatimintable}
 | 
			
		||||
  {% don't use a frame if in a table cell
 | 
			
		||||
   \spx@opt@verbatimwithframefalse
 | 
			
		||||
   \sphinxverbatimwithminipagetrue
 | 
			
		||||
   % the literal block caption uses \sphinxcaption which is wrapper of \caption,
 | 
			
		||||
   % but \caption must be modified because longtable redefines it to work only
 | 
			
		||||
   % for the own table caption, and tabulary has multiple passes
 | 
			
		||||
   \let\caption\sphinxfigcaption
 | 
			
		||||
   % reduce above caption skip
 | 
			
		||||
   \def\spx@abovecaptionskip{\sphinxverbatimsmallskipamount}%
 | 
			
		||||
   \VerbatimEnvironment
 | 
			
		||||
   \begin{sphinxVerbatim}}
 | 
			
		||||
  {\end{sphinxVerbatim}}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% PARSED LITERALS
 | 
			
		||||
% allow long lines to wrap like they do in code-blocks
 | 
			
		||||
 | 
			
		||||
% this should be kept in sync with definitions in sphinx.util.texescape
 | 
			
		||||
\newcommand*\sphinxbreaksattexescapedchars{%
 | 
			
		||||
  \def\do##1##2% put potential break point before character
 | 
			
		||||
     {\def##1{\discretionary{}{\sphinxafterbreak\char`##2}{\char`##2}}}%
 | 
			
		||||
  \do\{\{\do\textless\<\do\#\#\do\%\%\do\$\$% {, <, #, %, $
 | 
			
		||||
  \def\do##1##2% put potential break point after character
 | 
			
		||||
     {\def##1{\discretionary{\char`##2}{\sphinxafterbreak}{\char`##2}}}%
 | 
			
		||||
  \do\_\_\do\}\}\do\textasciicircum\^\do\&\&% _, }, ^, &,
 | 
			
		||||
  \do\textgreater\>\do\textasciitilde\~% >, ~
 | 
			
		||||
  \do\textbackslash\\% \
 | 
			
		||||
}
 | 
			
		||||
\newcommand*\sphinxbreaksviaactiveinparsedliteral{%
 | 
			
		||||
  \sphinxbreaksviaactive % by default handles . , ; ? ! /
 | 
			
		||||
  \lccode`\~`\~ %
 | 
			
		||||
  % update \dospecials as it is used by \url
 | 
			
		||||
  % but deactivation will already have been done hence this is unneeded:
 | 
			
		||||
  %  \expandafter\def\expandafter\dospecials\expandafter{\dospecials
 | 
			
		||||
  %   \sphinxbreaksbeforeactivelist\sphinxbreaksafteractivelist\do\-}%
 | 
			
		||||
}
 | 
			
		||||
\newcommand*\sphinxbreaksatspaceinparsedliteral{%
 | 
			
		||||
  \lccode`~32 \lowercase{\let~}\spx@verbatim@space\lccode`\~`\~
 | 
			
		||||
}
 | 
			
		||||
\newcommand*{\sphinxunactivateextras}{\let\do\@makeother
 | 
			
		||||
      \sphinxbreaksbeforeactivelist\sphinxbreaksafteractivelist}%
 | 
			
		||||
% the \catcode13=5\relax (deactivate end of input lines) is left to callers
 | 
			
		||||
\newcommand*{\sphinxunactivateextrasandspace}{\catcode32=10\relax
 | 
			
		||||
      \sphinxunactivateextras}%
 | 
			
		||||
% alltt uses a monospace font and linebreaks at dashes (which are escaped
 | 
			
		||||
% to \sphinxhyphen{} which expands to -\kern\z@) are inhibited with pdflatex.
 | 
			
		||||
% Not with xelatex (cf \defaultfontfeatures in latex writer), so:
 | 
			
		||||
\newcommand*{\sphinxhypheninparsedliteral}{\sphinxhyphennobreak}
 | 
			
		||||
% now for the modified alltt environment
 | 
			
		||||
\newenvironment{sphinxalltt}
 | 
			
		||||
{% at start of next line to workaround Emacs/AUCTeX issue with this file
 | 
			
		||||
\begin{alltt}%
 | 
			
		||||
 \ifspx@opt@parsedliteralwraps
 | 
			
		||||
   \sbox\sphinxcontinuationbox {\spx@opt@verbatimcontinued}%
 | 
			
		||||
   \sbox\sphinxvisiblespacebox {\spx@opt@verbatimvisiblespace}%
 | 
			
		||||
   \let\sphinxhyphen\sphinxhypheninparsedliteral
 | 
			
		||||
   \sphinxbreaksattexescapedchars
 | 
			
		||||
   \sphinxbreaksviaactiveinparsedliteral
 | 
			
		||||
   \sphinxbreaksatspaceinparsedliteral
 | 
			
		||||
% alltt takes care of the ' as derivative ("prime") in math mode
 | 
			
		||||
   \everymath\expandafter{\the\everymath\sphinxunactivateextrasandspace
 | 
			
		||||
             \catcode`\<=12\catcode`\>=12\catcode`\^=7\catcode`\_=8 }%
 | 
			
		||||
% not sure if displayed math (align,...) can end up in parsed-literal, anyway
 | 
			
		||||
   \everydisplay\expandafter{\the\everydisplay
 | 
			
		||||
             \catcode13=5 \sphinxunactivateextrasandspace
 | 
			
		||||
             \catcode`\<=12\catcode`\>=12\catcode`\^=7\catcode`\_=8 }%
 | 
			
		||||
 \fi }
 | 
			
		||||
{\end{alltt}}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% INLINE MARK-UP
 | 
			
		||||
%
 | 
			
		||||
 | 
			
		||||
% Protect \href's first argument in contexts such as sphinxalltt (or
 | 
			
		||||
% \sphinxcode). Sphinx uses \#, \%, \& ... always inside \sphinxhref.
 | 
			
		||||
\protected\def\sphinxhref#1#2{{%
 | 
			
		||||
    \sphinxunactivateextrasandspace % never do \scantokens with active space!
 | 
			
		||||
% for the \endlinechar business, https://github.com/latex3/latex2e/issues/286
 | 
			
		||||
    \endlinechar\m@ne\everyeof{{\endlinechar13 #2}}% keep catcode regime for #2
 | 
			
		||||
    \scantokens{\href{#1}}% normalise it for #1 during \href expansion
 | 
			
		||||
}}
 | 
			
		||||
% Same for \url. And also \nolinkurl for coherence.
 | 
			
		||||
\protected\def\sphinxurl#1{{%
 | 
			
		||||
    \sphinxunactivateextrasandspace\everyeof{}% (<- precaution for \scantokens)
 | 
			
		||||
    \endlinechar\m@ne\scantokens{\url{#1}}%
 | 
			
		||||
}}
 | 
			
		||||
\protected\def\sphinxnolinkurl#1{{%
 | 
			
		||||
    \sphinxunactivateextrasandspace\everyeof{}%
 | 
			
		||||
    \endlinechar\m@ne\scantokens{\nolinkurl{#1}}%
 | 
			
		||||
}}
 | 
			
		||||
 | 
			
		||||
% \sphinxupquote
 | 
			
		||||
% to obtain straight quotes we execute \@noligs as patched by upquote, and
 | 
			
		||||
% \scantokens is needed in cases where it would be too late for the macro to
 | 
			
		||||
% first set catcodes and then fetch its argument. We also make the contents
 | 
			
		||||
% breakable at non-escaped . , ; ? ! / using \sphinxbreaksviaactive,
 | 
			
		||||
% and also at \ character (which is escaped to \textbackslash{}).
 | 
			
		||||
\protected\def\sphinxtextbackslashbreakbefore
 | 
			
		||||
 {\discretionary{}{\sphinxafterbreak\sphinx@textbackslash}{\sphinx@textbackslash}}
 | 
			
		||||
\protected\def\sphinxtextbackslashbreakafter
 | 
			
		||||
 {\discretionary{\sphinx@textbackslash}{\sphinxafterbreak}{\sphinx@textbackslash}}
 | 
			
		||||
\let\sphinxtextbackslash\sphinxtextbackslashbreakafter
 | 
			
		||||
% - is escaped to \sphinxhyphen{} and this default ensures no linebreak
 | 
			
		||||
% behaviour (also with a non monospace font, or with xelatex)
 | 
			
		||||
\newcommand*{\sphinxhyphenininlineliteral}{\sphinxhyphennobreak}
 | 
			
		||||
% the macro must be protected if it ends up used in moving arguments,
 | 
			
		||||
% in 'alltt' \@noligs is done already, and the \scantokens must be avoided.
 | 
			
		||||
\protected\def\sphinxupquote#1{{\def\@tempa{alltt}%
 | 
			
		||||
  \ifx\@tempa\@currenvir\else
 | 
			
		||||
   \let\sphinxhyphen\sphinxhyphenininlineliteral
 | 
			
		||||
   \ifspx@opt@inlineliteralwraps
 | 
			
		||||
      % break at . , ; ? ! /
 | 
			
		||||
      \sphinxbreaksviaactive
 | 
			
		||||
      % break also at \
 | 
			
		||||
      \setbox8=\hbox{\textbackslash}%
 | 
			
		||||
      \def\sphinx@textbackslash{\copy8}%
 | 
			
		||||
      \let\textbackslash\sphinxtextbackslash
 | 
			
		||||
      % by default, no continuation symbol on next line but may be added
 | 
			
		||||
      \let\sphinxafterbreak\sphinxafterbreakofinlineliteral
 | 
			
		||||
      % do not overwrite the comma set-up
 | 
			
		||||
      \let\verbatim@nolig@list\sphinx@literal@nolig@list
 | 
			
		||||
   \fi
 | 
			
		||||
   % fix a space-gobbling issue due to LaTeX's original \do@noligs
 | 
			
		||||
% TODO: using \@noligs as patched by upquote.sty is now unneeded because
 | 
			
		||||
% either ` and ' are escaped (non-unicode engines) or they don't build
 | 
			
		||||
% ligatures (unicode engines). Thus remove this and unify handling of `, <, >,
 | 
			
		||||
% ' and - with the characters . , ; ? ! / as handled via
 | 
			
		||||
% \sphinxbreaksviaactive.
 | 
			
		||||
% Hence \sphinx@do@noligs will be removed, or rather replaced  with code
 | 
			
		||||
% inserting discretionaries, as they allow a continuation symbol on start of
 | 
			
		||||
% next line to achieve common design with code-blocks.
 | 
			
		||||
   \let\do@noligs\sphinx@do@noligs
 | 
			
		||||
   \@noligs\endlinechar\m@ne\everyeof{}% (<- in case inside \sphinxhref)
 | 
			
		||||
   \expandafter\scantokens
 | 
			
		||||
  \fi {{#1}}}}% extra brace pair to fix end-space gobbling issue...
 | 
			
		||||
\def\sphinx@do@noligs #1{\catcode`#1\active\begingroup\lccode`\~`#1\relax
 | 
			
		||||
    \lowercase{\endgroup\def~{\leavevmode\kern\z@\char`#1 }}}
 | 
			
		||||
\def\sphinx@literal@nolig@list {\do\`\do\<\do\>\do\'\do\-}%
 | 
			
		||||
\let\sphinxafterbreakofinlineliteral\empty
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
\endinput
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,122 @@
 | 
			
		|||
%% NUMBERING OF FIGURES, TABLES, AND LITERAL BLOCKS
 | 
			
		||||
%
 | 
			
		||||
% change this info string if making any custom modification
 | 
			
		||||
\ProvidesFile{sphinxlatexnumfig.sty}[2021/01/27 numbering]
 | 
			
		||||
 | 
			
		||||
% Requires: remreset (old LaTeX only)
 | 
			
		||||
% relates to numfig and numfig_secnum_depth configuration variables
 | 
			
		||||
 | 
			
		||||
% LaTeX 2018-04-01 and later provides \@removefromreset
 | 
			
		||||
\ltx@ifundefined{@removefromreset}
 | 
			
		||||
    {\RequirePackage{remreset}}
 | 
			
		||||
    {}% avoid warning
 | 
			
		||||
% Everything is delayed to \begin{document} to allow hyperref patches into
 | 
			
		||||
%   \newcounter to solve duplicate label problems for internal hyperlinks to
 | 
			
		||||
%   code listings (literalblock counter).  User or extension re-definitions of
 | 
			
		||||
%   \theliteralblock, et al., thus have also to be delayed. (changed at 3.5.0)
 | 
			
		||||
\AtBeginDocument{%
 | 
			
		||||
\ltx@ifundefined{c@chapter}
 | 
			
		||||
   {\newcounter{literalblock}}%
 | 
			
		||||
   {\newcounter{literalblock}[chapter]%
 | 
			
		||||
    \def\theliteralblock{\ifnum\c@chapter>\z@\arabic{chapter}.\fi
 | 
			
		||||
                         \arabic{literalblock}}%
 | 
			
		||||
    }%
 | 
			
		||||
\ifspx@opt@nonumfigreset
 | 
			
		||||
    \ltx@ifundefined{c@chapter}{}{%
 | 
			
		||||
      \@removefromreset{figure}{chapter}%
 | 
			
		||||
      \@removefromreset{table}{chapter}%
 | 
			
		||||
      \@removefromreset{literalblock}{chapter}%
 | 
			
		||||
      \ifspx@opt@mathnumfig
 | 
			
		||||
        \@removefromreset{equation}{chapter}%
 | 
			
		||||
      \fi
 | 
			
		||||
    }%
 | 
			
		||||
    \def\thefigure{\arabic{figure}}%
 | 
			
		||||
    \def\thetable {\arabic{table}}%
 | 
			
		||||
    \def\theliteralblock{\arabic{literalblock}}%
 | 
			
		||||
    \ifspx@opt@mathnumfig
 | 
			
		||||
      \def\theequation{\arabic{equation}}%
 | 
			
		||||
    \fi
 | 
			
		||||
\else
 | 
			
		||||
\let\spx@preAthefigure\@empty
 | 
			
		||||
\let\spx@preBthefigure\@empty
 | 
			
		||||
% \ifspx@opt@usespart  % <-- LaTeX writer could pass such a 'usespart' boolean
 | 
			
		||||
%                      %     as sphinx.sty package option
 | 
			
		||||
% If document uses \part, (triggered in Sphinx by latex_toplevel_sectioning)
 | 
			
		||||
% LaTeX core per default does not reset chapter or section
 | 
			
		||||
% counters at each part.
 | 
			
		||||
% But if we modify this, we need to redefine \thechapter, \thesection to
 | 
			
		||||
% include the part number and this will cause problems in table of contents
 | 
			
		||||
% because of too wide numbering. Simplest is to do nothing.
 | 
			
		||||
% \fi
 | 
			
		||||
\ifnum\spx@opt@numfigreset>0
 | 
			
		||||
    \ltx@ifundefined{c@chapter}
 | 
			
		||||
      {}
 | 
			
		||||
      {\g@addto@macro\spx@preAthefigure{\ifnum\c@chapter>\z@\arabic{chapter}.}%
 | 
			
		||||
       \g@addto@macro\spx@preBthefigure{\fi}}%
 | 
			
		||||
\fi
 | 
			
		||||
\ifnum\spx@opt@numfigreset>1
 | 
			
		||||
    \@addtoreset{figure}{section}%
 | 
			
		||||
    \@addtoreset{table}{section}%
 | 
			
		||||
    \@addtoreset{literalblock}{section}%
 | 
			
		||||
    \ifspx@opt@mathnumfig
 | 
			
		||||
      \@addtoreset{equation}{section}%
 | 
			
		||||
    \fi%
 | 
			
		||||
    \g@addto@macro\spx@preAthefigure{\ifnum\c@section>\z@\arabic{section}.}%
 | 
			
		||||
    \g@addto@macro\spx@preBthefigure{\fi}%
 | 
			
		||||
\fi
 | 
			
		||||
\ifnum\spx@opt@numfigreset>2
 | 
			
		||||
    \@addtoreset{figure}{subsection}%
 | 
			
		||||
    \@addtoreset{table}{subsection}%
 | 
			
		||||
    \@addtoreset{literalblock}{subsection}%
 | 
			
		||||
    \ifspx@opt@mathnumfig
 | 
			
		||||
      \@addtoreset{equation}{subsection}%
 | 
			
		||||
    \fi%
 | 
			
		||||
    \g@addto@macro\spx@preAthefigure{\ifnum\c@subsection>\z@\arabic{subsection}.}%
 | 
			
		||||
    \g@addto@macro\spx@preBthefigure{\fi}%
 | 
			
		||||
\fi
 | 
			
		||||
\ifnum\spx@opt@numfigreset>3
 | 
			
		||||
    \@addtoreset{figure}{subsubsection}%
 | 
			
		||||
    \@addtoreset{table}{subsubsection}%
 | 
			
		||||
    \@addtoreset{literalblock}{subsubsection}%
 | 
			
		||||
    \ifspx@opt@mathnumfig
 | 
			
		||||
      \@addtoreset{equation}{subsubsection}%
 | 
			
		||||
    \fi%
 | 
			
		||||
    \g@addto@macro\spx@preAthefigure{\ifnum\c@subsubsection>\z@\arabic{subsubsection}.}%
 | 
			
		||||
    \g@addto@macro\spx@preBthefigure{\fi}%
 | 
			
		||||
\fi
 | 
			
		||||
\ifnum\spx@opt@numfigreset>4
 | 
			
		||||
    \@addtoreset{figure}{paragraph}%
 | 
			
		||||
    \@addtoreset{table}{paragraph}%
 | 
			
		||||
    \@addtoreset{literalblock}{paragraph}%
 | 
			
		||||
    \ifspx@opt@mathnumfig
 | 
			
		||||
      \@addtoreset{equation}{paragraph}%
 | 
			
		||||
    \fi%
 | 
			
		||||
    \g@addto@macro\spx@preAthefigure{\ifnum\c@subparagraph>\z@\arabic{subparagraph}.}%
 | 
			
		||||
    \g@addto@macro\spx@preBthefigure{\fi}%
 | 
			
		||||
\fi
 | 
			
		||||
\ifnum\spx@opt@numfigreset>5
 | 
			
		||||
    \@addtoreset{figure}{subparagraph}%
 | 
			
		||||
    \@addtoreset{table}{subparagraph}%
 | 
			
		||||
    \@addtoreset{literalblock}{subparagraph}%
 | 
			
		||||
    \ifspx@opt@mathnumfig
 | 
			
		||||
      \@addtoreset{equation}{subparagraph}%
 | 
			
		||||
    \fi%
 | 
			
		||||
    \g@addto@macro\spx@preAthefigure{\ifnum\c@subsubparagraph>\z@\arabic{subsubparagraph}.}%
 | 
			
		||||
    \g@addto@macro\spx@preBthefigure{\fi}%
 | 
			
		||||
\fi
 | 
			
		||||
\expandafter\g@addto@macro
 | 
			
		||||
\expandafter\spx@preAthefigure\expandafter{\spx@preBthefigure}%
 | 
			
		||||
\let\thefigure\spx@preAthefigure
 | 
			
		||||
\let\thetable\spx@preAthefigure
 | 
			
		||||
\let\theliteralblock\spx@preAthefigure
 | 
			
		||||
\g@addto@macro\thefigure{\arabic{figure}}%
 | 
			
		||||
\g@addto@macro\thetable{\arabic{table}}%
 | 
			
		||||
\g@addto@macro\theliteralblock{\arabic{literalblock}}%
 | 
			
		||||
  \ifspx@opt@mathnumfig
 | 
			
		||||
    \let\theequation\spx@preAthefigure
 | 
			
		||||
    \g@addto@macro\theequation{\arabic{equation}}%
 | 
			
		||||
  \fi
 | 
			
		||||
\fi
 | 
			
		||||
}% end of big \AtBeginDocument
 | 
			
		||||
 | 
			
		||||
\endinput
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,215 @@
 | 
			
		|||
%% MODULE RELEASE DATA AND OBJECT DESCRIPTIONS
 | 
			
		||||
%
 | 
			
		||||
% change this info string if making any custom modification
 | 
			
		||||
\ProvidesFile{sphinxlatexobjects.sty}[2021/12/05 documentation environments]
 | 
			
		||||
 | 
			
		||||
% Provides support for this output mark-up from Sphinx latex writer:
 | 
			
		||||
%
 | 
			
		||||
% - environments
 | 
			
		||||
%
 | 
			
		||||
%   - fulllineitems
 | 
			
		||||
%   - productionlist
 | 
			
		||||
%   - optionlist
 | 
			
		||||
%   - DUlineblock (also "lineblock")
 | 
			
		||||
%
 | 
			
		||||
% - macros
 | 
			
		||||
%
 | 
			
		||||
%   - \DUrole
 | 
			
		||||
%   - various legacy support macros related to author and release
 | 
			
		||||
%     data of documented objects and modules.
 | 
			
		||||
 | 
			
		||||
% \moduleauthor{name}{email}
 | 
			
		||||
\newcommand{\moduleauthor}[2]{}
 | 
			
		||||
 | 
			
		||||
% \sectionauthor{name}{email}
 | 
			
		||||
\newcommand{\sectionauthor}[2]{}
 | 
			
		||||
 | 
			
		||||
% Allow the release number to be specified independently of the
 | 
			
		||||
% \date{}.  This allows the date to reflect the document's date and
 | 
			
		||||
% release to specify the release that is documented.
 | 
			
		||||
%
 | 
			
		||||
\newcommand{\py@release}{\releasename\space\version}
 | 
			
		||||
\newcommand{\version}{}% part of \py@release, used by title page and headers
 | 
			
		||||
% \releaseinfo is used on titlepage (sphinxmanual.cls, sphinxhowto.cls)
 | 
			
		||||
\newcommand{\releaseinfo}{}
 | 
			
		||||
\newcommand{\setreleaseinfo}[1]{\renewcommand{\releaseinfo}{#1}}
 | 
			
		||||
% this is inserted via template and #1=release config variable
 | 
			
		||||
\newcommand{\release}[1]{\renewcommand{\version}{#1}}
 | 
			
		||||
% this is defined by template to 'releasename' latex_elements key
 | 
			
		||||
\newcommand{\releasename}{}
 | 
			
		||||
% Fix issue in case release and releasename deliberately left blank
 | 
			
		||||
\newcommand{\sphinxheadercomma}{, }% used in fancyhdr header definition
 | 
			
		||||
\newcommand{\sphinxifemptyorblank}[1]{%
 | 
			
		||||
% test after one expansion of macro #1 if contents is empty or spaces
 | 
			
		||||
     \if&\expandafter\@firstofone\detokenize\expandafter{#1}&%
 | 
			
		||||
     \expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}%
 | 
			
		||||
\AtBeginDocument {%
 | 
			
		||||
   \sphinxifemptyorblank{\releasename}
 | 
			
		||||
     {\sphinxifemptyorblank{\version}{\let\sphinxheadercomma\empty}{}}
 | 
			
		||||
     {}%
 | 
			
		||||
}%
 | 
			
		||||
 | 
			
		||||
% Allow specification of the author's address separately from the
 | 
			
		||||
% author's name.  This can be used to format them differently, which
 | 
			
		||||
% is a good thing.
 | 
			
		||||
%
 | 
			
		||||
\newcommand{\py@authoraddress}{}
 | 
			
		||||
\newcommand{\authoraddress}[1]{\renewcommand{\py@authoraddress}{#1}}
 | 
			
		||||
 | 
			
		||||
% {fulllineitems} is the main environment for object descriptions.
 | 
			
		||||
%
 | 
			
		||||
% With 4.0.0 \pysigline (and \pysiglinewithargsret), used in a fulllineitems
 | 
			
		||||
% environment the #1 will already be of the width which is computed here, i.e.
 | 
			
		||||
% the available width on line, so the \makebox becomes a bit superfluous
 | 
			
		||||
\newcommand{\py@itemnewline}[1]{% macro used as \makelabel in fulllineitems
 | 
			
		||||
% Memo: this presupposes \itemindent is 0pt
 | 
			
		||||
  \kern\labelsep  % because \@labels core latex box does \hskip-\labelsep
 | 
			
		||||
  \makebox[\dimexpr\linewidth+\labelwidth\relax][l]{#1}%
 | 
			
		||||
  \kern-\labelsep % because at end of \@labels box there is \hskip\labelsep
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
\newenvironment{fulllineitems}{%
 | 
			
		||||
  \begin{list}{}{\labelwidth \leftmargin
 | 
			
		||||
                 \rightmargin \z@ \topsep -\parskip \partopsep \parskip
 | 
			
		||||
                 \itemsep -\parsep
 | 
			
		||||
                 \let\makelabel=\py@itemnewline}%
 | 
			
		||||
}{\end{list}}
 | 
			
		||||
 | 
			
		||||
% Signatures, possibly multi-line
 | 
			
		||||
%
 | 
			
		||||
\newlength{\py@argswidth}
 | 
			
		||||
\newcommand{\py@sigparams}[2]{%
 | 
			
		||||
  % The \py@argswidth has been computed in \pysiglinewithargsret to make this
 | 
			
		||||
  % occupy full available width on line.
 | 
			
		||||
  \parbox[t]{\py@argswidth}{\raggedright #1\sphinxcode{)}#2\strut}%
 | 
			
		||||
  % final strut is to help get correct vertical separation in case of multi-line
 | 
			
		||||
  % box with the item contents. 
 | 
			
		||||
}
 | 
			
		||||
\newcommand{\pysigline}[1]{%
 | 
			
		||||
% the \py@argswidth is available we use it despite its name (no "args" here)
 | 
			
		||||
% the \relax\relax is because \py@argswidth is a "skip" variable and the first
 | 
			
		||||
% \relax only ends its "dimen" part
 | 
			
		||||
  \py@argswidth=\dimexpr\linewidth+\labelwidth\relax\relax
 | 
			
		||||
  \item[{\parbox[t]{\py@argswidth}{\raggedright #1\strut}}]
 | 
			
		||||
  \futurelet\sphinx@token\pysigline@preparevspace@i
 | 
			
		||||
}
 | 
			
		||||
\newcommand{\pysiglinewithargsret}[3]{%
 | 
			
		||||
  \settowidth{\py@argswidth}{#1\sphinxcode{(}}%
 | 
			
		||||
  \py@argswidth=\dimexpr\linewidth+\labelwidth-\py@argswidth\relax\relax
 | 
			
		||||
  \item[{#1\sphinxcode{(}\py@sigparams{#2}{#3}\strut}]
 | 
			
		||||
  \futurelet\sphinx@token\pysigline@preparevspace@i
 | 
			
		||||
}
 | 
			
		||||
\def\pysigline@preparevspace@i{%
 | 
			
		||||
  \ifx\sphinx@token\@sptoken
 | 
			
		||||
   \expandafter\pysigline@preparevspace@again
 | 
			
		||||
   \else\expandafter\pysigline@preparevspace@ii
 | 
			
		||||
  \fi
 | 
			
		||||
}
 | 
			
		||||
\@firstofone{\def\pysigline@preparevspace@again} {\futurelet\sphinx@token\pysigline@preparevspace@i}
 | 
			
		||||
\long\def\pysigline@preparevspace@ii#1{%
 | 
			
		||||
  \ifx\sphinx@token\bgroup\expandafter\@firstoftwo
 | 
			
		||||
  \else
 | 
			
		||||
    \ifx\sphinx@token\phantomsection
 | 
			
		||||
    \else
 | 
			
		||||
% this strange incantation is because at its root LaTeX in fact did not
 | 
			
		||||
% imagine a multi-line label, it is always wrapped in a horizontal box at core
 | 
			
		||||
% LaTeX level and we have to find tricks to get correct interline distances.
 | 
			
		||||
% It interacts badly with a follow-up \phantomsection hence the test above
 | 
			
		||||
    \leavevmode\par\nobreak\vskip-\parskip\prevdepth\dp\strutbox
 | 
			
		||||
    \fi
 | 
			
		||||
    \expandafter\@secondoftwo
 | 
			
		||||
  \fi
 | 
			
		||||
  {{#1}}{#1}%
 | 
			
		||||
}
 | 
			
		||||
\newcommand{\pysigstartmultiline}{%
 | 
			
		||||
 \def\pysigstartmultiline{\vskip\smallskipamount\parskip\z@skip\itemsep\z@skip}%
 | 
			
		||||
 \edef\pysigstopmultiline
 | 
			
		||||
     {\noexpand\leavevmode\parskip\the\parskip\relax\itemsep\the\itemsep\relax}%
 | 
			
		||||
 \parskip\z@skip\itemsep\z@skip
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
% Production lists
 | 
			
		||||
%
 | 
			
		||||
\newenvironment{productionlist}{%
 | 
			
		||||
%  \def\sphinxoptional##1{{\Large[}##1{\Large]}}
 | 
			
		||||
  \def\production##1##2{\\\sphinxcode{\sphinxupquote{##1}}&::=&\sphinxcode{\sphinxupquote{##2}}}%
 | 
			
		||||
  \def\productioncont##1{\\& &\sphinxcode{\sphinxupquote{##1}}}%
 | 
			
		||||
  \parindent=2em
 | 
			
		||||
  \indent
 | 
			
		||||
  \setlength{\LTpre}{0pt}%
 | 
			
		||||
  \setlength{\LTpost}{0pt}%
 | 
			
		||||
  \begin{longtable}[l]{lcl}
 | 
			
		||||
}{%
 | 
			
		||||
  \end{longtable}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
% Definition lists; requested by AMK for HOWTO documents.  Probably useful
 | 
			
		||||
% elsewhere as well, so keep in in the general style support.
 | 
			
		||||
%
 | 
			
		||||
\newenvironment{definitions}{%
 | 
			
		||||
  \begin{description}%
 | 
			
		||||
  \def\term##1{\item[{##1}]\mbox{}\\*[0mm]}%
 | 
			
		||||
}{%
 | 
			
		||||
  \end{description}%
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
%% FROM DOCTUTILS LATEX WRITER
 | 
			
		||||
%
 | 
			
		||||
% The following is stuff copied from docutils' latex writer.
 | 
			
		||||
%
 | 
			
		||||
\newcommand{\optionlistlabel}[1]{\normalfont\bfseries #1 \hfill}% \bf deprecated
 | 
			
		||||
\newenvironment{optionlist}[1]
 | 
			
		||||
{\begin{list}{}
 | 
			
		||||
  {\setlength{\labelwidth}{#1}
 | 
			
		||||
   \setlength{\rightmargin}{1cm}
 | 
			
		||||
   \setlength{\leftmargin}{\rightmargin}
 | 
			
		||||
   \addtolength{\leftmargin}{\labelwidth}
 | 
			
		||||
   \addtolength{\leftmargin}{\labelsep}
 | 
			
		||||
   \renewcommand{\makelabel}{\optionlistlabel}}
 | 
			
		||||
}{\end{list}}
 | 
			
		||||
 | 
			
		||||
\newlength{\lineblockindentation}
 | 
			
		||||
\setlength{\lineblockindentation}{2.5em}
 | 
			
		||||
\newenvironment{lineblock}[1]
 | 
			
		||||
{\begin{list}{}
 | 
			
		||||
  {\setlength{\partopsep}{\parskip}
 | 
			
		||||
   \addtolength{\partopsep}{\baselineskip}
 | 
			
		||||
   \topsep0pt\itemsep0.15\baselineskip\parsep0pt
 | 
			
		||||
   \leftmargin#1\relax}
 | 
			
		||||
 \raggedright}
 | 
			
		||||
{\end{list}}
 | 
			
		||||
 | 
			
		||||
% From docutils.writers.latex2e
 | 
			
		||||
% inline markup (custom roles)
 | 
			
		||||
% \DUrole{#1}{#2} tries \DUrole#1{#2}
 | 
			
		||||
\providecommand*{\DUrole}[2]{%
 | 
			
		||||
  \ifcsname DUrole\detokenize{#1}\endcsname
 | 
			
		||||
    \csname DUrole\detokenize{#1}\endcsname{#2}%
 | 
			
		||||
  \else% backwards compatibility: try \docutilsrole#1{#2}
 | 
			
		||||
    \ifcsname docutilsrole\detokenize{#1}\endcsname
 | 
			
		||||
      \csname docutilsrole\detokenize{#1}\endcsname{#2}%
 | 
			
		||||
    \else
 | 
			
		||||
      #2%
 | 
			
		||||
    \fi
 | 
			
		||||
  \fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
\providecommand*{\DUprovidelength}[2]{%
 | 
			
		||||
  \ifdefined#1\else\newlength{#1}\setlength{#1}{#2}\fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
\DUprovidelength{\DUlineblockindent}{2.5em}
 | 
			
		||||
\ifdefined\DUlineblock\else
 | 
			
		||||
  \newenvironment{DUlineblock}[1]{%
 | 
			
		||||
    \list{}{\setlength{\partopsep}{\parskip}
 | 
			
		||||
            \addtolength{\partopsep}{\baselineskip}
 | 
			
		||||
            \setlength{\topsep}{0pt}
 | 
			
		||||
            \setlength{\itemsep}{0.15\baselineskip}
 | 
			
		||||
            \setlength{\parsep}{0pt}
 | 
			
		||||
            \setlength{\leftmargin}{#1}}
 | 
			
		||||
    \raggedright
 | 
			
		||||
  }
 | 
			
		||||
  {\endlist}
 | 
			
		||||
\fi
 | 
			
		||||
 | 
			
		||||
\endinput
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,100 @@
 | 
			
		|||
%% TOPIC AND CONTENTS BOXES
 | 
			
		||||
%
 | 
			
		||||
% change this info string if making any custom modification
 | 
			
		||||
\ProvidesFile{sphinxlatexshadowbox.sty}[2021/01/27 sphinxShadowBox]
 | 
			
		||||
 | 
			
		||||
% Provides support for this output mark-up from Sphinx latex writer:
 | 
			
		||||
%
 | 
			
		||||
% - sphinxShadowBox (environment)
 | 
			
		||||
%
 | 
			
		||||
% 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
 | 
			
		||||
% - \ifspx@inframed defined in sphinx.sty
 | 
			
		||||
%
 | 
			
		||||
% Requires:
 | 
			
		||||
\RequirePackage{framed}
 | 
			
		||||
 | 
			
		||||
% Again based on use of "framed.sty", this allows breakable framed boxes.
 | 
			
		||||
\long\def\spx@ShadowFBox#1{%
 | 
			
		||||
  \leavevmode\begingroup
 | 
			
		||||
  % first we frame the box #1
 | 
			
		||||
  \setbox\@tempboxa
 | 
			
		||||
   \hbox{\vrule\@width\sphinxshadowrule
 | 
			
		||||
         \vbox{\hrule\@height\sphinxshadowrule
 | 
			
		||||
               \kern\sphinxshadowsep
 | 
			
		||||
               \hbox{\kern\sphinxshadowsep #1\kern\sphinxshadowsep}%
 | 
			
		||||
               \kern\sphinxshadowsep
 | 
			
		||||
               \hrule\@height\sphinxshadowrule}%
 | 
			
		||||
         \vrule\@width\sphinxshadowrule}%
 | 
			
		||||
  % Now we add the shadow, like \shadowbox from fancybox.sty would do
 | 
			
		||||
  \dimen@\dimexpr.5\sphinxshadowrule+\sphinxshadowsize\relax
 | 
			
		||||
  \hbox{\vbox{\offinterlineskip
 | 
			
		||||
              \hbox{\copy\@tempboxa\kern-.5\sphinxshadowrule
 | 
			
		||||
                    % add shadow on right side
 | 
			
		||||
                    \lower\sphinxshadowsize
 | 
			
		||||
                          \hbox{\vrule\@height\ht\@tempboxa \@width\dimen@}%
 | 
			
		||||
                    }%
 | 
			
		||||
              \kern-\dimen@ % shift back vertically to bottom of frame
 | 
			
		||||
              % and add shadow at bottom
 | 
			
		||||
              \moveright\sphinxshadowsize
 | 
			
		||||
                    \vbox{\hrule\@width\wd\@tempboxa \@height\dimen@}%
 | 
			
		||||
              }%
 | 
			
		||||
        % move left by the size of right shadow so shadow adds no width
 | 
			
		||||
        \kern-\sphinxshadowsize
 | 
			
		||||
       }%
 | 
			
		||||
  \endgroup
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
% use framed.sty to allow page breaks in frame+shadow
 | 
			
		||||
% works well inside Lists and Quote-like environments
 | 
			
		||||
% produced by ``topic'' directive (or local contents)
 | 
			
		||||
% could nest if LaTeX writer authorized it
 | 
			
		||||
\newenvironment{sphinxShadowBox}
 | 
			
		||||
  {\def\FrameCommand {\spx@ShadowFBox }%
 | 
			
		||||
   \advance\spx@image@maxheight
 | 
			
		||||
   -\dimexpr2\sphinxshadowrule
 | 
			
		||||
           +2\sphinxshadowsep
 | 
			
		||||
           +\sphinxshadowsize
 | 
			
		||||
           +\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 (=2shadowsep+2shadowrule)
 | 
			
		||||
    % 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
 | 
			
		||||
    }%
 | 
			
		||||
  }%
 | 
			
		||||
  {% insert the "endminipage" code
 | 
			
		||||
    \par\unskip
 | 
			
		||||
    \@minipagefalse
 | 
			
		||||
   \endMakeFramed
 | 
			
		||||
     \ifspx@inframed\end{minipage}\fi
 | 
			
		||||
   \endtrivlist
 | 
			
		||||
   % output the stored footnotes
 | 
			
		||||
   \spewnotes
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
\endinput
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,83 @@
 | 
			
		|||
%% TITLES
 | 
			
		||||
%
 | 
			
		||||
% change this info string if making any custom modification
 | 
			
		||||
\ProvidesFile{sphinxlatexstyleheadings.sty}[2021/01/27 headings]
 | 
			
		||||
 | 
			
		||||
\RequirePackage[nobottomtitles*]{titlesec}
 | 
			
		||||
\@ifpackagelater{titlesec}{2016/03/15}%
 | 
			
		||||
 {\@ifpackagelater{titlesec}{2016/03/21}%
 | 
			
		||||
  {}%
 | 
			
		||||
  {\newif\ifsphinx@ttlpatch@ok
 | 
			
		||||
   \IfFileExists{etoolbox.sty}{%
 | 
			
		||||
     \RequirePackage{etoolbox}%
 | 
			
		||||
     \patchcmd{\ttlh@hang}{\parindent\z@}{\parindent\z@\leavevmode}%
 | 
			
		||||
                                {\sphinx@ttlpatch@oktrue}{}%
 | 
			
		||||
     \ifsphinx@ttlpatch@ok
 | 
			
		||||
     \patchcmd{\ttlh@hang}{\noindent}{}{}{\sphinx@ttlpatch@okfalse}%
 | 
			
		||||
     \fi
 | 
			
		||||
   }{}%
 | 
			
		||||
   \ifsphinx@ttlpatch@ok
 | 
			
		||||
     \typeout{^^J Package Sphinx Info: ^^J
 | 
			
		||||
              **** titlesec 2.10.1 successfully patched for bugfix ****^^J}%
 | 
			
		||||
   \else
 | 
			
		||||
     \AtEndDocument{\PackageWarningNoLine{sphinx}{^^J%
 | 
			
		||||
******** titlesec 2.10.1 has a bug, (section numbers disappear) ......|^^J%
 | 
			
		||||
******** and Sphinx could not patch it, perhaps because your local ...|^^J%
 | 
			
		||||
******** copy is already fixed without a changed release date. .......|^^J%
 | 
			
		||||
******** If not, you must update titlesec! ...........................|}}%
 | 
			
		||||
   \fi
 | 
			
		||||
  }%
 | 
			
		||||
 }{}
 | 
			
		||||
 | 
			
		||||
% Augment the sectioning commands used to get our own font family in place,
 | 
			
		||||
% and reset some internal data items (\titleformat from titlesec package)
 | 
			
		||||
\titleformat{\section}{\Large\py@HeaderFamily}%
 | 
			
		||||
            {\py@TitleColor\thesection}{0.5em}{\py@TitleColor}
 | 
			
		||||
\titleformat{\subsection}{\large\py@HeaderFamily}%
 | 
			
		||||
            {\py@TitleColor\thesubsection}{0.5em}{\py@TitleColor}
 | 
			
		||||
\titleformat{\subsubsection}{\py@HeaderFamily}%
 | 
			
		||||
            {\py@TitleColor\thesubsubsection}{0.5em}{\py@TitleColor}
 | 
			
		||||
% By default paragraphs (and subsubsections) will not be numbered because
 | 
			
		||||
% sphinxmanual.cls and sphinxhowto.cls set secnumdepth to 2
 | 
			
		||||
\titleformat{\paragraph}{\py@HeaderFamily}%
 | 
			
		||||
            {\py@TitleColor\theparagraph}{0.5em}{\py@TitleColor}
 | 
			
		||||
\titleformat{\subparagraph}{\py@HeaderFamily}%
 | 
			
		||||
            {\py@TitleColor\thesubparagraph}{0.5em}{\py@TitleColor}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
% Since Sphinx 1.5, users should use HeaderFamily key to 'sphinxsetup' rather
 | 
			
		||||
% than defining their own \py@HeaderFamily command (which is still possible).
 | 
			
		||||
% Memo: \py@HeaderFamily is also used by \maketitle as defined in
 | 
			
		||||
% sphinxmanual.cls/sphinxhowto.cls
 | 
			
		||||
\newcommand{\py@HeaderFamily}{\spx@opt@HeaderFamily}
 | 
			
		||||
 | 
			
		||||
% This sets up the fancy chapter headings that make the documents look
 | 
			
		||||
% at least a little better than the usual LaTeX output.
 | 
			
		||||
\@ifpackagewith{fncychap}{Bjarne}{
 | 
			
		||||
  \ChNameVar {\raggedleft\normalsize \py@HeaderFamily}
 | 
			
		||||
  \ChNumVar  {\raggedleft\Large      \py@HeaderFamily}
 | 
			
		||||
  \ChTitleVar{\raggedleft\Large      \py@HeaderFamily}
 | 
			
		||||
  % This creates (numbered) chapter heads without the leading \vspace*{}:
 | 
			
		||||
  \def\@makechapterhead#1{%
 | 
			
		||||
    {\parindent \z@ \raggedright \normalfont
 | 
			
		||||
      \ifnum \c@secnumdepth >\m@ne
 | 
			
		||||
        \if@mainmatter
 | 
			
		||||
          \DOCH
 | 
			
		||||
        \fi
 | 
			
		||||
      \fi
 | 
			
		||||
      \interlinepenalty\@M
 | 
			
		||||
      \if@mainmatter
 | 
			
		||||
        \DOTI{#1}%
 | 
			
		||||
      \else%
 | 
			
		||||
        \DOTIS{#1}%
 | 
			
		||||
      \fi
 | 
			
		||||
    }}
 | 
			
		||||
}{}% <-- "false" clause of \@ifpackagewith
 | 
			
		||||
 | 
			
		||||
% fix fncychap's bug which uses prematurely the \textwidth value
 | 
			
		||||
\@ifpackagewith{fncychap}{Bjornstrup}
 | 
			
		||||
 {\AtBeginDocument{\mylen\textwidth\advance\mylen-2\myhi}}%
 | 
			
		||||
 {}% <-- "false" clause of \@ifpackagewith
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
\endinput
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,79 @@
 | 
			
		|||
%% PAGE STYLING
 | 
			
		||||
%
 | 
			
		||||
% change this info string if making any custom modification
 | 
			
		||||
\ProvidesFile{sphinxlatexstylepage.sty}[2021/01/27 page styling]
 | 
			
		||||
 | 
			
		||||
% Separate paragraphs by space by default.
 | 
			
		||||
\IfFileExists{parskip-2001-04-09.sty}% since September 2018 TeXLive update
 | 
			
		||||
% new parskip.sty, but let it rollback to old one.
 | 
			
		||||
% hopefully TeX installation not broken and LaTeX kernel not too old
 | 
			
		||||
   {\RequirePackage{parskip}[=v1]}
 | 
			
		||||
% standard one from 1989. Admittedly \section of article/book gives possibly
 | 
			
		||||
% anomalous spacing, but we can't require September 2018 release for some time.
 | 
			
		||||
   {\RequirePackage{parskip}}
 | 
			
		||||
 | 
			
		||||
% Style parameters and macros used by most documents here
 | 
			
		||||
\raggedbottom
 | 
			
		||||
\sloppy
 | 
			
		||||
\hbadness = 5000                % don't print trivial gripes
 | 
			
		||||
 | 
			
		||||
% Require package fancyhdr except under memoir class
 | 
			
		||||
\@ifclassloaded{memoir}{}{\RequirePackage{fancyhdr}}
 | 
			
		||||
% Use \pagestyle{normal} as the primary pagestyle for text.
 | 
			
		||||
% Redefine the 'normal' header/footer style when using "fancyhdr" package:
 | 
			
		||||
\@ifpackageloaded{fancyhdr}{%
 | 
			
		||||
  \ltx@ifundefined{c@chapter}
 | 
			
		||||
  {% no \chapter, "howto" (non-Japanese) docclass
 | 
			
		||||
   \fancypagestyle{plain}{
 | 
			
		||||
    \fancyhf{}
 | 
			
		||||
    \fancyfoot[C]{{\py@HeaderFamily\thepage}}
 | 
			
		||||
    \renewcommand{\headrulewidth}{0pt}
 | 
			
		||||
    \renewcommand{\footrulewidth}{0pt}
 | 
			
		||||
   }
 | 
			
		||||
   % Same as 'plain', this way we can use it in template
 | 
			
		||||
   % FIXME: shouldn't this have a running header with Name and Release like 'manual'?
 | 
			
		||||
   \fancypagestyle{normal}{
 | 
			
		||||
    \fancyhf{}
 | 
			
		||||
    \fancyfoot[C]{{\py@HeaderFamily\thepage}}
 | 
			
		||||
    \renewcommand{\headrulewidth}{0pt}
 | 
			
		||||
    \renewcommand{\footrulewidth}{0pt}
 | 
			
		||||
   }
 | 
			
		||||
  }%
 | 
			
		||||
  {% classes with \chapter command
 | 
			
		||||
   \fancypagestyle{normal}{
 | 
			
		||||
    \fancyhf{}
 | 
			
		||||
    \fancyfoot[RO]{{\py@HeaderFamily\thepage}}
 | 
			
		||||
    \fancyfoot[LO]{{\py@HeaderFamily\nouppercase{\rightmark}}}
 | 
			
		||||
    \fancyhead[RO]{{\py@HeaderFamily \@title\sphinxheadercomma\py@release}}
 | 
			
		||||
    \if@twoside
 | 
			
		||||
     \fancyfoot[LE]{{\py@HeaderFamily\thepage}}
 | 
			
		||||
     \fancyfoot[RE]{{\py@HeaderFamily\nouppercase{\leftmark}}}
 | 
			
		||||
     \fancyhead[LE]{{\py@HeaderFamily \@title\sphinxheadercomma\py@release}}
 | 
			
		||||
    \fi
 | 
			
		||||
    \renewcommand{\headrulewidth}{0.4pt}
 | 
			
		||||
    \renewcommand{\footrulewidth}{0.4pt}
 | 
			
		||||
    % define chaptermark with \@chappos when \@chappos is available for Japanese
 | 
			
		||||
    \ltx@ifundefined{@chappos}{}
 | 
			
		||||
      {\def\chaptermark##1{\markboth{\@chapapp\space\thechapter\space\@chappos\space ##1}{}}}
 | 
			
		||||
    }
 | 
			
		||||
  % Update the plain style so we get the page number & footer line,
 | 
			
		||||
  % but not a chapter or section title.  This is to keep the first
 | 
			
		||||
  % page of a chapter `clean.'
 | 
			
		||||
   \fancypagestyle{plain}{
 | 
			
		||||
    \fancyhf{}
 | 
			
		||||
    \fancyfoot[RO]{{\py@HeaderFamily\thepage}}
 | 
			
		||||
    \if@twoside\fancyfoot[LE]{{\py@HeaderFamily\thepage}}\fi
 | 
			
		||||
    \renewcommand{\headrulewidth}{0pt}
 | 
			
		||||
    \renewcommand{\footrulewidth}{0.4pt}
 | 
			
		||||
    }
 | 
			
		||||
   }
 | 
			
		||||
  }
 | 
			
		||||
  {% no fancyhdr: memoir class
 | 
			
		||||
   % Provide default for 'normal' style simply as an alias of 'plain' style
 | 
			
		||||
   % This way we can use \pagestyle{normal} in LaTeX template
 | 
			
		||||
   \def\ps@normal{\ps@plain}
 | 
			
		||||
   % Users of memoir class are invited to redefine 'normal' style in preamble
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
\endinput
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,134 @@
 | 
			
		|||
%% TEXT STYLING
 | 
			
		||||
%
 | 
			
		||||
% change this info string if making any custom modification
 | 
			
		||||
\ProvidesFile{sphinxlatexstyletext.sty}[2021/12/06 text styling]
 | 
			
		||||
 | 
			
		||||
% Basically everything here consists of macros which are part of the latex
 | 
			
		||||
% markup produced by the Sphinx latex writer
 | 
			
		||||
 | 
			
		||||
% Some custom font markup commands.
 | 
			
		||||
\protected\def\sphinxstrong#1{\textbf{#1}}
 | 
			
		||||
\protected\def\sphinxcode#1{\texttt{#1}}
 | 
			
		||||
\protected\def\sphinxbfcode#1{\textbf{\sphinxcode{#1}}}
 | 
			
		||||
\protected\def\sphinxemail#1{\textsf{#1}}
 | 
			
		||||
\protected\def\sphinxtablecontinued#1{\textsf{#1}}
 | 
			
		||||
\protected\def\sphinxtitleref#1{\emph{#1}}
 | 
			
		||||
\protected\def\sphinxmenuselection#1{\emph{#1}}
 | 
			
		||||
\protected\def\sphinxguilabel#1{\emph{#1}}
 | 
			
		||||
\protected\def\sphinxkeyboard#1{\sphinxcode{#1}}
 | 
			
		||||
\protected\def\sphinxaccelerator#1{\underline{#1}}
 | 
			
		||||
\protected\def\sphinxcrossref#1{\emph{#1}}
 | 
			
		||||
\protected\def\sphinxtermref#1{\emph{#1}}
 | 
			
		||||
% \optional is used for ``[, arg]``, i.e. desc_optional nodes.
 | 
			
		||||
\long\protected\def\sphinxoptional#1{%
 | 
			
		||||
  {\textnormal{\Large[}}{#1}\hspace{0.5mm}{\textnormal{\Large]}}}
 | 
			
		||||
 | 
			
		||||
% additional customizable styling
 | 
			
		||||
\def\sphinxstyleindexentry   #1{\texttt{#1}}
 | 
			
		||||
\def\sphinxstyleindexextra   #1{ (\emph{#1})}
 | 
			
		||||
\def\sphinxstyleindexpageref #1{, \pageref{#1}}
 | 
			
		||||
\def\sphinxstyleindexpagemain#1{\textbf{#1}}
 | 
			
		||||
\def\spxentry{\@backslashchar spxentry}% let to \sphinxstyleindexentry in index
 | 
			
		||||
\def\spxextra{\@backslashchar spxextra}% let to \sphinxstyleindexextra in index
 | 
			
		||||
\def\sphinxstyleindexlettergroup #1%
 | 
			
		||||
    {{\Large\sffamily#1}\nopagebreak\vspace{1mm}}
 | 
			
		||||
\def\sphinxstyleindexlettergroupDefault #1%
 | 
			
		||||
    {{\Large\sffamily\sphinxnonalphabeticalgroupname}\nopagebreak\vspace{1mm}}
 | 
			
		||||
\protected\def\sphinxstyletopictitle   #1{\textbf{#1}\par\medskip}
 | 
			
		||||
\let\sphinxstylesidebartitle\sphinxstyletopictitle
 | 
			
		||||
\protected\def\sphinxstyleothertitle   #1{\textbf{#1}}
 | 
			
		||||
\protected\def\sphinxstylesidebarsubtitle #1{~\\\textbf{#1} \smallskip}
 | 
			
		||||
% \text.. commands do not allow multiple paragraphs
 | 
			
		||||
\protected\def\sphinxstyletheadfamily    {\sffamily}
 | 
			
		||||
\protected\def\sphinxstyleemphasis     #1{\emph{#1}}
 | 
			
		||||
\protected\def\sphinxstyleliteralemphasis#1{\emph{\sphinxcode{#1}}}
 | 
			
		||||
\protected\def\sphinxstylestrong       #1{\textbf{#1}}
 | 
			
		||||
\protected\def\sphinxstyleliteralstrong#1{\sphinxbfcode{#1}}
 | 
			
		||||
\protected\def\sphinxstyleabbreviation #1{\textsc{#1}}
 | 
			
		||||
\protected\def\sphinxstyleliteralintitle#1{\sphinxcode{#1}}
 | 
			
		||||
\newcommand*\sphinxstylecodecontinued[1]{\footnotesize(#1)}%
 | 
			
		||||
\newcommand*\sphinxstylecodecontinues[1]{\footnotesize(#1)}%
 | 
			
		||||
% figure legend comes after caption and may contain arbitrary body elements
 | 
			
		||||
\newenvironment{sphinxlegend}{\par\small}{\par}
 | 
			
		||||
% reduce hyperref "Token not allowed in a PDF string" warnings on PDF builds
 | 
			
		||||
\AtBeginDocument{\pdfstringdefDisableCommands{%
 | 
			
		||||
% all "protected" macros possibly ending up in section titles should be here
 | 
			
		||||
% TODO: examine if \sphinxhref, \sphinxurl, \sphinnolinkurl should be handled
 | 
			
		||||
    \let\sphinxstyleemphasis        \@firstofone
 | 
			
		||||
    \let\sphinxstyleliteralemphasis \@firstofone
 | 
			
		||||
    \let\sphinxstylestrong          \@firstofone
 | 
			
		||||
    \let\sphinxstyleliteralstrong   \@firstofone
 | 
			
		||||
    \let\sphinxstyleabbreviation    \@firstofone
 | 
			
		||||
    \let\sphinxstyleliteralintitle  \@firstofone
 | 
			
		||||
    \let\sphinxupquote  \@firstofone
 | 
			
		||||
    \let\sphinxstrong   \@firstofone
 | 
			
		||||
    \let\sphinxcode     \@firstofone
 | 
			
		||||
    \let\sphinxbfcode   \@firstofone
 | 
			
		||||
    \let\sphinxemail    \@firstofone
 | 
			
		||||
    \let\sphinxcrossref \@firstofone
 | 
			
		||||
    \let\sphinxtermref  \@firstofone
 | 
			
		||||
    \let\sphinxhyphen\sphinxhyphenforbookmarks
 | 
			
		||||
}}
 | 
			
		||||
 | 
			
		||||
% Special characters
 | 
			
		||||
%
 | 
			
		||||
% The \kern\z@ is to prevent en-dash and em-dash TeX ligatures.
 | 
			
		||||
% A linebreak can occur after the dash in regular text (this is
 | 
			
		||||
% normal behaviour of "-" in TeX, it is not related to \kern\z@).
 | 
			
		||||
%
 | 
			
		||||
% Parsed-literals and inline literals also use the \sphinxhyphen
 | 
			
		||||
% but linebreaks there are prevented due to monospace font family.
 | 
			
		||||
% (xelatex needs a special addition, cf. sphinxlatexliterals.sty)
 | 
			
		||||
%
 | 
			
		||||
% Inside code-blocks, dashes are escaped via another macro, from
 | 
			
		||||
% Pygments latex output (search for \PYGZhy in sphinxlatexliterals.sty),
 | 
			
		||||
% and are configured to allow linebreaks despite the monospace font.
 | 
			
		||||
% (the #1 swallows the {} from \sphinxhyphen{} mark-up)
 | 
			
		||||
\protected\def\sphinxhyphen#1{-\kern\z@}
 | 
			
		||||
\protected\def\sphinxhyphennobreak#1{\mbox{-}}
 | 
			
		||||
% The {} from texescape mark-up is kept, else -- gives en-dash in PDF bookmark
 | 
			
		||||
\def\sphinxhyphenforbookmarks{-}
 | 
			
		||||
 | 
			
		||||
% For curly braces inside \index macro
 | 
			
		||||
\def\sphinxleftcurlybrace{\{}
 | 
			
		||||
\def\sphinxrightcurlybrace{\}}
 | 
			
		||||
 | 
			
		||||
% Declare Unicode characters used by linux tree command to pdflatex utf8/utf8x
 | 
			
		||||
\def\spx@bd#1#2{%
 | 
			
		||||
  \leavevmode
 | 
			
		||||
  \begingroup
 | 
			
		||||
  \ifx\spx@bd@height   \@undefined\def\spx@bd@height{\baselineskip}\fi
 | 
			
		||||
  \ifx\spx@bd@width    \@undefined\setbox0\hbox{0}\def\spx@bd@width{\wd0 }\fi
 | 
			
		||||
  \ifx\spx@bd@thickness\@undefined\def\spx@bd@thickness{.6\p@}\fi
 | 
			
		||||
  \ifx\spx@bd@lower    \@undefined\def\spx@bd@lower{\dp\strutbox}\fi
 | 
			
		||||
  \lower\spx@bd@lower#1{#2}%
 | 
			
		||||
  \endgroup
 | 
			
		||||
}%
 | 
			
		||||
\@namedef{sphinx@u2500}% BOX DRAWINGS LIGHT HORIZONTAL
 | 
			
		||||
  {\spx@bd{\vbox to\spx@bd@height}
 | 
			
		||||
          {\vss\hrule\@height\spx@bd@thickness
 | 
			
		||||
                     \@width\spx@bd@width\vss}}%
 | 
			
		||||
\@namedef{sphinx@u2502}% BOX DRAWINGS LIGHT VERTICAL
 | 
			
		||||
  {\spx@bd{\hb@xt@\spx@bd@width}
 | 
			
		||||
          {\hss\vrule\@height\spx@bd@height
 | 
			
		||||
                     \@width \spx@bd@thickness\hss}}%
 | 
			
		||||
\@namedef{sphinx@u2514}% BOX DRAWINGS LIGHT UP AND RIGHT
 | 
			
		||||
  {\spx@bd{\hb@xt@\spx@bd@width}
 | 
			
		||||
          {\hss\raise.5\spx@bd@height
 | 
			
		||||
           \hb@xt@\z@{\hss\vrule\@height.5\spx@bd@height
 | 
			
		||||
                                \@width \spx@bd@thickness\hss}%
 | 
			
		||||
           \vbox to\spx@bd@height{\vss\hrule\@height\spx@bd@thickness
 | 
			
		||||
                                            \@width.5\spx@bd@width\vss}}}%
 | 
			
		||||
\@namedef{sphinx@u251C}% BOX DRAWINGS LIGHT VERTICAL AND RIGHT
 | 
			
		||||
  {\spx@bd{\hb@xt@\spx@bd@width}
 | 
			
		||||
          {\hss
 | 
			
		||||
           \hb@xt@\z@{\hss\vrule\@height\spx@bd@height
 | 
			
		||||
                                \@width \spx@bd@thickness\hss}%
 | 
			
		||||
           \vbox to\spx@bd@height{\vss\hrule\@height\spx@bd@thickness
 | 
			
		||||
                                            \@width.5\spx@bd@width\vss}}}%
 | 
			
		||||
\protected\def\sphinxunichar#1{\@nameuse{sphinx@u#1}}%
 | 
			
		||||
 | 
			
		||||
% Tell TeX about pathological hyphenation cases:
 | 
			
		||||
\hyphenation{Base-HTTP-Re-quest-Hand-ler}
 | 
			
		||||
 | 
			
		||||
\endinput
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,481 @@
 | 
			
		|||
%% TABLES (WITH SUPPORT FOR MERGED CELLS OF GENERAL CONTENTS)
 | 
			
		||||
%
 | 
			
		||||
% change this info string if making any custom modification
 | 
			
		||||
\ProvidesFile{sphinxlatextables.sty}[2021/01/27 tables]%
 | 
			
		||||
 | 
			
		||||
% Provides support for this output mark-up from Sphinx latex writer
 | 
			
		||||
% and table templates:
 | 
			
		||||
%
 | 
			
		||||
% - the tabulary and longtable environments from the eponymous packages
 | 
			
		||||
% - the varwidth environment
 | 
			
		||||
% - the >{} etc mark-up possible in tabularcolumns is from array package
 | 
			
		||||
%     which is loaded by longtable and tabulary
 | 
			
		||||
% - \X, \Y, T column types; others (L, C, R, J) are from tabulary package
 | 
			
		||||
% - \sphinxaftertopcaption
 | 
			
		||||
% - \sphinxatlongtableend
 | 
			
		||||
% - \sphinxatlongtablestart
 | 
			
		||||
% - \sphinxattableend
 | 
			
		||||
% - \sphinxattablestart
 | 
			
		||||
% - \sphinxcapstartof
 | 
			
		||||
% - \sphinxcolwidth
 | 
			
		||||
% - \sphinxlongtablecapskipadjust
 | 
			
		||||
% - \sphinxmultirow
 | 
			
		||||
% - \sphinxstartmulticolumn
 | 
			
		||||
% - \sphinxstopmulticolumn
 | 
			
		||||
% - \sphinxtablestrut
 | 
			
		||||
% - \sphinxthecaptionisattop
 | 
			
		||||
% - \sphinxthelongtablecaptionisattop
 | 
			
		||||
%
 | 
			
		||||
% Executes \RequirePackage for:
 | 
			
		||||
%
 | 
			
		||||
% - tabulary
 | 
			
		||||
% - longtable
 | 
			
		||||
% - varwidth
 | 
			
		||||
%
 | 
			
		||||
% Extends tabulary and longtable via patches and custom macros to support
 | 
			
		||||
% merged cells possibly containing code-blocks in complex tables
 | 
			
		||||
 | 
			
		||||
\RequirePackage{tabulary}
 | 
			
		||||
% tabulary has a bug with its re-definition of \multicolumn in its first pass
 | 
			
		||||
% which is not \long. But now Sphinx does not use LaTeX's \multicolumn but its
 | 
			
		||||
% own macro. Hence we don't even need to patch tabulary. See
 | 
			
		||||
% sphinxpackagemulticell.sty
 | 
			
		||||
% X or S (Sphinx) may have meanings if some table package is loaded hence
 | 
			
		||||
% \X was chosen to avoid possibility of conflict
 | 
			
		||||
\newcolumntype{\X}[2]{p{\dimexpr
 | 
			
		||||
      (\linewidth-\arrayrulewidth)*#1/#2-\tw@\tabcolsep-\arrayrulewidth\relax}}
 | 
			
		||||
\newcolumntype{\Y}[1]{p{\dimexpr
 | 
			
		||||
      #1\dimexpr\linewidth-\arrayrulewidth\relax-\tw@\tabcolsep-\arrayrulewidth\relax}}
 | 
			
		||||
% using here T (for Tabulary) feels less of a problem than the X could be
 | 
			
		||||
\newcolumntype{T}{J}%
 | 
			
		||||
% For tables allowing pagebreaks
 | 
			
		||||
\RequirePackage{longtable}
 | 
			
		||||
% User interface to set-up whitespace before and after tables:
 | 
			
		||||
\newcommand*\sphinxtablepre {0pt}%
 | 
			
		||||
\newcommand*\sphinxtablepost{\medskipamount}%
 | 
			
		||||
% Space from caption baseline to top of table or frame of literal-block
 | 
			
		||||
\newcommand*\sphinxbelowcaptionspace{.5\sphinxbaselineskip}%
 | 
			
		||||
% as one can not use \baselineskip from inside longtable (it is zero there)
 | 
			
		||||
% we need \sphinxbaselineskip, which defaults to \baselineskip
 | 
			
		||||
\def\sphinxbaselineskip{\baselineskip}%
 | 
			
		||||
% The following is to ensure that, whether tabular(y) or longtable:
 | 
			
		||||
% - if a caption is on top of table:
 | 
			
		||||
%   a) the space between its last baseline and the top rule of table is
 | 
			
		||||
%      exactly \sphinxbelowcaptionspace
 | 
			
		||||
%   b) the space from last baseline of previous text to first baseline of
 | 
			
		||||
%      caption is exactly \parskip+\baselineskip+ height of a strut.
 | 
			
		||||
%   c) the caption text will wrap at width \LTcapwidth (4in)
 | 
			
		||||
% - make sure this works also if "caption" package is loaded by user
 | 
			
		||||
%   (with its width or margin option taking place of \LTcapwidth role)
 | 
			
		||||
% TODO: obtain same for caption of literal block: a) & c) DONE, b) TO BE DONE
 | 
			
		||||
%
 | 
			
		||||
% To modify space below such top caption, adjust \sphinxbelowcaptionspace
 | 
			
		||||
% To add or remove space above such top caption, adjust \sphinxtablepre:
 | 
			
		||||
%   notice that \abovecaptionskip, \belowcaptionskip, \LTpre are **ignored**
 | 
			
		||||
% A. Table with longtable
 | 
			
		||||
\def\sphinxatlongtablestart
 | 
			
		||||
   {\par
 | 
			
		||||
    \vskip\parskip
 | 
			
		||||
    \vskip\dimexpr\sphinxtablepre\relax % adjust vertical position
 | 
			
		||||
    \vbox{}% get correct baseline from above
 | 
			
		||||
    \LTpre\z@skip\LTpost\z@skip % set to zero longtable's own skips
 | 
			
		||||
    \edef\sphinxbaselineskip{\dimexpr\the\dimexpr\baselineskip\relax\relax}%
 | 
			
		||||
   }%
 | 
			
		||||
% Compatibility with caption package
 | 
			
		||||
\def\sphinxthelongtablecaptionisattop{%
 | 
			
		||||
    \spx@ifcaptionpackage{\noalign{\vskip-\belowcaptionskip}}{}%
 | 
			
		||||
}%
 | 
			
		||||
% Achieves exactly \sphinxbelowcaptionspace below longtable caption
 | 
			
		||||
\def\sphinxlongtablecapskipadjust
 | 
			
		||||
   {\dimexpr-\dp\strutbox
 | 
			
		||||
            -\spx@ifcaptionpackage{\abovecaptionskip}{\sphinxbaselineskip}%
 | 
			
		||||
            +\sphinxbelowcaptionspace\relax}%
 | 
			
		||||
\def\sphinxatlongtableend{\@nobreakfalse % latex3/latex2e#173
 | 
			
		||||
    \prevdepth\z@\vskip\sphinxtablepost\relax}%
 | 
			
		||||
% B. Table with tabular or tabulary
 | 
			
		||||
\def\sphinxattablestart{\par\vskip\dimexpr\sphinxtablepre\relax}%
 | 
			
		||||
\let\sphinxattableend\sphinxatlongtableend
 | 
			
		||||
% This is used by tabular and tabulary templates
 | 
			
		||||
\newcommand*\sphinxcapstartof[1]{%
 | 
			
		||||
   \vskip\parskip
 | 
			
		||||
   \vbox{}% force baselineskip for good positioning by capstart of hyperanchor
 | 
			
		||||
   % hyperref puts the anchor 6pt above this baseline; in case of caption
 | 
			
		||||
   % this baseline will be \ht\strutbox above first baseline of caption
 | 
			
		||||
   \def\@captype{#1}%
 | 
			
		||||
   \capstart
 | 
			
		||||
% move back vertically, as tabular (or its caption) will compensate
 | 
			
		||||
   \vskip-\baselineskip\vskip-\parskip
 | 
			
		||||
}%
 | 
			
		||||
\def\sphinxthecaptionisattop{% locate it after \sphinxcapstartof
 | 
			
		||||
    \spx@ifcaptionpackage
 | 
			
		||||
      {\caption@setposition{t}%
 | 
			
		||||
       \vskip\baselineskip\vskip\parskip % undo those from \sphinxcapstartof
 | 
			
		||||
       \vskip-\belowcaptionskip          % anticipate caption package skip
 | 
			
		||||
       % caption package uses a \vbox, not a \vtop, so "single line" case
 | 
			
		||||
       % gives different result from "multi-line" without this:
 | 
			
		||||
       \nointerlineskip
 | 
			
		||||
      }%
 | 
			
		||||
      {}%
 | 
			
		||||
}%
 | 
			
		||||
\def\sphinxthecaptionisatbottom{% (not finalized; for template usage)
 | 
			
		||||
    \spx@ifcaptionpackage{\caption@setposition{b}}{}%
 | 
			
		||||
}%
 | 
			
		||||
% The aim of \sphinxcaption is to apply to tabular(y) the maximal width
 | 
			
		||||
% of caption as done by longtable
 | 
			
		||||
\def\sphinxtablecapwidth{\LTcapwidth}%
 | 
			
		||||
\newcommand\sphinxcaption{\@dblarg\spx@caption}%
 | 
			
		||||
\long\def\spx@caption[#1]#2{%
 | 
			
		||||
   \noindent\hb@xt@\linewidth{\hss
 | 
			
		||||
      \vtop{\@tempdima\dimexpr\sphinxtablecapwidth\relax
 | 
			
		||||
% don't exceed linewidth for the caption width
 | 
			
		||||
            \ifdim\@tempdima>\linewidth\hsize\linewidth\else\hsize\@tempdima\fi
 | 
			
		||||
% longtable ignores \abovecaptionskip/\belowcaptionskip, so do the same here
 | 
			
		||||
            \abovecaptionskip\sphinxabovecaptionskip % \z@skip
 | 
			
		||||
            \belowcaptionskip\sphinxbelowcaptionskip % \z@skip
 | 
			
		||||
            \caption[{#1}]%
 | 
			
		||||
               {\strut\ignorespaces#2\ifhmode\unskip\@finalstrut\strutbox\fi}%
 | 
			
		||||
           }\hss}%
 | 
			
		||||
   \par\prevdepth\dp\strutbox
 | 
			
		||||
}%
 | 
			
		||||
\def\sphinxabovecaptionskip{\z@skip}% Do not use! Flagged for removal
 | 
			
		||||
\def\sphinxbelowcaptionskip{\z@skip}% Do not use! Flagged for removal
 | 
			
		||||
% This wrapper of \abovecaptionskip is used in sphinxVerbatim for top
 | 
			
		||||
% caption, and with another value in sphinxVerbatimintable
 | 
			
		||||
% TODO: To unify space above caption of a code-block with the one above
 | 
			
		||||
%       caption of a table/longtable, \abovecaptionskip must not be used
 | 
			
		||||
%       This auxiliary will get renamed and receive a different meaning
 | 
			
		||||
%       in future.
 | 
			
		||||
\def\spx@abovecaptionskip{\abovecaptionskip}%
 | 
			
		||||
% Achieve \sphinxbelowcaptionspace below a caption located above a tabular
 | 
			
		||||
% or a tabulary
 | 
			
		||||
\newcommand\sphinxaftertopcaption
 | 
			
		||||
{%
 | 
			
		||||
   \spx@ifcaptionpackage
 | 
			
		||||
     {\par\prevdepth\dp\strutbox\nobreak\vskip-\abovecaptionskip}{\nobreak}%
 | 
			
		||||
   \vskip\dimexpr\sphinxbelowcaptionspace\relax
 | 
			
		||||
   \vskip-\baselineskip\vskip-\parskip
 | 
			
		||||
}%
 | 
			
		||||
% varwidth is crucial for our handling of general contents in merged cells
 | 
			
		||||
\RequirePackage{varwidth}
 | 
			
		||||
% but addition of a compatibility patch with hyperref is needed
 | 
			
		||||
% (tested with varwidth v 0.92  Mar 2009)
 | 
			
		||||
\AtBeginDocument {%
 | 
			
		||||
    \let\@@vwid@Hy@raisedlink\Hy@raisedlink
 | 
			
		||||
    \long\def\@vwid@Hy@raisedlink#1{\@vwid@wrap{\@@vwid@Hy@raisedlink{#1}}}%
 | 
			
		||||
    \edef\@vwid@setup{%
 | 
			
		||||
      \let\noexpand\Hy@raisedlink\noexpand\@vwid@Hy@raisedlink % HYPERREF !
 | 
			
		||||
      \unexpanded\expandafter{\@vwid@setup}}%
 | 
			
		||||
}%
 | 
			
		||||
 | 
			
		||||
%%%%%%%%%%%%%%%%%%%%%
 | 
			
		||||
% --- MULTICOLUMN ---
 | 
			
		||||
% standard LaTeX's \multicolumn
 | 
			
		||||
% 1. does not allow verbatim contents,
 | 
			
		||||
% 2. interacts very poorly with tabulary.
 | 
			
		||||
%
 | 
			
		||||
% It is needed to write own macros for Sphinx: to allow code-blocks in merged
 | 
			
		||||
% cells rendered by tabular/longtable, and to allow multi-column cells with
 | 
			
		||||
% paragraphs to be taken into account sanely by tabulary algorithm for column
 | 
			
		||||
% widths.
 | 
			
		||||
%
 | 
			
		||||
% This requires quite a bit of hacking. First, in Sphinx, the multi-column
 | 
			
		||||
% contents will *always* be wrapped in a varwidth environment. The issue
 | 
			
		||||
% becomes to pass it the correct target width. We must trick tabulary into
 | 
			
		||||
% believing the multicolumn is simply separate columns, else tabulary does not
 | 
			
		||||
% incorporate the contents in its algorithm. But then we must clear the
 | 
			
		||||
% vertical rules...
 | 
			
		||||
%
 | 
			
		||||
% configuration of tabulary
 | 
			
		||||
\setlength{\tymin}{3\fontcharwd\font`0 }% minimal width of "squeezed" columns
 | 
			
		||||
\setlength{\tymax}{10000pt}% allow enough room for paragraphs to "compete"
 | 
			
		||||
% we need access to tabulary's final computed width. \@tempdima is too volatile
 | 
			
		||||
% to hope it has kept tabulary's value when \sphinxcolwidth needs it.
 | 
			
		||||
\newdimen\sphinx@TY@tablewidth
 | 
			
		||||
\def\tabulary{%
 | 
			
		||||
  \def\TY@final{\sphinx@TY@tablewidth\@tempdima\tabular}%
 | 
			
		||||
  \let\endTY@final\endtabular
 | 
			
		||||
  \TY@tabular}%
 | 
			
		||||
% next hack is needed only if user has set latex_use_latex_multicolumn to True:
 | 
			
		||||
% it fixes tabulary's bug with \multicolumn defined "short" in first pass. (if
 | 
			
		||||
% upstream tabulary adds a \long, our extra one causes no harm)
 | 
			
		||||
\def\sphinx@tempa #1\def\multicolumn#2#3#4#5#6#7#8#9\sphinx@tempa
 | 
			
		||||
   {\def\TY@tab{#1\long\def\multicolumn####1####2####3{\multispan####1\relax}#9}}%
 | 
			
		||||
\expandafter\sphinx@tempa\TY@tab\sphinx@tempa
 | 
			
		||||
%
 | 
			
		||||
% TN. 1: as \omit is never executed, Sphinx multicolumn does not need to worry
 | 
			
		||||
% like standard multicolumn about |l| vs l|. On the other hand it assumes
 | 
			
		||||
% columns are separated by a | ... (if not it will add extraneous
 | 
			
		||||
% \arrayrulewidth space for each column separation in its estimate of available
 | 
			
		||||
% width).
 | 
			
		||||
%
 | 
			
		||||
% TN. 1b: as Sphinx multicolumn uses neither \omit nor \span, it can not
 | 
			
		||||
% (easily) get rid of extra macros from >{...} or <{...} between columns. At
 | 
			
		||||
% least, it has been made compatible with colortbl's \columncolor.
 | 
			
		||||
%
 | 
			
		||||
% TN. 2: tabulary's second pass is handled like tabular/longtable's single
 | 
			
		||||
% pass, with the difference that we hacked \TY@final to set in
 | 
			
		||||
% \sphinx@TY@tablewidth the final target width as computed by tabulary. This is
 | 
			
		||||
% needed only to handle columns with a "horizontal" specifier: "p" type columns
 | 
			
		||||
% (inclusive of tabulary's LJRC) holds the target column width in the
 | 
			
		||||
% \linewidth dimension.
 | 
			
		||||
%
 | 
			
		||||
% TN. 3: use of \begin{sphinxmulticolumn}...\end{sphinxmulticolumn} mark-up
 | 
			
		||||
% would need some hacking around the fact that groups can not span across table
 | 
			
		||||
% cells (the code does inserts & tokens, see TN1b). It was decided to keep it
 | 
			
		||||
% simple with \sphinxstartmulticolumn...\sphinxstopmulticolumn.
 | 
			
		||||
%
 | 
			
		||||
% MEMO about nesting: if sphinxmulticolumn is encountered in a nested tabular
 | 
			
		||||
% inside a tabulary it will think to be at top level in the tabulary. But
 | 
			
		||||
% Sphinx generates no nested tables, and if some LaTeX macro uses internally a
 | 
			
		||||
% tabular this will not have a \sphinxstartmulticolumn within it!
 | 
			
		||||
%
 | 
			
		||||
\def\sphinxstartmulticolumn{%
 | 
			
		||||
    \ifx\equation$% $ tabulary's first pass
 | 
			
		||||
        \expandafter\sphinx@TYI@start@multicolumn
 | 
			
		||||
    \else % either not tabulary or tabulary's second pass
 | 
			
		||||
        \expandafter\sphinx@start@multicolumn
 | 
			
		||||
    \fi
 | 
			
		||||
}%
 | 
			
		||||
\def\sphinxstopmulticolumn{%
 | 
			
		||||
    \ifx\equation$% $ tabulary's first pass
 | 
			
		||||
        \expandafter\sphinx@TYI@stop@multicolumn
 | 
			
		||||
    \else % either not tabulary or tabulary's second pass
 | 
			
		||||
        \ignorespaces
 | 
			
		||||
    \fi
 | 
			
		||||
}%
 | 
			
		||||
\def\sphinx@TYI@start@multicolumn#1{%
 | 
			
		||||
    % use \gdef always to avoid stack space build up
 | 
			
		||||
    \gdef\sphinx@tempa{#1}\begingroup\setbox\z@\hbox\bgroup
 | 
			
		||||
}%
 | 
			
		||||
\def\sphinx@TYI@stop@multicolumn{\egroup % varwidth was used with \tymax
 | 
			
		||||
    \xdef\sphinx@tempb{\the\dimexpr\wd\z@/\sphinx@tempa}% per column width
 | 
			
		||||
    \endgroup
 | 
			
		||||
    \expandafter\sphinx@TYI@multispan\expandafter{\sphinx@tempa}%
 | 
			
		||||
}%
 | 
			
		||||
\def\sphinx@TYI@multispan #1{%
 | 
			
		||||
    \kern\sphinx@tempb\ignorespaces % the per column occupied width
 | 
			
		||||
    \ifnum#1>\@ne % repeat, taking into account subtleties of TeX's & ...
 | 
			
		||||
      \expandafter\sphinx@TYI@multispan@next\expandafter{\the\numexpr#1-\@ne\expandafter}%
 | 
			
		||||
    \fi
 | 
			
		||||
}%
 | 
			
		||||
\def\sphinx@TYI@multispan@next{&\relax\sphinx@TYI@multispan}%
 | 
			
		||||
%
 | 
			
		||||
% Now the branch handling either the second pass of tabulary or the single pass
 | 
			
		||||
% of tabular/longtable. This is the delicate part where we gather the
 | 
			
		||||
% dimensions from the p columns either set-up by tabulary or by user p column
 | 
			
		||||
% or Sphinx \X, \Y columns. The difficulty is that to get the said width, the
 | 
			
		||||
% template must be inserted (other hacks would be horribly complicated except
 | 
			
		||||
% if we rewrote crucial parts of LaTeX's \@array !) and we can not do
 | 
			
		||||
% \omit\span like standard \multicolumn's easy approach. Thus we must cancel
 | 
			
		||||
% the \vrule separators. Also, perhaps the column specifier is of the l, c, r
 | 
			
		||||
% type, then we attempt an ad hoc rescue to give varwidth a reasonable target
 | 
			
		||||
% width.
 | 
			
		||||
\def\sphinx@start@multicolumn#1{%
 | 
			
		||||
    \gdef\sphinx@multiwidth{0pt}\gdef\sphinx@tempa{#1}\sphinx@multispan{#1}%
 | 
			
		||||
}%
 | 
			
		||||
\def\sphinx@multispan #1{%
 | 
			
		||||
    \ifnum#1=\@ne\expandafter\sphinx@multispan@end
 | 
			
		||||
            \else\expandafter\sphinx@multispan@next
 | 
			
		||||
    \fi {#1}%
 | 
			
		||||
}%
 | 
			
		||||
\def\sphinx@multispan@next #1{%
 | 
			
		||||
    % trick to recognize L, C, R, J or p, m, b type columns
 | 
			
		||||
    \ifdim\baselineskip>\z@
 | 
			
		||||
       \gdef\sphinx@tempb{\linewidth}%
 | 
			
		||||
    \else
 | 
			
		||||
    % if in an l, r, c type column, try and hope for the best
 | 
			
		||||
       \xdef\sphinx@tempb{\the\dimexpr(\ifx\TY@final\@undefined\linewidth\else
 | 
			
		||||
            \sphinx@TY@tablewidth\fi-\arrayrulewidth)/\sphinx@tempa
 | 
			
		||||
            -\tw@\tabcolsep-\arrayrulewidth\relax}%
 | 
			
		||||
    \fi
 | 
			
		||||
    \noindent\kern\sphinx@tempb\relax
 | 
			
		||||
    \xdef\sphinx@multiwidth
 | 
			
		||||
           {\the\dimexpr\sphinx@multiwidth+\sphinx@tempb+\tw@\tabcolsep+\arrayrulewidth}%
 | 
			
		||||
    % hack the \vline and the colortbl macros
 | 
			
		||||
    \sphinx@hack@vline\sphinx@hack@CT&\relax
 | 
			
		||||
    % repeat
 | 
			
		||||
    \expandafter\sphinx@multispan\expandafter{\the\numexpr#1-\@ne}%
 | 
			
		||||
}%
 | 
			
		||||
% packages like colortbl add group levels, we need to "climb back up" to be
 | 
			
		||||
% able to hack the \vline and also the colortbl inserted tokens. This creates
 | 
			
		||||
% empty space whether or not the columns were | separated:
 | 
			
		||||
\def\sphinx@hack@vline{\ifnum\currentgrouptype=6\relax
 | 
			
		||||
    \kern\arrayrulewidth\arrayrulewidth\z@\else\aftergroup\sphinx@hack@vline\fi}%
 | 
			
		||||
\def\sphinx@hack@CT{\ifnum\currentgrouptype=6\relax
 | 
			
		||||
    \let\CT@setup\sphinx@CT@setup\else\aftergroup\sphinx@hack@CT\fi}%
 | 
			
		||||
% It turns out \CT@row@color is not expanded contrarily to \CT@column@color
 | 
			
		||||
% during LaTeX+colortbl preamble preparation, hence it would be possible for
 | 
			
		||||
% \sphinx@CT@setup to discard only the column color and choose to obey or not
 | 
			
		||||
% row color and cell color. It would even be possible to propagate cell color
 | 
			
		||||
% to row color for the duration of the Sphinx multicolumn... the (provisional?)
 | 
			
		||||
% choice has been made to cancel the colortbl colours for the multicolumn
 | 
			
		||||
% duration.
 | 
			
		||||
\def\sphinx@CT@setup #1\endgroup{\endgroup}% hack to remove colour commands
 | 
			
		||||
\def\sphinx@multispan@end#1{%
 | 
			
		||||
    % first, trace back our steps horizontally
 | 
			
		||||
    \noindent\kern-\dimexpr\sphinx@multiwidth\relax
 | 
			
		||||
    % and now we set the final computed width for the varwidth environment
 | 
			
		||||
    \ifdim\baselineskip>\z@
 | 
			
		||||
       \xdef\sphinx@multiwidth{\the\dimexpr\sphinx@multiwidth+\linewidth}%
 | 
			
		||||
    \else
 | 
			
		||||
       \xdef\sphinx@multiwidth{\the\dimexpr\sphinx@multiwidth+
 | 
			
		||||
         (\ifx\TY@final\@undefined\linewidth\else
 | 
			
		||||
          \sphinx@TY@tablewidth\fi-\arrayrulewidth)/\sphinx@tempa
 | 
			
		||||
          -\tw@\tabcolsep-\arrayrulewidth\relax}%
 | 
			
		||||
    \fi
 | 
			
		||||
    % we need to remove colour set-up also for last cell of the multi-column
 | 
			
		||||
    \aftergroup\sphinx@hack@CT
 | 
			
		||||
}%
 | 
			
		||||
\newcommand*\sphinxcolwidth[2]{%
 | 
			
		||||
  % this dimension will always be used for varwidth, and serves as maximum
 | 
			
		||||
  % width when cells are merged either via multirow or multicolumn or both,
 | 
			
		||||
  % as always their contents is wrapped in varwidth environment.
 | 
			
		||||
  \ifnum#1>\@ne % multi-column (and possibly also multi-row)
 | 
			
		||||
  % we wrote our own multicolumn code especially to handle that (and allow
 | 
			
		||||
  % verbatim contents)
 | 
			
		||||
   \ifx\equation$%$
 | 
			
		||||
       \tymax % first pass of tabulary (cf MEMO above regarding nesting)
 | 
			
		||||
   \else % the \@gobble thing is for compatibility with standard \multicolumn
 | 
			
		||||
       \sphinx@multiwidth\@gobble{#1/#2}%
 | 
			
		||||
   \fi
 | 
			
		||||
  \else % single column multirow
 | 
			
		||||
   \ifx\TY@final\@undefined % not a tabulary.
 | 
			
		||||
    \ifdim\baselineskip>\z@
 | 
			
		||||
        % in a p{..} type column, \linewidth is the target box width
 | 
			
		||||
        \linewidth
 | 
			
		||||
    \else
 | 
			
		||||
        % l, c, r columns. Do our best.
 | 
			
		||||
        \dimexpr(\linewidth-\arrayrulewidth)/#2-
 | 
			
		||||
                \tw@\tabcolsep-\arrayrulewidth\relax
 | 
			
		||||
    \fi
 | 
			
		||||
   \else % in tabulary
 | 
			
		||||
    \ifx\equation$%$% first pass
 | 
			
		||||
        \tymax % it is set to a big value so that paragraphs can express themselves
 | 
			
		||||
    \else
 | 
			
		||||
     % second pass.
 | 
			
		||||
     \ifdim\baselineskip>\z@
 | 
			
		||||
         \linewidth % in a L, R, C, J column or a p, \X, \Y ...
 | 
			
		||||
     \else
 | 
			
		||||
         % we have hacked \TY@final to put in \sphinx@TY@tablewidth the table width
 | 
			
		||||
         \dimexpr(\sphinx@TY@tablewidth-\arrayrulewidth)/#2-
 | 
			
		||||
                 \tw@\tabcolsep-\arrayrulewidth\relax
 | 
			
		||||
     \fi
 | 
			
		||||
    \fi
 | 
			
		||||
   \fi
 | 
			
		||||
  \fi
 | 
			
		||||
}%
 | 
			
		||||
% fallback default in case user has set latex_use_latex_multicolumn to True:
 | 
			
		||||
% \sphinxcolwidth will use this only inside LaTeX's standard \multicolumn
 | 
			
		||||
\def\sphinx@multiwidth #1#2{\dimexpr % #1 to gobble the \@gobble (!)
 | 
			
		||||
    (\ifx\TY@final\@undefined\linewidth\else\sphinx@TY@tablewidth\fi
 | 
			
		||||
     -\arrayrulewidth)*#2-\tw@\tabcolsep-\arrayrulewidth\relax}%
 | 
			
		||||
 | 
			
		||||
%%%%%%%%%%%%%%%%%%
 | 
			
		||||
% --- MULTIROW ---
 | 
			
		||||
% standard \multirow
 | 
			
		||||
% 1. does not allow verbatim contents,
 | 
			
		||||
% 2. does not allow blank lines in its argument,
 | 
			
		||||
% 3. its * specifier means to typeset "horizontally" which is very
 | 
			
		||||
%    bad for paragraph content. 2016 version has = specifier but it
 | 
			
		||||
%    must be used with p type columns only, else results are bad,
 | 
			
		||||
% 4. it requires manual intervention if the contents is too long to fit
 | 
			
		||||
%    in the asked-for number of rows.
 | 
			
		||||
% 5. colour panels (either from \rowcolor or \columncolor) will hide
 | 
			
		||||
%    the bottom part of multirow text, hence manual tuning is needed
 | 
			
		||||
%    to put the multirow insertion at the _bottom_.
 | 
			
		||||
%
 | 
			
		||||
% The Sphinx solution consists in always having contents wrapped
 | 
			
		||||
% in a varwidth environment so that it makes sense to estimate how many
 | 
			
		||||
% lines it will occupy, and then ensure by insertion of suitable struts
 | 
			
		||||
% that the table rows have the needed height. The needed mark-up is done
 | 
			
		||||
% by LaTeX writer, which has its own id for the merged cells.
 | 
			
		||||
%
 | 
			
		||||
% The colour issue is solved by clearing colour panels in all cells,
 | 
			
		||||
% whether or not the multirow is single-column or multi-column.
 | 
			
		||||
%
 | 
			
		||||
% In passing we obtain baseline alignements across rows (only if
 | 
			
		||||
% \arraystretch is 1, as LaTeX's does not obey \arraystretch in "p"
 | 
			
		||||
% multi-line contents, only first and last line...)
 | 
			
		||||
%
 | 
			
		||||
% TODO: examine the situation with \arraystretch > 1. The \extrarowheight
 | 
			
		||||
% is hopeless for multirow anyhow, it makes baseline alignment strictly
 | 
			
		||||
% impossible.
 | 
			
		||||
\newcommand\sphinxmultirow[2]{\begingroup
 | 
			
		||||
  % #1 = nb of spanned rows, #2 = Sphinx id of "cell", #3 = contents
 | 
			
		||||
  % but let's fetch #3 in a way allowing verbatim contents !
 | 
			
		||||
  \def\sphinx@nbofrows{#1}\def\sphinx@cellid{#2}%
 | 
			
		||||
  \afterassignment\sphinx@multirow\let\next=
 | 
			
		||||
}%
 | 
			
		||||
\def\sphinx@multirow {%
 | 
			
		||||
  \setbox\z@\hbox\bgroup\aftergroup\sphinx@@multirow\strut
 | 
			
		||||
}%
 | 
			
		||||
\def\sphinx@@multirow {%
 | 
			
		||||
  % The contents, which is a varwidth environment, has been captured in
 | 
			
		||||
  % \box0 (a \hbox).
 | 
			
		||||
  % We have with \sphinx@cellid an assigned unique id. The goal is to give
 | 
			
		||||
  % about the same height to all the involved rows.
 | 
			
		||||
  % For this Sphinx will insert a \sphinxtablestrut{cell_id} mark-up
 | 
			
		||||
  % in LaTeX file and the expansion of the latter will do the suitable thing.
 | 
			
		||||
  \dimen@\dp\z@
 | 
			
		||||
  \dimen\tw@\ht\@arstrutbox
 | 
			
		||||
  \advance\dimen@\dimen\tw@
 | 
			
		||||
  \advance\dimen\tw@\dp\@arstrutbox
 | 
			
		||||
  \count@=\dimen@       % type conversion dim -> int
 | 
			
		||||
  \count\tw@=\dimen\tw@
 | 
			
		||||
  \divide\count@\count\tw@ % TeX division truncates
 | 
			
		||||
  \advance\dimen@-\count@\dimen\tw@
 | 
			
		||||
  % 1300sp is about 0.02pt. For comparison a rule default width is 0.4pt.
 | 
			
		||||
  % (note that if \count@ holds 0, surely \dimen@>1300sp)
 | 
			
		||||
  \ifdim\dimen@>1300sp \advance\count@\@ne \fi
 | 
			
		||||
  % now \count@ holds the count L of needed "lines"
 | 
			
		||||
  % and \sphinx@nbofrows holds the number N of rows
 | 
			
		||||
  % we have L >= 1 and N >= 1
 | 
			
		||||
  % if L is a multiple of N, ... clear what to do !
 | 
			
		||||
  % else write L = qN + r, 1 <= r < N and we will
 | 
			
		||||
  % arrange for each row to have enough space for:
 | 
			
		||||
  %     q+1 "lines" in each of the first r rows
 | 
			
		||||
  %       q "lines" in each of the (N-r) bottom rows
 | 
			
		||||
  % for a total of (q+1) * r + q * (N-r) = q * N + r = L
 | 
			
		||||
  % It is possible that q == 0.
 | 
			
		||||
  \count\tw@\count@
 | 
			
		||||
  % the TeX division truncates
 | 
			
		||||
  \divide\count\tw@\sphinx@nbofrows\relax
 | 
			
		||||
  \count4\count\tw@ % q
 | 
			
		||||
  \multiply\count\tw@\sphinx@nbofrows\relax
 | 
			
		||||
  \advance\count@-\count\tw@ % r
 | 
			
		||||
  \expandafter\xdef\csname sphinx@tablestrut_\sphinx@cellid\endcsname
 | 
			
		||||
     {\noexpand\sphinx@tablestrut{\the\count4}{\the\count@}{\sphinx@cellid}}%
 | 
			
		||||
  \dp\z@\z@
 | 
			
		||||
  % this will use the real height if it is >\ht\@arstrutbox
 | 
			
		||||
  \sphinxtablestrut{\sphinx@cellid}\box\z@
 | 
			
		||||
  \endgroup % group was opened in \sphinxmultirow
 | 
			
		||||
}%
 | 
			
		||||
\newcommand*\sphinxtablestrut[1]{%
 | 
			
		||||
  % #1 is a "cell_id", i.e. the id of a merged group of table cells
 | 
			
		||||
  \csname sphinx@tablestrut_#1\endcsname
 | 
			
		||||
}%
 | 
			
		||||
% LaTeX typesets the table row by row, hence each execution can do
 | 
			
		||||
% an update for the next row.
 | 
			
		||||
\newcommand*\sphinx@tablestrut[3]{\begingroup
 | 
			
		||||
  % #1 = q, #2 = (initially) r, #3 = cell_id, q+1 lines in first r rows
 | 
			
		||||
  % if #2 = 0, create space for max(q,1) table lines
 | 
			
		||||
  % if #2 > 0, create space for q+1 lines and decrement #2
 | 
			
		||||
  \leavevmode
 | 
			
		||||
  \count@#1\relax
 | 
			
		||||
  \ifnum#2=\z@
 | 
			
		||||
    \ifnum\count@=\z@\count@\@ne\fi
 | 
			
		||||
  \else
 | 
			
		||||
    % next row will be with a #2 decremented by one
 | 
			
		||||
    \expandafter\xdef\csname sphinx@tablestrut_#3\endcsname
 | 
			
		||||
      {\noexpand\sphinx@tablestrut{#1}{\the\numexpr#2-\@ne}{#3}}%
 | 
			
		||||
   \advance\count@\@ne
 | 
			
		||||
  \fi
 | 
			
		||||
  \vrule\@height\ht\@arstrutbox
 | 
			
		||||
        \@depth\dimexpr\count@\ht\@arstrutbox+\count@\dp\@arstrutbox-\ht\@arstrutbox\relax
 | 
			
		||||
        \@width\z@
 | 
			
		||||
  \endgroup
 | 
			
		||||
  % we need this to avoid colour panels hiding bottom parts of multirow text
 | 
			
		||||
  \sphinx@hack@CT
 | 
			
		||||
}%
 | 
			
		||||
 | 
			
		||||
\endinput
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,128 @@
 | 
			
		|||
%
 | 
			
		||||
% sphinxmanual.cls for Sphinx (https://www.sphinx-doc.org/)
 | 
			
		||||
%
 | 
			
		||||
 | 
			
		||||
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
 | 
			
		||||
\ProvidesClass{sphinxmanual}[2019/12/01 v2.3.0 Document class (Sphinx manual)]
 | 
			
		||||
 | 
			
		||||
% chapters starting at odd pages (overridden by 'openany' document option)
 | 
			
		||||
\PassOptionsToClass{openright}{\sphinxdocclass}
 | 
			
		||||
 | 
			
		||||
% 'oneside' option overriding the 'twoside' default
 | 
			
		||||
\newif\if@oneside
 | 
			
		||||
\DeclareOption{oneside}{\@onesidetrue}
 | 
			
		||||
% Pass remaining document options to the parent class.
 | 
			
		||||
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\sphinxdocclass}}
 | 
			
		||||
\ProcessOptions\relax
 | 
			
		||||
 | 
			
		||||
% Defaults two-side document
 | 
			
		||||
\if@oneside
 | 
			
		||||
% nothing to do (oneside is the default)
 | 
			
		||||
\else
 | 
			
		||||
\PassOptionsToClass{twoside}{\sphinxdocclass}
 | 
			
		||||
\fi
 | 
			
		||||
 | 
			
		||||
\LoadClass{\sphinxdocclass}
 | 
			
		||||
 | 
			
		||||
% Set some sane defaults for section numbering depth and TOC depth.  You can
 | 
			
		||||
% reset these counters in your preamble.
 | 
			
		||||
%
 | 
			
		||||
\setcounter{secnumdepth}{2}
 | 
			
		||||
\setcounter{tocdepth}{1}
 | 
			
		||||
 | 
			
		||||
% Adapt \and command to the flushright context of \sphinxmaketitle, to
 | 
			
		||||
% avoid ragged line endings if author names do not fit all on one single line
 | 
			
		||||
\DeclareRobustCommand{\and}{%
 | 
			
		||||
    \end{tabular}\kern-\tabcolsep
 | 
			
		||||
    \allowbreak
 | 
			
		||||
    \hskip\dimexpr1em+\tabcolsep\@plus.17fil\begin{tabular}[t]{c}%
 | 
			
		||||
}%
 | 
			
		||||
% If it is desired that each author name be on its own line, use in preamble:
 | 
			
		||||
%\DeclareRobustCommand{\and}{%
 | 
			
		||||
%   \end{tabular}\kern-\tabcolsep\\\begin{tabular}[t]{c}%
 | 
			
		||||
%}%
 | 
			
		||||
% Change the title page to look a bit better, and fit in with the fncychap
 | 
			
		||||
% ``Bjarne'' style a bit better.
 | 
			
		||||
%
 | 
			
		||||
\newcommand{\sphinxmaketitle}{%
 | 
			
		||||
  \let\sphinxrestorepageanchorsetting\relax
 | 
			
		||||
  \ifHy@pageanchor\def\sphinxrestorepageanchorsetting{\Hy@pageanchortrue}\fi
 | 
			
		||||
  \hypersetup{pageanchor=false}% avoid duplicate destination warnings
 | 
			
		||||
  \begin{titlepage}%
 | 
			
		||||
    \let\footnotesize\small
 | 
			
		||||
    \let\footnoterule\relax
 | 
			
		||||
    \noindent\rule{\textwidth}{1pt}\par
 | 
			
		||||
      \begingroup % for PDF information dictionary
 | 
			
		||||
       \def\endgraf{ }\def\and{\& }%
 | 
			
		||||
       \pdfstringdefDisableCommands{\def\\{, }}% overwrite hyperref setup
 | 
			
		||||
       \hypersetup{pdfauthor={\@author}, pdftitle={\@title}}%
 | 
			
		||||
      \endgroup
 | 
			
		||||
    \begin{flushright}%
 | 
			
		||||
      \sphinxlogo
 | 
			
		||||
      \py@HeaderFamily
 | 
			
		||||
      {\Huge \@title \par}
 | 
			
		||||
      {\itshape\LARGE \py@release\releaseinfo \par}
 | 
			
		||||
      \vfill
 | 
			
		||||
      {\LARGE
 | 
			
		||||
        \begin{tabular}[t]{c}
 | 
			
		||||
          \@author
 | 
			
		||||
        \end{tabular}\kern-\tabcolsep
 | 
			
		||||
        \par}
 | 
			
		||||
      \vfill\vfill
 | 
			
		||||
      {\large
 | 
			
		||||
       \@date \par
 | 
			
		||||
       \vfill
 | 
			
		||||
       \py@authoraddress \par
 | 
			
		||||
      }%
 | 
			
		||||
    \end{flushright}%\par
 | 
			
		||||
    \@thanks
 | 
			
		||||
  \end{titlepage}%
 | 
			
		||||
  \setcounter{footnote}{0}%
 | 
			
		||||
  \let\thanks\relax\let\maketitle\relax
 | 
			
		||||
  %\gdef\@thanks{}\gdef\@author{}\gdef\@title{}
 | 
			
		||||
  \clearpage
 | 
			
		||||
  \ifdefined\sphinxbackoftitlepage\sphinxbackoftitlepage\fi
 | 
			
		||||
  \if@openright\cleardoublepage\else\clearpage\fi
 | 
			
		||||
  \sphinxrestorepageanchorsetting
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
\newcommand{\sphinxtableofcontents}{%
 | 
			
		||||
  \pagenumbering{roman}%
 | 
			
		||||
  \begingroup
 | 
			
		||||
    \parskip \z@skip
 | 
			
		||||
    \sphinxtableofcontentshook
 | 
			
		||||
    \tableofcontents
 | 
			
		||||
  \endgroup
 | 
			
		||||
  % before resetting page counter, let's do the right thing.
 | 
			
		||||
  \if@openright\cleardoublepage\else\clearpage\fi
 | 
			
		||||
  \pagenumbering{arabic}%
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
% This is needed to get the width of the section # area wide enough in the
 | 
			
		||||
% library reference.  Doing it here keeps it the same for all the manuals.
 | 
			
		||||
%
 | 
			
		||||
\newcommand{\sphinxtableofcontentshook}{%
 | 
			
		||||
  \renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.6em}}%
 | 
			
		||||
  \renewcommand*\l@subsection{\@dottedtocline{2}{4.1em}{3.5em}}%
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
% Fix the bibliography environment to add an entry to the Table of
 | 
			
		||||
% Contents.
 | 
			
		||||
% For a report document class this environment is a chapter.
 | 
			
		||||
%
 | 
			
		||||
\newenvironment{sphinxthebibliography}[1]{%
 | 
			
		||||
  \if@openright\cleardoublepage\else\clearpage\fi
 | 
			
		||||
  % \phantomsection % not needed here since TeXLive 2010's hyperref
 | 
			
		||||
  \begin{thebibliography}{#1}%
 | 
			
		||||
  \addcontentsline{toc}{chapter}{\bibname}}{\end{thebibliography}}
 | 
			
		||||
 | 
			
		||||
% Same for the indices.
 | 
			
		||||
% The memoir class already does this, so we don't duplicate it in that case.
 | 
			
		||||
%
 | 
			
		||||
\@ifclassloaded{memoir}
 | 
			
		||||
 {\newenvironment{sphinxtheindex}{\begin{theindex}}{\end{theindex}}}
 | 
			
		||||
 {\newenvironment{sphinxtheindex}{%
 | 
			
		||||
    \if@openright\cleardoublepage\else\clearpage\fi
 | 
			
		||||
    \phantomsection % needed as no chapter, section, ... created
 | 
			
		||||
    \begin{theindex}%
 | 
			
		||||
    \addcontentsline{toc}{chapter}{\indexname}}{\end{theindex}}}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
%
 | 
			
		||||
% sphinxmessages.sty
 | 
			
		||||
%
 | 
			
		||||
% message resources for Sphinx
 | 
			
		||||
%
 | 
			
		||||
\ProvidesPackage{sphinxmessages}[2019/01/04 v2.0 Localized LaTeX macros (Sphinx team)]
 | 
			
		||||
 | 
			
		||||
\renewcommand{\literalblockcontinuedname}{continued from previous page}
 | 
			
		||||
\renewcommand{\literalblockcontinuesname}{continues on next page}
 | 
			
		||||
\renewcommand{\sphinxnonalphabeticalgroupname}{Non\sphinxhyphen{}alphabetical}
 | 
			
		||||
\renewcommand{\sphinxsymbolsname}{Symbols}
 | 
			
		||||
\renewcommand{\sphinxnumbersname}{Numbers}
 | 
			
		||||
\def\pageautorefname{page}
 | 
			
		||||
 | 
			
		||||
\addto\captionsenglish{\renewcommand{\figurename}{Fig.\@{} }}
 | 
			
		||||
\def\fnum@figure{\figurename\thefigure{}}
 | 
			
		||||
 | 
			
		||||
\addto\captionsenglish{\renewcommand{\tablename}{Table }}
 | 
			
		||||
\def\fnum@table{\tablename\thetable{}}
 | 
			
		||||
 | 
			
		||||
\addto\captionsenglish{\renewcommand{\literalblockname}{Listing}}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,54 @@
 | 
			
		|||
%% OPTIONS FOR GEOMETRY
 | 
			
		||||
%
 | 
			
		||||
% change this info string if making any custom modification
 | 
			
		||||
\ProvidesFile{sphinxoptionsgeometry.sty}[2021/01/27 geometry]
 | 
			
		||||
 | 
			
		||||
% geometry
 | 
			
		||||
\ifx\kanjiskip\@undefined
 | 
			
		||||
  \PassOptionsToPackage{%
 | 
			
		||||
     hmargin={\unexpanded{\spx@opt@hmargin}},%
 | 
			
		||||
     vmargin={\unexpanded{\spx@opt@vmargin}},%
 | 
			
		||||
     marginpar=\unexpanded{\spx@opt@marginpar}}
 | 
			
		||||
  {geometry}
 | 
			
		||||
\else
 | 
			
		||||
 % set text width for Japanese documents to be integer multiple of 1zw
 | 
			
		||||
 % and text height to be integer multiple of \baselineskip
 | 
			
		||||
 % the execution is delayed to \sphinxsetup then geometry.sty
 | 
			
		||||
 \normalsize\normalfont
 | 
			
		||||
 \newcommand*\sphinxtextwidthja[1]{%
 | 
			
		||||
    \if@twocolumn\tw@\fi
 | 
			
		||||
    \dimexpr
 | 
			
		||||
       \numexpr\dimexpr\paperwidth-\tw@\dimexpr#1\relax\relax/
 | 
			
		||||
               \dimexpr\if@twocolumn\tw@\else\@ne\fi zw\relax
 | 
			
		||||
    zw\relax}%
 | 
			
		||||
 \newcommand*\sphinxmarginparwidthja[1]{%
 | 
			
		||||
    \dimexpr\numexpr\dimexpr#1\relax/\dimexpr1zw\relax zw\relax}%
 | 
			
		||||
 \newcommand*\sphinxtextlinesja[1]{%
 | 
			
		||||
    \numexpr\@ne+\dimexpr\paperheight-\topskip-\tw@\dimexpr#1\relax\relax/
 | 
			
		||||
                 \baselineskip\relax}%
 | 
			
		||||
 \ifx\@jsc@uplatextrue\@undefined\else
 | 
			
		||||
 % the way we found in order for the papersize special written by
 | 
			
		||||
 % geometry in the dvi file to be correct in case of jsbook class
 | 
			
		||||
   \ifnum\mag=\@m\else % do nothing special if nomag class option or 10pt
 | 
			
		||||
     \PassOptionsToPackage{truedimen}{geometry}%
 | 
			
		||||
   \fi
 | 
			
		||||
 \fi
 | 
			
		||||
 \PassOptionsToPackage{%
 | 
			
		||||
    hmarginratio={1:1},%
 | 
			
		||||
    textwidth=\unexpanded{\sphinxtextwidthja{\spx@opt@hmargin}},%
 | 
			
		||||
    vmarginratio={1:1},%
 | 
			
		||||
    lines=\unexpanded{\sphinxtextlinesja{\spx@opt@vmargin}},%
 | 
			
		||||
    marginpar=\unexpanded{\sphinxmarginparwidthja{\spx@opt@marginpar}},%
 | 
			
		||||
    footskip=2\baselineskip,%
 | 
			
		||||
  }{geometry}%
 | 
			
		||||
 \AtBeginDocument
 | 
			
		||||
 {% update a dimension used by the jsclasses
 | 
			
		||||
  \ifx\@jsc@uplatextrue\@undefined\else\fullwidth\textwidth\fi
 | 
			
		||||
  % for some reason, jreport normalizes all dimensions with \@settopoint
 | 
			
		||||
  \@ifclassloaded{jreport}
 | 
			
		||||
    {\@settopoint\textwidth\@settopoint\textheight\@settopoint\marginparwidth}
 | 
			
		||||
    {}% <-- "false" clause of \@ifclassloaded
 | 
			
		||||
  }%
 | 
			
		||||
\fi
 | 
			
		||||
 | 
			
		||||
\endinput
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,35 @@
 | 
			
		|||
%% Bookmarks and hyperlinks
 | 
			
		||||
%
 | 
			
		||||
% change this info string if making any custom modification
 | 
			
		||||
\ProvidesFile{sphinxoptionshyperref.sty}[2021/01/27 hyperref]
 | 
			
		||||
 | 
			
		||||
% to make pdf with correct encoded bookmarks in Japanese
 | 
			
		||||
% this should precede the hyperref package
 | 
			
		||||
\ifx\kanjiskip\@undefined
 | 
			
		||||
% for non-Japanese: make sure bookmarks are ok also with lualatex
 | 
			
		||||
  \PassOptionsToPackage{pdfencoding=unicode}{hyperref}
 | 
			
		||||
\else
 | 
			
		||||
  \RequirePackage{atbegshi}
 | 
			
		||||
  \ifx\ucs\@undefined
 | 
			
		||||
    \ifnum 42146=\euc"A4A2
 | 
			
		||||
      \AtBeginShipoutFirst{\special{pdf:tounicode EUC-UCS2}}
 | 
			
		||||
    \else
 | 
			
		||||
      \AtBeginShipoutFirst{\special{pdf:tounicode 90ms-RKSJ-UCS2}}
 | 
			
		||||
    \fi
 | 
			
		||||
  \else
 | 
			
		||||
    \AtBeginShipoutFirst{\special{pdf:tounicode UTF8-UCS2}}
 | 
			
		||||
  \fi
 | 
			
		||||
\fi
 | 
			
		||||
 | 
			
		||||
\ifx\@jsc@uplatextrue\@undefined\else
 | 
			
		||||
  \PassOptionsToPackage{setpagesize=false}{hyperref}
 | 
			
		||||
\fi
 | 
			
		||||
 | 
			
		||||
% These options can be overridden inside  'hyperref' key
 | 
			
		||||
% or by later use of \hypersetup.
 | 
			
		||||
\PassOptionsToPackage{colorlinks,breaklinks,%
 | 
			
		||||
 linkcolor=InnerLinkColor,filecolor=OuterLinkColor,%
 | 
			
		||||
 menucolor=OuterLinkColor,urlcolor=OuterLinkColor,%
 | 
			
		||||
 citecolor=InnerLinkColor}{hyperref}
 | 
			
		||||
 | 
			
		||||
\endinput
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,55 @@
 | 
			
		|||
%% CYRILLIC IN NON-CYRILLIC DOCUMENTS (pdflatex only)
 | 
			
		||||
%
 | 
			
		||||
% refs: https://tex.stackexchange.com/q/460271/
 | 
			
		||||
\ProvidesPackage{sphinxpackagecyrillic}%
 | 
			
		||||
  [2018/11/21 v2.0 support for Cyrillic in non-Cyrillic documents]
 | 
			
		||||
\RequirePackage{kvoptions}
 | 
			
		||||
\SetupKeyvalOptions{prefix=spx@cyropt@} % use \spx@cyropt@ prefix
 | 
			
		||||
\DeclareBoolOption[false]{Xtwo}
 | 
			
		||||
\DeclareBoolOption[false]{TtwoA}
 | 
			
		||||
\DeclareDefaultOption{\@unknownoptionerror}
 | 
			
		||||
\ProcessLocalKeyvalOptions* % ignore class options
 | 
			
		||||
 | 
			
		||||
\ifspx@cyropt@Xtwo
 | 
			
		||||
% original code by tex.sx user egreg (updated 2019/10/28):
 | 
			
		||||
%   https://tex.stackexchange.com/a/460325/
 | 
			
		||||
% 159 Cyrillic glyphs as available in X2 TeX 8bit font encoding
 | 
			
		||||
% This assumes inputenc loaded with utf8 option, or LaTeX release
 | 
			
		||||
% as recent as 2018/04/01 which does it automatically.
 | 
			
		||||
  \@tfor\next:=%
 | 
			
		||||
    {Ё}{Ђ}{Є}{Ѕ}{І}{Ј}{Љ}{Њ}{Ћ}{Ў}{Џ}{А}{Б}{В}{Г}{Д}{Е}{Ж}{З}{И}{Й}%
 | 
			
		||||
    {К}{Л}{М}{Н}{О}{П}{Р}{С}{Т}{У}{Ф}{Х}{Ц}{Ч}{Ш}{Щ}{Ъ}{Ы}{Ь}{Э}{Ю}%
 | 
			
		||||
    {Я}{а}{б}{в}{г}{д}{е}{ж}{з}{и}{й}{к}{л}{м}{н}{о}{п}{р}{с}{т}{у}%
 | 
			
		||||
    {ф}{х}{ц}{ч}{ш}{щ}{ъ}{ы}{ь}{э}{ю}{я}{ё}{ђ}{є}{ѕ}{і}{ј}{љ}{њ}{ћ}%
 | 
			
		||||
    {ў}{џ}{Ѣ}{ѣ}{Ѫ}{ѫ}{Ѵ}{ѵ}{Ґ}{ґ}{Ғ}{ғ}{Ҕ}{ҕ}{Җ}{җ}{Ҙ}{ҙ}{Қ}{қ}{Ҝ}{ҝ}%
 | 
			
		||||
    {Ҟ}{ҟ}{Ҡ}{ҡ}{Ң}{ң}{Ҥ}{ҥ}{Ҧ}{ҧ}{Ҩ}{ҩ}{Ҫ}{ҫ}{Ҭ}{ҭ}{Ү}{ү}{Ұ}{ұ}{Ҳ}{ҳ}%
 | 
			
		||||
    {Ҵ}{ҵ}{Ҷ}{ҷ}{Ҹ}{ҹ}{Һ}{һ}{Ҽ}{ҽ}{Ҿ}{ҿ}{Ӏ}{Ӄ}{ӄ}{Ӆ}{ӆ}{Ӈ}{ӈ}{Ӌ}{ӌ}%
 | 
			
		||||
    {Ӎ}{ӎ}{Ӕ}{ӕ}{Ә}{ә}{Ӡ}{ӡ}{Ө}{ө}\do
 | 
			
		||||
  {%
 | 
			
		||||
    \begingroup\def\IeC{\protect\DeclareTextSymbolDefault}%
 | 
			
		||||
    \protected@edef\@temp{\endgroup
 | 
			
		||||
    \@ifl@t@r{\fmtversion}{2019/10/01}{\csname u8:\next\endcsname}{\next}}%
 | 
			
		||||
    \@temp{X2}%
 | 
			
		||||
  }%
 | 
			
		||||
\else
 | 
			
		||||
\ifspx@cyropt@TtwoA
 | 
			
		||||
% original code by tex.sx user jfbu:
 | 
			
		||||
%   https://tex.stackexchange.com/a/460305/
 | 
			
		||||
% 63*2+1=127 Cyrillic glyphs as found in T2A 8bit TeX font-encoding
 | 
			
		||||
  \@tfor\@tempa:=%
 | 
			
		||||
    {ae}{a}{b}{chrdsc}{chvcrs}{ch}{c}{dje}{dze}{dzhe}{d}{erev}{ery}{e}%
 | 
			
		||||
    {f}{ghcrs}{gup}{g}{hdsc}{hrdsn}{h}{ie}{ii}{ishrt}{i}{je}%
 | 
			
		||||
    {kbeak}{kdsc}{kvcrs}{k}{lje}{l}{m}{ndsc}{ng}{nje}{n}{otld}{o}{p}{r}%
 | 
			
		||||
    {schwa}{sdsc}{sftsn}{shch}{shha}{sh}{s}{tshe}{t}{ushrt}{u}{v}%
 | 
			
		||||
    {ya}{yhcrs}{yi}{yo}{yu}{y}{zdsc}{zhdsc}{zh}{z}\do
 | 
			
		||||
  {%
 | 
			
		||||
    \expandafter\DeclareTextSymbolDefault\expandafter
 | 
			
		||||
               {\csname cyr\@tempa\endcsname}{T2A}%
 | 
			
		||||
    \expandafter\uppercase\expandafter{\expandafter
 | 
			
		||||
                 \def\expandafter\@tempa\expandafter{\@tempa}}%
 | 
			
		||||
    \expandafter\DeclareTextSymbolDefault\expandafter
 | 
			
		||||
      {\csname CYR\@tempa\endcsname}{T2A}%
 | 
			
		||||
  }%
 | 
			
		||||
  \DeclareTextSymbolDefault{\CYRpalochka}{T2A}%
 | 
			
		||||
\fi\fi
 | 
			
		||||
\endinput
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,396 @@
 | 
			
		|||
\NeedsTeXFormat{LaTeX2e}
 | 
			
		||||
\ProvidesPackage{sphinxpackagefootnote}%
 | 
			
		||||
 [2021/02/04 v1.1d footnotehyper adapted to sphinx (Sphinx team)]
 | 
			
		||||
% Provides support for this output mark-up from Sphinx latex writer:
 | 
			
		||||
% - footnote environment
 | 
			
		||||
% - savenotes environment (table templates)
 | 
			
		||||
% - \sphinxfootnotemark
 | 
			
		||||
%
 | 
			
		||||
%%
 | 
			
		||||
%% Package: sphinxpackagefootnote
 | 
			
		||||
%% Version: based on footnotehyper.sty 2021/02/04 v1.1d
 | 
			
		||||
%% as available at https://www.ctan.org/pkg/footnotehyper
 | 
			
		||||
%% License: the one applying to Sphinx
 | 
			
		||||
%%
 | 
			
		||||
%% Refer to the PDF documentation  at https://www.ctan.org/pkg/footnotehyper for
 | 
			
		||||
%% the code comments.
 | 
			
		||||
%%
 | 
			
		||||
%% Differences:
 | 
			
		||||
%% 1. a partial tabulary compatibility layer added (enough for Sphinx mark-up),
 | 
			
		||||
%% 2. use of \spx@opt@BeforeFootnote from sphinx.sty,
 | 
			
		||||
%% 3. use of \sphinxunactivateextrasandspace from sphinx.sty,
 | 
			
		||||
%% 4. macro definition \sphinxfootnotemark,
 | 
			
		||||
%% 5. macro definition \sphinxlongtablepatch
 | 
			
		||||
%% 6. replaced some \undefined by \@undefined
 | 
			
		||||
\newif\iffootnotehyperparse\footnotehyperparsetrue
 | 
			
		||||
\DeclareOption*{\PackageWarning{sphinxpackagefootnote}{Option `\CurrentOption' is unknown}}%
 | 
			
		||||
\ProcessOptions\relax
 | 
			
		||||
\newbox\FNH@notes
 | 
			
		||||
\newtoks\FNH@toks % 1.1c
 | 
			
		||||
\newdimen\FNH@width
 | 
			
		||||
\let\FNH@colwidth\columnwidth
 | 
			
		||||
\newif\ifFNH@savingnotes
 | 
			
		||||
\AtBeginDocument {%
 | 
			
		||||
    \let\FNH@latex@footnote    \footnote
 | 
			
		||||
    \let\FNH@latex@footnotetext\footnotetext
 | 
			
		||||
    \let\FNH@H@@footnotetext   \@footnotetext
 | 
			
		||||
    \let\FNH@H@@mpfootnotetext \@mpfootnotetext
 | 
			
		||||
    \newenvironment{savenotes}
 | 
			
		||||
        {\FNH@savenotes\ignorespaces}{\FNH@spewnotes\ignorespacesafterend}%
 | 
			
		||||
    \let\spewnotes      \FNH@spewnotes
 | 
			
		||||
    \let\footnote       \FNH@footnote
 | 
			
		||||
    \let\footnotetext   \FNH@footnotetext
 | 
			
		||||
    \let\endfootnote    \FNH@endfntext
 | 
			
		||||
    \let\endfootnotetext\FNH@endfntext
 | 
			
		||||
    \@ifpackageloaded{hyperref}
 | 
			
		||||
     {\ifHy@hyperfootnotes
 | 
			
		||||
         \let\FNH@H@@footnotetext\H@@footnotetext
 | 
			
		||||
         \let\FNH@H@@mpfootnotetext\H@@mpfootnotetext
 | 
			
		||||
      \else
 | 
			
		||||
         \let\FNH@hyper@fntext\FNH@nohyp@fntext
 | 
			
		||||
      \fi}%
 | 
			
		||||
     {\let\FNH@hyper@fntext\FNH@nohyp@fntext}%
 | 
			
		||||
}%
 | 
			
		||||
\def\FNH@hyper@fntext{\FNH@fntext\FNH@hyper@fntext@i}%
 | 
			
		||||
\def\FNH@nohyp@fntext{\FNH@fntext\FNH@nohyp@fntext@i}%
 | 
			
		||||
\def\FNH@fntext #1{%
 | 
			
		||||
  \ifx\ifmeasuring@\@undefined
 | 
			
		||||
    \expandafter\@secondoftwo\else\expandafter\@firstofone\fi
 | 
			
		||||
% these two lines modified for Sphinx (tabulary compatibility):
 | 
			
		||||
    {\ifmeasuring@\expandafter\@gobbletwo\else\expandafter\@firstofone\fi}%
 | 
			
		||||
    {\ifx\equation$\expandafter\@gobbletwo\fi #1}%$
 | 
			
		||||
}%
 | 
			
		||||
\long\def\FNH@hyper@fntext@i#1{%
 | 
			
		||||
  \global\setbox\FNH@notes\vbox
 | 
			
		||||
  {\unvbox\FNH@notes
 | 
			
		||||
   \FNH@startnote
 | 
			
		||||
   \@makefntext
 | 
			
		||||
    {\rule\z@\footnotesep\ignorespaces
 | 
			
		||||
     \ifHy@nesting\expandafter\ltx@firstoftwo
 | 
			
		||||
             \else\expandafter\ltx@secondoftwo
 | 
			
		||||
     \fi
 | 
			
		||||
     {\expandafter\hyper@@anchor\expandafter{\Hy@footnote@currentHref}{#1}}%
 | 
			
		||||
     {\Hy@raisedlink
 | 
			
		||||
       {\expandafter\hyper@@anchor\expandafter{\Hy@footnote@currentHref}%
 | 
			
		||||
       {\relax}}%
 | 
			
		||||
      \let\@currentHref\Hy@footnote@currentHref
 | 
			
		||||
      \let\@currentlabelname\@empty
 | 
			
		||||
      #1}%
 | 
			
		||||
     \@finalstrut\strutbox
 | 
			
		||||
    }%
 | 
			
		||||
   \FNH@endnote
 | 
			
		||||
  }%
 | 
			
		||||
}%
 | 
			
		||||
\long\def\FNH@nohyp@fntext@i#1{%
 | 
			
		||||
  \global\setbox\FNH@notes\vbox
 | 
			
		||||
  {\unvbox\FNH@notes
 | 
			
		||||
   \FNH@startnote
 | 
			
		||||
   \@makefntext{\rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
 | 
			
		||||
   \FNH@endnote
 | 
			
		||||
  }%
 | 
			
		||||
}%
 | 
			
		||||
\def\FNH@startnote{%
 | 
			
		||||
  \hsize\FNH@colwidth
 | 
			
		||||
  \interlinepenalty\interfootnotelinepenalty
 | 
			
		||||
  \reset@font\footnotesize
 | 
			
		||||
  \floatingpenalty\@MM
 | 
			
		||||
  \@parboxrestore
 | 
			
		||||
  \protected@edef\@currentlabel{\csname p@\@mpfn\endcsname\@thefnmark}%
 | 
			
		||||
  \color@begingroup
 | 
			
		||||
}%
 | 
			
		||||
\def\FNH@endnote{\color@endgroup}%
 | 
			
		||||
\def\FNH@savenotes{%
 | 
			
		||||
  \begingroup
 | 
			
		||||
  \ifFNH@savingnotes\else
 | 
			
		||||
    \FNH@savingnotestrue
 | 
			
		||||
    \let\@footnotetext    \FNH@hyper@fntext
 | 
			
		||||
    \let\@mpfootnotetext  \FNH@hyper@fntext
 | 
			
		||||
    \let\H@@mpfootnotetext\FNH@nohyp@fntext
 | 
			
		||||
    \FNH@width\columnwidth
 | 
			
		||||
    \let\FNH@colwidth\FNH@width
 | 
			
		||||
    \global\setbox\FNH@notes\box\voidb@x
 | 
			
		||||
    \let\FNH@thempfn\thempfn
 | 
			
		||||
    \let\FNH@mpfn\@mpfn
 | 
			
		||||
    \ifx\@minipagerestore\relax\let\@minipagerestore\@empty\fi
 | 
			
		||||
    \expandafter\def\expandafter\@minipagerestore\expandafter{%
 | 
			
		||||
      \@minipagerestore
 | 
			
		||||
      \let\thempfn\FNH@thempfn
 | 
			
		||||
      \let\@mpfn\FNH@mpfn
 | 
			
		||||
    }%
 | 
			
		||||
  \fi
 | 
			
		||||
}%
 | 
			
		||||
\def\FNH@spewnotes {%
 | 
			
		||||
  \if@endpe\ifx\par\@@par\FNH@toks{}\else
 | 
			
		||||
     \FNH@toks\expandafter{\expandafter
 | 
			
		||||
              \def\expandafter\par\expandafter{\par}\@endpetrue}%
 | 
			
		||||
     \expandafter\expandafter\expandafter
 | 
			
		||||
     \FNH@toks
 | 
			
		||||
     \expandafter\expandafter\expandafter
 | 
			
		||||
     {\expandafter\the\expandafter\FNH@toks
 | 
			
		||||
      \expandafter\def\expandafter\@par\expandafter{\@par}}%
 | 
			
		||||
     \expandafter\expandafter\expandafter
 | 
			
		||||
     \FNH@toks
 | 
			
		||||
     \expandafter\expandafter\expandafter
 | 
			
		||||
     {\expandafter\the\expandafter\FNH@toks
 | 
			
		||||
      \expandafter\everypar\expandafter{\the\everypar}}\fi
 | 
			
		||||
  \else\FNH@toks{}\fi
 | 
			
		||||
  \expandafter
 | 
			
		||||
  \endgroup\the\FNH@toks
 | 
			
		||||
  \ifFNH@savingnotes\else
 | 
			
		||||
   \ifvoid\FNH@notes\else
 | 
			
		||||
    \begingroup
 | 
			
		||||
     \let\@makefntext\@empty
 | 
			
		||||
     \let\@finalstrut\@gobble
 | 
			
		||||
     \let\rule\@gobbletwo
 | 
			
		||||
     \ifx\@footnotetext\@mpfootnotetext
 | 
			
		||||
        \expandafter\FNH@H@@mpfootnotetext
 | 
			
		||||
     \else
 | 
			
		||||
        \expandafter\FNH@H@@footnotetext
 | 
			
		||||
     \fi{\unvbox\FNH@notes}%
 | 
			
		||||
    \endgroup
 | 
			
		||||
   \fi
 | 
			
		||||
  \fi
 | 
			
		||||
}%
 | 
			
		||||
\def\FNH@footnote@envname    {footnote}%
 | 
			
		||||
\def\FNH@footnotetext@envname{footnotetext}%
 | 
			
		||||
\def\FNH@footnote{%
 | 
			
		||||
% this line added for Sphinx:
 | 
			
		||||
    \spx@opt@BeforeFootnote
 | 
			
		||||
    \ifx\@currenvir\FNH@footnote@envname
 | 
			
		||||
        \expandafter\FNH@footnoteenv
 | 
			
		||||
    \else
 | 
			
		||||
        \expandafter\FNH@latex@footnote
 | 
			
		||||
    \fi
 | 
			
		||||
}%
 | 
			
		||||
\def\FNH@footnoteenv{%
 | 
			
		||||
% this line added for Sphinx (footnotes in parsed literal blocks):
 | 
			
		||||
    \catcode13=5 \sphinxunactivateextrasandspace
 | 
			
		||||
    \@ifnextchar[%
 | 
			
		||||
      \FNH@footnoteenv@i %]
 | 
			
		||||
      {\stepcounter\@mpfn
 | 
			
		||||
       \protected@xdef\@thefnmark{\thempfn}%
 | 
			
		||||
       \@footnotemark
 | 
			
		||||
       \def\FNH@endfntext@fntext{\@footnotetext}%
 | 
			
		||||
       \FNH@startfntext}%
 | 
			
		||||
}%
 | 
			
		||||
\def\FNH@footnoteenv@i[#1]{%
 | 
			
		||||
    \begingroup
 | 
			
		||||
     \csname c@\@mpfn\endcsname #1\relax
 | 
			
		||||
     \unrestored@protected@xdef\@thefnmark{\thempfn}%
 | 
			
		||||
    \endgroup
 | 
			
		||||
    \@footnotemark
 | 
			
		||||
    \def\FNH@endfntext@fntext{\@footnotetext}%
 | 
			
		||||
    \FNH@startfntext
 | 
			
		||||
}%
 | 
			
		||||
\def\FNH@footnotetext{%
 | 
			
		||||
    \ifx\@currenvir\FNH@footnotetext@envname
 | 
			
		||||
        \expandafter\FNH@footnotetextenv
 | 
			
		||||
    \else
 | 
			
		||||
        \expandafter\FNH@latex@footnotetext
 | 
			
		||||
    \fi
 | 
			
		||||
}%
 | 
			
		||||
\def\FNH@footnotetextenv{%
 | 
			
		||||
    \@ifnextchar[%
 | 
			
		||||
      \FNH@footnotetextenv@i %]
 | 
			
		||||
      {\protected@xdef\@thefnmark{\thempfn}%
 | 
			
		||||
       \def\FNH@endfntext@fntext{\@footnotetext}%
 | 
			
		||||
       \FNH@startfntext}%
 | 
			
		||||
}%
 | 
			
		||||
\def\FNH@footnotetextenv@i[#1]{%
 | 
			
		||||
    \begingroup
 | 
			
		||||
     \csname c@\@mpfn\endcsname #1\relax
 | 
			
		||||
     \unrestored@protected@xdef\@thefnmark{\thempfn}%
 | 
			
		||||
    \endgroup
 | 
			
		||||
    \ifFNH@savingnotes
 | 
			
		||||
      \def\FNH@endfntext@fntext{\FNH@nohyp@fntext}%
 | 
			
		||||
    \else
 | 
			
		||||
      \def\FNH@endfntext@fntext{\FNH@H@@footnotetext}%
 | 
			
		||||
    \fi
 | 
			
		||||
    \FNH@startfntext
 | 
			
		||||
}%
 | 
			
		||||
\def\FNH@startfntext{%
 | 
			
		||||
  \setbox\z@\vbox\bgroup
 | 
			
		||||
    \FNH@startnote
 | 
			
		||||
    \FNH@prefntext
 | 
			
		||||
    \rule\z@\footnotesep\ignorespaces
 | 
			
		||||
}%
 | 
			
		||||
\def\FNH@endfntext {%
 | 
			
		||||
    \@finalstrut\strutbox
 | 
			
		||||
    \FNH@postfntext
 | 
			
		||||
    \FNH@endnote
 | 
			
		||||
    \egroup
 | 
			
		||||
  \begingroup
 | 
			
		||||
    \let\@makefntext\@empty\let\@finalstrut\@gobble\let\rule\@gobbletwo
 | 
			
		||||
    \FNH@endfntext@fntext {\unvbox\z@}%
 | 
			
		||||
  \endgroup
 | 
			
		||||
}%
 | 
			
		||||
\let\FNH@prefntext\@empty
 | 
			
		||||
\let\FNH@postfntext\@empty
 | 
			
		||||
\AtBeginDocument{\iffootnotehyperparse\expandafter\FNH@check\fi}%
 | 
			
		||||
\def\FNH@safeif#1{%
 | 
			
		||||
   \iftrue\csname if#1\endcsname\csname fi\endcsname\expandafter\@firstoftwo
 | 
			
		||||
   \else\csname fi\endcsname\expandafter\@secondoftwo
 | 
			
		||||
   \fi
 | 
			
		||||
}%
 | 
			
		||||
\def\FNH@check{%
 | 
			
		||||
   \ifx\@makefntextFB\@undefined\expandafter\FNH@check@
 | 
			
		||||
                           \else\expandafter\FNH@frenchb@
 | 
			
		||||
   \fi
 | 
			
		||||
}%
 | 
			
		||||
\def\FNH@frenchb@{%
 | 
			
		||||
   \def\FNH@prefntext{%
 | 
			
		||||
     \localleftbox{}%
 | 
			
		||||
     \let\FBeverypar@save\FBeverypar@quote
 | 
			
		||||
     \let\FBeverypar@quote\relax
 | 
			
		||||
     \FNH@safeif{FB@koma}%
 | 
			
		||||
       {\FNH@safeif{FBFrenchFootnotes}%
 | 
			
		||||
          {\ifx\footnote\thanks
 | 
			
		||||
             \let\@@makefnmark\@@makefnmarkTH
 | 
			
		||||
             \@makefntextTH{} % space as in french.ldf
 | 
			
		||||
           \else
 | 
			
		||||
             \let\@@makefnmark\@@makefnmarkFB
 | 
			
		||||
             \@makefntextFB{} % space as in french.ldf
 | 
			
		||||
             \fi
 | 
			
		||||
          }{\let\@@makefnmark\@@makefnmarkORI
 | 
			
		||||
             \@makefntextORI{}% no space as in french.ldf
 | 
			
		||||
          }%
 | 
			
		||||
       }%
 | 
			
		||||
       {\FNH@safeif{FBFrenchFootnotes}%
 | 
			
		||||
          {\@makefntextFB{}}%
 | 
			
		||||
          {\@makefntextORI{}}%
 | 
			
		||||
       }%
 | 
			
		||||
   }%
 | 
			
		||||
   \def\FNH@postfntext{%
 | 
			
		||||
     \let\FBeverypar@quote\FBeverypar@save
 | 
			
		||||
     \localleftbox{\FBeveryline@quote}%
 | 
			
		||||
   }%
 | 
			
		||||
}%
 | 
			
		||||
\def\FNH@check@{%
 | 
			
		||||
    \expandafter\FNH@check@a\@makefntext{1.2!3?4,}%
 | 
			
		||||
                \FNH@@@1.2!3?4,\FNH@@@\relax
 | 
			
		||||
}%
 | 
			
		||||
\long\def\FNH@check@a #11.2!3?4,#2\FNH@@@#3{%
 | 
			
		||||
    \ifx\relax#3\expandafter\FNH@checkagain@
 | 
			
		||||
    \else
 | 
			
		||||
      \def\FNH@prefntext{#1}\def\FNH@postfntext{#2}%
 | 
			
		||||
      \expandafter\FNH@check@b
 | 
			
		||||
    \fi
 | 
			
		||||
}%
 | 
			
		||||
\def\FNH@checkagain@{%
 | 
			
		||||
    \expandafter\FNH@checkagain@a
 | 
			
		||||
    \detokenize\expandafter{\@makefntext{1.2!3?4,}}\relax\FNH@@@
 | 
			
		||||
}%
 | 
			
		||||
\edef\FNH@temp{\noexpand\FNH@checkagain@a ##1\string{1.2!3?4,\string}}%
 | 
			
		||||
\expandafter\def\FNH@temp#2#3\FNH@@@{%
 | 
			
		||||
    \ifx\relax#2%
 | 
			
		||||
      \def\FNH@prefntext{\@makefntext{}}%
 | 
			
		||||
    \else\FNH@bad@makefntext@alert
 | 
			
		||||
    \fi
 | 
			
		||||
}%
 | 
			
		||||
\def\FNH@check@b #1\relax{%
 | 
			
		||||
    \expandafter\expandafter\expandafter\FNH@check@c
 | 
			
		||||
    \expandafter\meaning\expandafter\FNH@prefntext
 | 
			
		||||
    \meaning\FNH@postfntext1.2!3?4,\FNH@check@c\relax
 | 
			
		||||
}%
 | 
			
		||||
\def\FNH@check@c #11.2!3?4,#2#3\relax{%
 | 
			
		||||
    \ifx\FNH@check@c#2\else\FNH@bad@makefntext@alert\fi
 | 
			
		||||
}%
 | 
			
		||||
% slight reformulation for Sphinx
 | 
			
		||||
\def\FNH@bad@makefntext@alert{%
 | 
			
		||||
  \PackageWarningNoLine{sphinxpackagefootnote}%
 | 
			
		||||
    {Footnotes will be sub-optimal, sorry. This is due to the document class or^^J
 | 
			
		||||
  some package modifying macro \string\@makefntext.^^J
 | 
			
		||||
  You can try to report this incompatibility at^^J
 | 
			
		||||
  https://github.com/sphinx-doc/sphinx with this info:}%
 | 
			
		||||
    \typeout{\meaning\@makefntext}%
 | 
			
		||||
    \let\FNH@prefntext\@empty\let\FNH@postfntext\@empty
 | 
			
		||||
}%
 | 
			
		||||
% this macro from original footnote.sty is not used anymore by Sphinx
 | 
			
		||||
% but for simplicity sake let's just keep it as is
 | 
			
		||||
\def\makesavenoteenv{\@ifnextchar[\FNH@msne@ii\FNH@msne@i}%]
 | 
			
		||||
\def\FNH@msne@i #1{%
 | 
			
		||||
  \expandafter\let\csname FNH$#1\expandafter\endcsname %$
 | 
			
		||||
                  \csname #1\endcsname
 | 
			
		||||
  \expandafter\let\csname endFNH$#1\expandafter\endcsname %$
 | 
			
		||||
                  \csname end#1\endcsname
 | 
			
		||||
  \FNH@msne@ii[#1]{FNH$#1}%$
 | 
			
		||||
}%
 | 
			
		||||
\def\FNH@msne@ii[#1]#2{%
 | 
			
		||||
  \expandafter\edef\csname#1\endcsname{%
 | 
			
		||||
    \noexpand\savenotes
 | 
			
		||||
    \expandafter\noexpand\csname#2\endcsname
 | 
			
		||||
  }%
 | 
			
		||||
  \expandafter\edef\csname end#1\endcsname{%
 | 
			
		||||
    \expandafter\noexpand\csname end#2\endcsname
 | 
			
		||||
    \noexpand\expandafter
 | 
			
		||||
    \noexpand\spewnotes
 | 
			
		||||
    \noexpand\if@endpe\noexpand\@endpetrue\noexpand\fi
 | 
			
		||||
  }%
 | 
			
		||||
}%
 | 
			
		||||
%
 | 
			
		||||
% some extras for Sphinx :
 | 
			
		||||
% \sphinxfootnotemark: usable in section titles and silently removed from TOCs.
 | 
			
		||||
\def\sphinxfootnotemark [#1]%
 | 
			
		||||
   {\ifx\thepage\relax\else\sphinxfootref{#1}\fi}%
 | 
			
		||||
% \sphinxfootref:
 | 
			
		||||
% - \spx@opt@BeforeFootnote is from BeforeFootnote sphinxsetup option
 | 
			
		||||
% - \ref:
 | 
			
		||||
%     the latex.py writer inserts a \phantomsection\label{<scope>.<num>}
 | 
			
		||||
%     whenever
 | 
			
		||||
%     - the footnote was explicitly numbered in sources,
 | 
			
		||||
%     - or it was in restrained context and is rendered using footnotetext
 | 
			
		||||
%
 | 
			
		||||
%     These are the two types of footnotes that \sphinxfootnotemark must
 | 
			
		||||
%     handle. But for explicitly numbered footnotes the same number
 | 
			
		||||
%     can be found in document. So a secondary part in  <scope> is updated
 | 
			
		||||
%     at each novel such footnote to know what is the target from then on
 | 
			
		||||
%     for \sphinxfootnotemark and already encountered [1], or [2],...
 | 
			
		||||
%
 | 
			
		||||
% LaTeX package varioref is not supported by hyperref (from its doc: "There
 | 
			
		||||
% are too many problems with varioref. Nobody has time to sort them out.
 | 
			
		||||
% Therefore this package is now unsupported.") So we will simply use our own
 | 
			
		||||
% macros to access the page number of footnote text and decide whether to print
 | 
			
		||||
% it. \pagename is internationalized by latex-babel.
 | 
			
		||||
\def\spx@thefnmark#1#2{%
 | 
			
		||||
  % #1=label for reference, #2=page where footnote was printed
 | 
			
		||||
  \ifx\spx@tempa\spx@tempb
 | 
			
		||||
     % same page
 | 
			
		||||
     #1%
 | 
			
		||||
  \else
 | 
			
		||||
    \sphinxthefootnotemark{#1}{#2}%
 | 
			
		||||
  \fi
 | 
			
		||||
}%
 | 
			
		||||
\def\sphinxfootref@get #1#2#3#4#5\relax{%
 | 
			
		||||
    \def\sphinxfootref@label{#1}%
 | 
			
		||||
    \def\sphinxfootref@page {#2}%
 | 
			
		||||
    \def\sphinxfootref@Href {#4}%
 | 
			
		||||
}%
 | 
			
		||||
\protected\def\sphinxfootref#1{% #1 always explicit number in Sphinx usage
 | 
			
		||||
  \spx@opt@BeforeFootnote
 | 
			
		||||
  \ltx@ifundefined{r@\thesphinxscope.#1}%
 | 
			
		||||
    {\gdef\@thefnmark{?}\H@@footnotemark}%
 | 
			
		||||
    {\expandafter\expandafter\expandafter\sphinxfootref@get
 | 
			
		||||
                 \csname r@\thesphinxscope.#1\endcsname\relax
 | 
			
		||||
     \edef\spx@tempa{\thepage}\edef\spx@tempb{\sphinxfootref@page}%
 | 
			
		||||
     \protected@xdef\@thefnmark{\spx@thefnmark{\sphinxfootref@label}{\sphinxfootref@page}}%
 | 
			
		||||
     \let\spx@@makefnmark\@makefnmark
 | 
			
		||||
     \def\@makefnmark{%
 | 
			
		||||
       \hyper@linkstart{link}{\sphinxfootref@Href}%
 | 
			
		||||
       \spx@@makefnmark
 | 
			
		||||
       \hyper@linkend
 | 
			
		||||
     }%
 | 
			
		||||
     \H@@footnotemark
 | 
			
		||||
     \let\@makefnmark\spx@@makefnmark
 | 
			
		||||
    }%
 | 
			
		||||
}%
 | 
			
		||||
\AtBeginDocument{%
 | 
			
		||||
   % let hyperref less complain
 | 
			
		||||
   \pdfstringdefDisableCommands{\def\sphinxfootnotemark [#1]{}}%
 | 
			
		||||
   % to obtain hyperlinked footnotes in longtable environment we must replace
 | 
			
		||||
   % hyperref's patch of longtable's patch of \@footnotetext by our own
 | 
			
		||||
   \let\LT@p@ftntext\FNH@hyper@fntext
 | 
			
		||||
   % this *requires* longtable to be used always wrapped in savenotes environment
 | 
			
		||||
}%
 | 
			
		||||
\endinput
 | 
			
		||||
%%
 | 
			
		||||
%% End of file `sphinxpackagefootnote.sty'.
 | 
			
		||||
| 
		 After Width: | Height: | Size: 253 KiB  |