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 |