pytex-preprocessor 0.4.4__tar.gz → 0.4.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pytex_preprocessor-0.4.4/src/pytex_preprocessor.egg-info → pytex_preprocessor-0.4.6}/PKG-INFO +1 -1
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/pyproject.toml +1 -1
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/commands/biblatex.py +6 -2
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_builder/build.py +2 -2
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_builder/tectonic.py +156 -48
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_builder/variants.py +64 -7
- pytex_preprocessor-0.4.6/src/pytex_hsrtreport/assets/logos/MAKERS-Icon.svg +101 -0
- pytex_preprocessor-0.4.6/src/pytex_hsrtreport/assets/logos/MAKERS-RAlign.svg +1360 -0
- pytex_preprocessor-0.4.6/src/pytex_hsrtreport/assets/logos/MAKERS.svg +163 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/document.py +10 -5
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/logos.py +3 -0
- pytex_preprocessor-0.4.6/src/pytex_hsrtreport/variants.py +39 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_markdown/__init__.py +9 -1
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_markdown/convert.py +126 -38
- pytex_preprocessor-0.4.6/src/pytex_markdown/frontmatter.py +195 -0
- {pytex_preprocessor-0.4.4/src/pytex_protocol → pytex_preprocessor-0.4.6/src/pytex_markdown/protocol}/__init__.py +5 -2
- {pytex_preprocessor-0.4.4/src/pytex_protocol → pytex_preprocessor-0.4.6/src/pytex_markdown/protocol}/convert.py +5 -13
- {pytex_preprocessor-0.4.4/src/pytex_protocol → pytex_preprocessor-0.4.6/src/pytex_markdown/protocol}/document.py +1 -1
- {pytex_preprocessor-0.4.4/src/pytex_protocol → pytex_preprocessor-0.4.6/src/pytex_markdown/protocol}/header.py +1 -1
- {pytex_preprocessor-0.4.4/src/pytex_protocol → pytex_preprocessor-0.4.6/src/pytex_markdown/protocol}/shortcodes.py +12 -11
- {pytex_preprocessor-0.4.4/src/pytex_protocol → pytex_preprocessor-0.4.6/src/pytex_markdown/protocol}/signatures.py +1 -1
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6/src/pytex_preprocessor.egg-info}/PKG-INFO +1 -1
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_preprocessor.egg-info/SOURCES.txt +11 -6
- pytex_preprocessor-0.4.6/src/pytex_protocol/__init__.py +59 -0
- pytex_preprocessor-0.4.6/src/pytex_protocol/frontmatter.py +7 -0
- pytex_preprocessor-0.4.4/src/pytex_hsrtreport/variants.py +0 -24
- pytex_preprocessor-0.4.4/src/pytex_protocol/frontmatter.py +0 -80
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/LICENSE +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/README.md +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/setup.cfg +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/__init__.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/commands/__init__.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/commands/builtin.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/commands/captions.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/commands/cleveref.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/commands/colors.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/commands/conditionals.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/commands/counters.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/commands/definitions.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/commands/floats.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/commands/font.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/commands/fontawesome.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/commands/fontspec.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/commands/geometry.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/commands/glossaries.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/commands/graphics.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/commands/hooks.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/commands/hyperref.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/commands/lengths.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/commands/listings.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/commands/mdframed.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/commands/picture.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/commands/setspace.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/commands/tables.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/helpers/__init__.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/helpers/coerce.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/helpers/parenting.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/helpers/sanitize.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/helpers/with_package.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/interface/__init__.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/interface/control_sequence.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/interface/package.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/interface/tex.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/model/__init__.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/model/color.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/model/comment.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/model/concat.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/model/control_sequence.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/model/document.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/model/document_class.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/model/empty.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/model/environment.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/model/image.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/model/include.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/model/length.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/model/math.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/model/package.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/model/raw.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/packages.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/registry.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex/template.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_analyze/__init__.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_analyze/analyze.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_analyze/optimize.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_builder/__init__.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_builder/console.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_builder/render.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_builder/tex2py.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_builder/tree.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/__init__.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/assets/fonts/Blender/Blender-Bold.ttf +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/assets/fonts/Blender/Blender-BoldItalic.ttf +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/assets/fonts/Blender/Blender-Book.ttf +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/assets/fonts/Blender/Blender-BookItalic.ttf +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/assets/fonts/Blender/Blender-Medium.ttf +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/assets/fonts/Blender/Blender-MediumItalic.ttf +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/assets/fonts/Blender/Blender-Strong.ttf +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/assets/fonts/Blender/Blender-Thin.ttf +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/assets/fonts/Blender/Blender-ThinItalic.ttf +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/assets/fonts/DIN/DIN-Black.ttf +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/assets/fonts/DIN/DIN-Bold.ttf +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/assets/fonts/DIN/DIN-BoldItalic.ttf +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/assets/fonts/DIN/DIN-Italic.ttf +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/assets/fonts/DIN/DIN-Medium.ttf +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/assets/fonts/DIN/DIN-Regular.ttf +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/assets/fonts/Times New Roman.ttf +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/assets/logos/ASTA.svg +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/assets/logos/DUMMY.png +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/assets/logos/DUMMY_FOOT.png +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/assets/logos/ECHO.svg +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/assets/logos/HSRT.pdf +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/assets/logos/INF.pdf +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/assets/logos/STUPA.pdf +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/assets/logos/Skyline.pdf +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/boxes.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/citations.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/cleveref_names.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/colors.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/fonts.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/glossary.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/hyperref_config.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/listings.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/pagebreak.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/pagesetup.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/tex/pagesetup.tex +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/titlepage.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/voting.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/watermark.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_hsrtreport/wordcount.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_koma/__init__.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_koma/commands.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_koma/document.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_markdown/escape.py +0 -0
- {pytex_preprocessor-0.4.4/src/pytex_protocol → pytex_preprocessor-0.4.6/src/pytex_markdown/protocol}/entries.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_preprocessor.egg-info/dependency_links.txt +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_preprocessor.egg-info/entry_points.txt +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_preprocessor.egg-info/requires.txt +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_preprocessor.egg-info/top_level.txt +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_tikz/__init__.py +0 -0
- {pytex_preprocessor-0.4.4 → pytex_preprocessor-0.4.6}/src/pytex_tikz/tikz.py +0 -0
|
@@ -58,8 +58,12 @@ def Parencite(*keys: str) -> TeX:
|
|
|
58
58
|
|
|
59
59
|
@Registry.add
|
|
60
60
|
@with_package(BIBLATEX)
|
|
61
|
-
def Autocite(*keys: str) -> TeX:
|
|
62
|
-
|
|
61
|
+
def Autocite(*keys: str, postnote: str | None = None) -> TeX:
|
|
62
|
+
key_param = Parameter(",".join(keys))
|
|
63
|
+
if postnote is None:
|
|
64
|
+
return ControlSequence("autocite", (key_param,))
|
|
65
|
+
# A single optional argument to \autocite is the postnote (e.g. a page).
|
|
66
|
+
return ControlSequence("autocite", (Parameter(postnote, optional=True), key_param))
|
|
63
67
|
|
|
64
68
|
|
|
65
69
|
@Registry.add
|
|
@@ -142,8 +142,8 @@ def _parse_args(argv: list[str]) -> Config:
|
|
|
142
142
|
default=None,
|
|
143
143
|
metavar="STYLE",
|
|
144
144
|
help=(
|
|
145
|
-
"Markdown output style: plain, report,
|
|
146
|
-
+ " (default: auto-detect)"
|
|
145
|
+
"Markdown output style: plain, report, report-makers, "
|
|
146
|
+
+ "protocol-asta, protocol-stupa (default: auto-detect)"
|
|
147
147
|
),
|
|
148
148
|
)
|
|
149
149
|
_ = parser.add_argument(
|
|
@@ -15,6 +15,7 @@ import subprocess
|
|
|
15
15
|
import tarfile
|
|
16
16
|
import tempfile
|
|
17
17
|
import xml.etree.ElementTree as ET
|
|
18
|
+
import zipfile
|
|
18
19
|
from pathlib import Path
|
|
19
20
|
from typing import TYPE_CHECKING
|
|
20
21
|
|
|
@@ -52,20 +53,50 @@ BIBER_MIRROR_URL = (
|
|
|
52
53
|
"/releases/download/biber-binaries/{asset}"
|
|
53
54
|
)
|
|
54
55
|
|
|
55
|
-
# SHA256 of each
|
|
56
|
-
#
|
|
57
|
-
#
|
|
58
|
-
#
|
|
56
|
+
# SHA256 of each biber binary, keyed by the versioned mirror asset name. Used
|
|
57
|
+
# to verify downloads from either source and to reject HTML error pages a CDN
|
|
58
|
+
# might serve with a 200 status. Covers every mirrored platform (glibc/musl
|
|
59
|
+
# Linux x86_64, Linux aarch64, macOS x86_64/universal, Windows x86_64).
|
|
59
60
|
BIBER_SHA256: dict[str, str] = {
|
|
61
|
+
"biber-2.11-darwin_x86_64.tar.gz": "4e3343574f917d7825148e4c9ccb665154476ec0817abf67f1fea052fb8cc728",
|
|
62
|
+
"biber-2.11-linux_x86_64-musl.tar.gz": "a6b7e61446ee8b23cc0b6b1eaffd4a8e0d271f06874ad22b025cc41f74050617",
|
|
60
63
|
"biber-2.11-linux_x86_64.tar.gz": "7fcb51491fb24151810a92b2e2d03b7a1291823c0f8d6fb53183af391fca42e7",
|
|
64
|
+
"biber-2.11-MSWIN64.zip": "f3a438ae8d94e7afbd069f0f941b3d93816fc06647d88460ba05a5485ed4372a",
|
|
65
|
+
"biber-2.12-darwin_x86_64.tar.gz": "5a5f20669bd3e4cf56fd246ef2ba37d601ca2059510590a5022da4487d5e7bb8",
|
|
61
66
|
"biber-2.12-linux_x86_64.tar.gz": "fd0b5145cc908c400a701b583330635d533d750b73a272d1d5ea47e10b2fbf71",
|
|
67
|
+
"biber-2.12-MSWIN64.zip": "96d99e075dbb666ad4ec93bcca5fcc15ea07b6f70e9151e7d44baa4cc7c02932",
|
|
68
|
+
"biber-2.13-darwin_x86_64.tar.gz": "ad47307b6f27c7bb129a1a3235e01245be3e95541bba9adca6892196e599edfd",
|
|
69
|
+
"biber-2.13-linux_x86_64-musl.tar.gz": "d4a25d32fef6993b5ea0dece70af4b09a1f2758f8b8737924250f3e6b80a979a",
|
|
62
70
|
"biber-2.13-linux_x86_64.tar.gz": "03101f418d46f4666272b68a4318d9e4b7a840d9dfa05d93ddc490d491157a75",
|
|
71
|
+
"biber-2.13-MSWIN64.zip": "bf3ab70629465d674d020a10f34e307c7f6fb031dc7ea73627a1fe53b1e8457b",
|
|
72
|
+
"biber-2.14-darwin_x86_64.tar.gz": "d834ba71c05f8dfe668d4c40d13c0e11e0fee24e567877479a0ac1c98ad89131",
|
|
73
|
+
"biber-2.14-linux_x86_64-musl.tar.gz": "0b6c2a8307111c6dc2897d338be1ad446ef2e1ca8d126f806ce5c9bf7ff486ca",
|
|
63
74
|
"biber-2.14-linux_x86_64.tar.gz": "dab3177f03322b5529d07d47d21d9e573a90c23d86eaaf11591b2d155316ee1b",
|
|
75
|
+
"biber-2.14-MSWIN64.zip": "247451621ef60378045cf917a007ef3219d3cbf833f080c3333927dea854b4fe",
|
|
76
|
+
"biber-2.15-darwin_x86_64.tar.gz": "e2b4931db6b4a684b640f41e53faee1c68f931f03c41d8f2c40d8b11c85511c7",
|
|
77
|
+
"biber-2.15-linux_x86_64-musl.tar.gz": "277acd35d51a07c1b75782514f88f1ad380581b0077548eaa0db6b60263dafaa",
|
|
64
78
|
"biber-2.15-linux_x86_64.tar.gz": "653c8add18d2e94a233a6b9aae6d8144f965c2ce13fb7b4e66502b55fcd06e06",
|
|
79
|
+
"biber-2.15-MSWIN64.zip": "61553ef3d5e8bdff86e1ac8204236fbf3980bc8ade94949f1ad874ba4031eb7f",
|
|
80
|
+
"biber-2.16-darwin_x86_64.tar.gz": "c396133cc924c23111353ea5cb0e9960a98f1fddca8f42fbdb89e89424fc136f",
|
|
81
|
+
"biber-2.16-linux_x86_64-musl.tar.gz": "e0935c8e67016889b3c8bb1f0fbd602b587f6935cd61ee23bc2eb898ae633f58",
|
|
65
82
|
"biber-2.16-linux_x86_64.tar.gz": "3afb97a42d2cf272d3c0b51663725e55339c4e6f3d594cd52e16c39fa9fcfb13",
|
|
83
|
+
"biber-2.16-MSWIN64.zip": "8e7a4c98626511bcf1c89a1847242cdd0e0113927137577eedaa13c72ce84b4b",
|
|
84
|
+
"biber-2.17-darwin_universal.tar.gz": "182e1efa074d8a2a23a8893f2a22440d4e463cce55e4ed02076ac4c0ee0614b2",
|
|
85
|
+
"biber-2.17-darwin_x86_64.tar.gz": "aa72ccdd01d59367b919d517f7a116e5dc40848abc1909cd812b485f791df7f4",
|
|
86
|
+
"biber-2.17-linux_x86_64-musl.tar.gz": "8967c4d34bfd2ed3d71e54d8a20a0c766b90368348994c99fca56ee2d812619e",
|
|
66
87
|
"biber-2.17-linux_x86_64.tar.gz": "129d2e0332a57e985ffa253e5e9fbd28ef99af5a068d1b141145211969aa8999",
|
|
88
|
+
"biber-2.17-MSWIN64.zip": "c103bffc5ae0a7f513e7c26b6d394e9be6cf41952959c5d604ee2e6581b5dea2",
|
|
89
|
+
"biber-2.18-darwin_universal.tar.gz": "a0848ca266334284f1145470e53c3882b2d5e8ad82828700df1f6e347f7b675b",
|
|
90
|
+
"biber-2.18-darwin_x86_64.tar.gz": "f05520a397162434e93ef28b6be2c866f555a1979f150601fecf6d22d4bb8f2e",
|
|
91
|
+
"biber-2.18-linux_x86_64-musl.tar.gz": "34da2cc489a1387bfda8c76add3d613ececd9b674d0361a2b1464cf592dee2ed",
|
|
67
92
|
"biber-2.18-linux_x86_64.tar.gz": "2a6b4cd15a1139907799da0d23cd4ddcce8341af3960d2b3d1d3e4b4a9f1fb53",
|
|
93
|
+
"biber-2.18-MSWIN64.zip": "02ee3a8b6838b7ff1e9aea1a5342686981b9364067a7b8e7131c3b3201cf387c",
|
|
94
|
+
"biber-2.19-darwin_universal.tar.gz": "0ebda145064eb5b8901a4ed5c8c5e5e6a5208e0aba425f7febcb5fb5b1a9c11b",
|
|
95
|
+
"biber-2.19-darwin_x86_64.tar.gz": "3835aab3247d3bff79b0c2fcf061149b80e39bf11f55a3a30cf946043a85d45b",
|
|
96
|
+
"biber-2.19-linux_aarch64.tar.gz": "45571c262e714786ec841320ee1845f0e3e3cf29443bb58769b26c6fc6274766",
|
|
97
|
+
"biber-2.19-linux_x86_64-musl.tar.gz": "66e765df8b52446659a978f35d25974b835b7168ddd96f45d4a49cea6bd727eb",
|
|
68
98
|
"biber-2.19-linux_x86_64.tar.gz": "e2eda3e6ea7ac7e78d60e99a0e2aeb1096829f95791c06b768ed31a12889e58e",
|
|
99
|
+
"biber-2.19-MSWIN64.zip": "f0bccdec320e89a04b067f1189957b4bbe6feb445005357601f6e295e83e97da",
|
|
69
100
|
}
|
|
70
101
|
|
|
71
102
|
|
|
@@ -112,45 +143,140 @@ def ensure_tectonic(console: Console) -> Path:
|
|
|
112
143
|
return cached
|
|
113
144
|
|
|
114
145
|
|
|
115
|
-
|
|
116
|
-
|
|
146
|
+
# macOS binaries lived under OSX_Intel up to biber 2.16 and moved to MacOS
|
|
147
|
+
# from 2.17 on; the SourceForge fallback URL needs the right subdir per version.
|
|
148
|
+
_OLD_MAC_DIRS: frozenset[str] = frozenset(
|
|
149
|
+
{"2.11", "2.12", "2.13", "2.14", "2.15", "2.16"}
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
def _biber_candidates(version: str) -> list[tuple[str, str, str]]:
|
|
154
|
+
"""``(sf_subdir, sf_filename, mirror_asset)`` for this platform, best first.
|
|
155
|
+
|
|
156
|
+
More than one candidate is returned where a fallback helps:
|
|
157
|
+
|
|
158
|
+
* Linux x86_64 prefers the statically-linked *musl* build, which has no
|
|
159
|
+
shared-library dependencies (the glibc build needs e.g. ``libnsl.so.1``,
|
|
160
|
+
absent on many minimal systems), then falls back to the glibc build.
|
|
161
|
+
* macOS prefers the *universal* build (the only arm64-native option, added
|
|
162
|
+
in 2.17), then the x86_64 build (runs under Rosetta on Apple silicon).
|
|
163
|
+
|
|
164
|
+
Candidates upstream never published for a given version simply 404, and the
|
|
165
|
+
download loop moves on to the next one.
|
|
166
|
+
"""
|
|
117
167
|
system = platform.system()
|
|
118
168
|
machine = platform.machine()
|
|
169
|
+
mac_dir = "OSX_Intel" if version in _OLD_MAC_DIRS else "MacOS"
|
|
170
|
+
# biber 2.19 renamed the musl tarball; earlier releases use the old name.
|
|
171
|
+
musl_file = (
|
|
172
|
+
"biber-linux-musl_x86_64.tar.gz"
|
|
173
|
+
if version == "2.19"
|
|
174
|
+
else "biber-linux_x86_64-musl.tar.gz"
|
|
175
|
+
)
|
|
119
176
|
if system == "Linux":
|
|
120
177
|
if machine == "x86_64":
|
|
121
|
-
return
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
178
|
+
return [
|
|
179
|
+
("Linux-musl", musl_file, f"biber-{version}-linux_x86_64-musl.tar.gz"),
|
|
180
|
+
(
|
|
181
|
+
"Linux",
|
|
182
|
+
"biber-linux_x86_64.tar.gz",
|
|
183
|
+
f"biber-{version}-linux_x86_64.tar.gz",
|
|
184
|
+
),
|
|
185
|
+
]
|
|
186
|
+
if machine in ("aarch64", "arm64"):
|
|
187
|
+
return [
|
|
188
|
+
(
|
|
189
|
+
"Linux",
|
|
190
|
+
"biber-linux_aarch64.tar.gz",
|
|
191
|
+
f"biber-{version}-linux_aarch64.tar.gz",
|
|
192
|
+
),
|
|
193
|
+
]
|
|
194
|
+
elif system == "Darwin":
|
|
195
|
+
return [
|
|
196
|
+
(
|
|
197
|
+
mac_dir,
|
|
198
|
+
"biber-darwin_universal.tar.gz",
|
|
199
|
+
f"biber-{version}-darwin_universal.tar.gz",
|
|
200
|
+
),
|
|
201
|
+
(
|
|
202
|
+
mac_dir,
|
|
203
|
+
"biber-darwin_x86_64.tar.gz",
|
|
204
|
+
f"biber-{version}-darwin_x86_64.tar.gz",
|
|
205
|
+
),
|
|
206
|
+
]
|
|
207
|
+
elif system == "Windows":
|
|
208
|
+
return [("Windows", "biber-MSWIN64.zip", f"biber-{version}-MSWIN64.zip")]
|
|
128
209
|
raise BuildError(
|
|
129
210
|
f"unsupported platform for biber auto-download: {system} {machine}"
|
|
130
211
|
)
|
|
131
212
|
|
|
132
213
|
|
|
133
214
|
def _biber_cached(version: str) -> Path:
|
|
134
|
-
|
|
215
|
+
name = "biber.exe" if platform.system() == "Windows" else "biber"
|
|
216
|
+
return CACHE_DIR / "biber" / version / name
|
|
135
217
|
|
|
136
218
|
|
|
137
|
-
def
|
|
138
|
-
"""
|
|
139
|
-
return filename.replace("biber-", f"biber-{version}-", 1)
|
|
219
|
+
def _biber_sources(version: str) -> list[tuple[str, str | None]]:
|
|
220
|
+
"""``(url, expected_sha256 or None)`` to try in order.
|
|
140
221
|
|
|
222
|
+
For each platform candidate the mirror is tried first, then SourceForge.
|
|
223
|
+
"""
|
|
224
|
+
sources: list[tuple[str, str | None]] = []
|
|
225
|
+
for sf_dir, filename, asset in _biber_candidates(version):
|
|
226
|
+
sha = BIBER_SHA256.get(asset)
|
|
227
|
+
sources.append((BIBER_MIRROR_URL.format(asset=asset), sha))
|
|
228
|
+
sources.append(
|
|
229
|
+
(
|
|
230
|
+
BIBER_RELEASE_URL.format(
|
|
231
|
+
version=version, sf_dir=sf_dir, filename=filename
|
|
232
|
+
),
|
|
233
|
+
sha,
|
|
234
|
+
)
|
|
235
|
+
)
|
|
236
|
+
return sources
|
|
141
237
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
238
|
+
|
|
239
|
+
def _is_biber_member(name: str) -> bool:
|
|
240
|
+
"""Whether an archive member is the biber executable.
|
|
241
|
+
|
|
242
|
+
Most archives hold a plain ``biber`` (``biber.exe`` on Windows), but a few
|
|
243
|
+
musl tarballs name the binary after the tarball (e.g.
|
|
244
|
+
``biber-linux_x86_64-musl``). AppleDouble sidecars (``._biber``) are
|
|
245
|
+
excluded. The largest matching member is chosen by the callers.
|
|
246
|
+
"""
|
|
247
|
+
base = Path(name).name
|
|
248
|
+
if base.startswith("._"):
|
|
249
|
+
return False
|
|
250
|
+
return base in {"biber", "biber.exe"} or base.startswith("biber")
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
def _extract_biber_binary(archive: Path, version: str) -> bytes:
|
|
254
|
+
"""Read the biber executable out of a ``.tar.gz`` or ``.zip`` archive."""
|
|
255
|
+
if zipfile.is_zipfile(archive):
|
|
256
|
+
with zipfile.ZipFile(archive) as zf:
|
|
257
|
+
members = [
|
|
258
|
+
i
|
|
259
|
+
for i in zf.infolist()
|
|
260
|
+
if not i.is_dir() and _is_biber_member(i.filename)
|
|
261
|
+
]
|
|
262
|
+
if not members:
|
|
263
|
+
raise BuildError(
|
|
264
|
+
f"biber binary not found inside the biber {version} archive"
|
|
265
|
+
)
|
|
266
|
+
return zf.read(max(members, key=lambda i: i.file_size))
|
|
267
|
+
with tarfile.open(archive) as tf:
|
|
268
|
+
tar_members = [
|
|
269
|
+
m for m in tf.getmembers() if m.isfile() and _is_biber_member(m.name)
|
|
270
|
+
]
|
|
271
|
+
member = max(tar_members, key=lambda m: m.size, default=None)
|
|
272
|
+
if member is None:
|
|
273
|
+
raise BuildError(
|
|
274
|
+
f"biber binary not found inside the biber {version} archive"
|
|
275
|
+
)
|
|
276
|
+
src = tf.extractfile(member)
|
|
277
|
+
if src is None:
|
|
278
|
+
raise BuildError(f"could not read biber from the biber {version} archive")
|
|
279
|
+
return src.read()
|
|
154
280
|
|
|
155
281
|
|
|
156
282
|
def _download_to(url: str, dest: Path, sha: str | None, console: Console) -> bool:
|
|
@@ -196,25 +322,7 @@ def _ensure_biber(version: str, console: Console) -> Path:
|
|
|
196
322
|
raise BuildError(
|
|
197
323
|
f"failed to download biber {version} from the mirror or SourceForge"
|
|
198
324
|
)
|
|
199
|
-
|
|
200
|
-
member = next(
|
|
201
|
-
(
|
|
202
|
-
m
|
|
203
|
-
for m in tf.getmembers()
|
|
204
|
-
if Path(m.name).name == "biber" and m.isfile()
|
|
205
|
-
),
|
|
206
|
-
None,
|
|
207
|
-
)
|
|
208
|
-
if member is None:
|
|
209
|
-
raise BuildError(
|
|
210
|
-
f"biber binary not found inside the biber {version} archive"
|
|
211
|
-
)
|
|
212
|
-
src = tf.extractfile(member)
|
|
213
|
-
if src is None:
|
|
214
|
-
raise BuildError(
|
|
215
|
-
f"could not read biber from the biber {version} archive"
|
|
216
|
-
)
|
|
217
|
-
cached.write_bytes(src.read())
|
|
325
|
+
cached.write_bytes(_extract_biber_binary(tmp, version))
|
|
218
326
|
except Exception:
|
|
219
327
|
if cached.exists():
|
|
220
328
|
cached.unlink()
|
|
@@ -4,6 +4,8 @@ A *variant* maps a Markdown source to a concrete document:
|
|
|
4
4
|
|
|
5
5
|
* ``plain`` - a bare ``Document`` wrapping the converted Markdown.
|
|
6
6
|
* ``report`` - an HSRT report with title page and table of contents.
|
|
7
|
+
* ``report-makers`` - an HSRT report branded with the MAKERS logo (title page
|
|
8
|
+
and footer on every page).
|
|
7
9
|
* ``protocol-asta`` - an AStA meeting protocol (HSRT report, AStA logos).
|
|
8
10
|
* ``protocol-stupa`` - a StuPa meeting protocol (HSRT report, StuPa logos).
|
|
9
11
|
|
|
@@ -19,29 +21,37 @@ of the document when it is not given via frontmatter/config.
|
|
|
19
21
|
from __future__ import annotations
|
|
20
22
|
|
|
21
23
|
import re
|
|
24
|
+
from pathlib import Path
|
|
22
25
|
from typing import TYPE_CHECKING
|
|
23
26
|
|
|
27
|
+
from pytex.commands.biblatex import Addbibresource
|
|
24
28
|
from pytex.commands.builtin import ChapterStar
|
|
25
29
|
from pytex.model.concat import Concat
|
|
26
30
|
from pytex.model.document import Document
|
|
31
|
+
from pytex.model.empty import Empty
|
|
27
32
|
from pytex.model.raw import Raw
|
|
28
33
|
from pytex_hsrtreport.document import HSRTReport
|
|
29
34
|
from pytex_hsrtreport.titlepage import TitlePageDataLine
|
|
30
35
|
from pytex_hsrtreport.variants import Variant
|
|
31
|
-
from pytex_markdown import Markdown, escape_latex
|
|
32
|
-
from
|
|
33
|
-
from pytex_protocol.frontmatter import split_frontmatter
|
|
36
|
+
from pytex_markdown import Markdown, escape_latex, split_frontmatter
|
|
37
|
+
from pytex_markdown.protocol import build_protocol
|
|
34
38
|
|
|
35
39
|
if TYPE_CHECKING:
|
|
36
40
|
from collections.abc import Mapping
|
|
37
41
|
|
|
38
42
|
from pytex.interface.package import PackageOption
|
|
39
43
|
from pytex.interface.tex import TeX
|
|
40
|
-
from
|
|
44
|
+
from pytex_markdown.frontmatter import FrontmatterValue
|
|
41
45
|
|
|
42
46
|
__all__ = ["VARIANT_NAMES", "build_document"]
|
|
43
47
|
|
|
44
|
-
VARIANT_NAMES: tuple[str, ...] = (
|
|
48
|
+
VARIANT_NAMES: tuple[str, ...] = (
|
|
49
|
+
"plain",
|
|
50
|
+
"report",
|
|
51
|
+
"report-makers",
|
|
52
|
+
"protocol-asta",
|
|
53
|
+
"protocol-stupa",
|
|
54
|
+
)
|
|
45
55
|
|
|
46
56
|
type Options = Mapping[str, object]
|
|
47
57
|
|
|
@@ -65,6 +75,8 @@ def build_document(
|
|
|
65
75
|
return _plain(body, options)
|
|
66
76
|
if variant == "report":
|
|
67
77
|
return _report(body, options)
|
|
78
|
+
if variant == "report-makers":
|
|
79
|
+
return _report(body, options, logo_variant=Variant.MAKERS, footer_logos=True)
|
|
68
80
|
if variant == "protocol-asta":
|
|
69
81
|
return _protocol(meta, body, options, force=Variant.ASTA)
|
|
70
82
|
if variant == "protocol-stupa":
|
|
@@ -92,7 +104,13 @@ def _plain(body: str, options: dict[str, object]) -> TeX:
|
|
|
92
104
|
)
|
|
93
105
|
|
|
94
106
|
|
|
95
|
-
def _report(
|
|
107
|
+
def _report(
|
|
108
|
+
body: str,
|
|
109
|
+
options: dict[str, object],
|
|
110
|
+
*,
|
|
111
|
+
logo_variant: Variant = Variant.INF,
|
|
112
|
+
footer_logos: bool = False,
|
|
113
|
+
) -> TeX:
|
|
96
114
|
title = _str(options, "title", "titel")
|
|
97
115
|
derived = False
|
|
98
116
|
if title is None:
|
|
@@ -103,10 +121,14 @@ def _report(body: str, options: dict[str, object]) -> TeX:
|
|
|
103
121
|
# The `#` heading was pulled out for the title page; re-emit it at the
|
|
104
122
|
# top of the body as a big, unnumbered heading so it is not lost.
|
|
105
123
|
body_tex = Concat(ChapterStar(escape_latex(title)), Raw("\n\n"), body_tex)
|
|
124
|
+
bibliography = _bibliography(options)
|
|
106
125
|
return HSRTReport(
|
|
107
|
-
variant=
|
|
126
|
+
variant=logo_variant,
|
|
108
127
|
show_titlepage=title is not None,
|
|
128
|
+
show_footer_logos=footer_logos,
|
|
109
129
|
show_toc=True,
|
|
130
|
+
show_bibliography=bibliography is not None,
|
|
131
|
+
user_preamble=_bib_preamble(bibliography) if bibliography else Empty,
|
|
110
132
|
title=escape_latex(title) if title is not None else None,
|
|
111
133
|
author=_escaped(_str(options, "author", "autor")),
|
|
112
134
|
abstract=_escaped(_str(options, "abstract", "zusammenfassung")),
|
|
@@ -144,6 +166,41 @@ def _protocol(
|
|
|
144
166
|
|
|
145
167
|
# -- helpers ---------------------------------------------------------------
|
|
146
168
|
|
|
169
|
+
# Self-contained .bib name written next to the .tex via filecontents so biber
|
|
170
|
+
# finds it in the build dir without an external file path.
|
|
171
|
+
_BIB_FILENAME = "pytex-md-refs.bib"
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
def _bibliography(options: Mapping[str, object]) -> str | None:
|
|
175
|
+
"""BibTeX content from the ``bibliography`` frontmatter, or ``None``.
|
|
176
|
+
|
|
177
|
+
The value is either inline BibTeX (a block scalar, recognised by an ``@``
|
|
178
|
+
entry) or a path to a ``.bib`` file, which is read in. A path that does not
|
|
179
|
+
resolve to a file is ignored.
|
|
180
|
+
"""
|
|
181
|
+
value = _str(options, "bibliography", "literatur", "bibliografie", "bib")
|
|
182
|
+
if value is None:
|
|
183
|
+
return None
|
|
184
|
+
if "@" in value:
|
|
185
|
+
return value
|
|
186
|
+
path = Path(value)
|
|
187
|
+
return path.read_text(encoding="utf-8") if path.is_file() else None
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
def _bib_preamble(content: str) -> TeX:
|
|
191
|
+
"""Emit the bibliography as an inline ``filecontents`` .bib + ``\\addbibresource``.
|
|
192
|
+
|
|
193
|
+
Writing the .bib via ``filecontents`` keeps the document self-contained: the
|
|
194
|
+
file lands in the build dir at compile time, so biber resolves it without a
|
|
195
|
+
separate path (and the numeric biblatex default style applies).
|
|
196
|
+
"""
|
|
197
|
+
block = (
|
|
198
|
+
f"\\begin{{filecontents*}}[overwrite,noheader]{{{_BIB_FILENAME}}}\n"
|
|
199
|
+
+ content.rstrip("\n")
|
|
200
|
+
+ "\n\\end{filecontents*}\n"
|
|
201
|
+
)
|
|
202
|
+
return Concat(Raw(block, allow_replacements=False), Addbibresource(_BIB_FILENAME))
|
|
203
|
+
|
|
147
204
|
|
|
148
205
|
def _str(options: Mapping[str, object], *keys: str) -> str | None:
|
|
149
206
|
for key in keys:
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
+
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
3
|
+
|
|
4
|
+
<svg
|
|
5
|
+
width="461.55865mm"
|
|
6
|
+
height="447.56244mm"
|
|
7
|
+
viewBox="0 0 461.55865 447.56244"
|
|
8
|
+
version="1.1"
|
|
9
|
+
id="svg1"
|
|
10
|
+
xml:space="preserve"
|
|
11
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
12
|
+
xmlns:svg="http://www.w3.org/2000/svg"><defs
|
|
13
|
+
id="defs1" /><g
|
|
14
|
+
id="layer2"
|
|
15
|
+
transform="translate(-1560.2505,-33.956207)"><g
|
|
16
|
+
id="layer1-4"
|
|
17
|
+
transform="translate(1536)"><g
|
|
18
|
+
id="g11-7-0-0-9-0-20-7"
|
|
19
|
+
transform="matrix(0,0.59667125,0.59667125,0,393.2673,161.87008)"
|
|
20
|
+
style="stroke-width:0.443432"><path
|
|
21
|
+
id="path3-9-3-3-8-7-0-1-0-3-2-8"
|
|
22
|
+
style="fill:#ffcc00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.87637;stroke-dasharray:none;stroke-opacity:1"
|
|
23
|
+
d="m 72.187145,-608.63455 c -8.389369,38.44406 -27.282093,70.83442 -54.178521,94.61352 -4.137019,3.65754 -5.449842,10.26951 -2.688548,15.05251 14.675938,25.42107 29.351877,50.84214 44.027816,76.26321 2.761293,4.783 8.673559,6.0982 13.068673,2.75435 28.548345,-21.71988 52.510725,-48.95763 72.013875,-81.76553 2.82204,-4.74718 3.00458,-12.6906 0.7284,-17.72185 -7.11103,-15.71813 -21.09098,-50.13052 -25.68624,-89.06116 -0.64735,-5.48427 -5.43095,-9.95351 -10.9538,-9.95353 l -24.440675,-6e-5 c -5.522847,-2e-5 -10.713598,4.42321 -11.89098,9.81854 z" /><path
|
|
24
|
+
id="path3-9-3-3-8-7-3-1-7-3-6-3-4"
|
|
25
|
+
style="fill:#f18700;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.87637;stroke-dasharray:none;stroke-opacity:1"
|
|
26
|
+
d="m 72.187145,-608.63455 c -8.389369,38.44406 -27.282093,70.83442 -54.178521,94.61352 -4.137019,3.65754 -5.449842,10.26951 -2.688548,15.05251 14.675938,25.42107 29.351877,50.84214 44.027816,76.26321 2.761293,4.783 8.673559,6.0982 13.068673,2.75435 28.548345,-21.71988 52.510725,-48.95763 72.013875,-81.76553 2.82204,-4.74718 3.00458,-12.6906 0.7284,-17.72185 -7.11103,-15.71813 -21.09098,-50.13052 -25.68624,-89.06116 -0.64735,-5.48427 -5.43095,-9.95351 -10.9538,-9.95353 l -24.440675,-6e-5 c -5.522847,-2e-5 -10.713598,4.42321 -11.89098,9.81854 z"
|
|
27
|
+
transform="rotate(120,158.4647,-495.98275)" /><path
|
|
28
|
+
id="path3-9-3-3-8-7-3-5-2-9-3-2-7-5"
|
|
29
|
+
style="fill:#ce1625;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.87637;stroke-dasharray:none;stroke-opacity:1"
|
|
30
|
+
d="m 72.187145,-608.63455 c -8.389369,38.44406 -27.282093,70.83442 -54.178521,94.61352 -4.137019,3.65754 -5.449842,10.26951 -2.688548,15.05251 14.675938,25.42107 29.351877,50.84214 44.027816,76.26321 2.761293,4.783 8.673559,6.0982 13.068673,2.75435 28.548345,-21.71988 52.510725,-48.95763 72.013875,-81.76553 2.82204,-4.74718 3.00458,-12.6906 0.7284,-17.72185 -7.11103,-15.71813 -21.09098,-50.13052 -25.68624,-89.06116 -0.64735,-5.48427 -5.43095,-9.95351 -10.9538,-9.95353 l -24.440675,-6e-5 c -5.522847,-2e-5 -10.713598,4.42321 -11.89098,9.81854 z"
|
|
31
|
+
transform="rotate(-120,158.45415,-495.99122)" /></g><g
|
|
32
|
+
id="g11-7-0-0-9-0-0-5-0"
|
|
33
|
+
transform="matrix(0.51673246,-0.29833562,0.29833562,0.51673246,241.95468,423.93573)"
|
|
34
|
+
style="stroke-width:0.443432"><path
|
|
35
|
+
id="path3-9-3-3-8-7-0-1-0-3-1-9-3"
|
|
36
|
+
style="fill:#008b92;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.87637;stroke-dasharray:none;stroke-opacity:1"
|
|
37
|
+
d="m 72.187145,-608.63455 c -8.389369,38.44406 -27.282093,70.83442 -54.178521,94.61352 -4.137019,3.65754 -5.449842,10.26951 -2.688548,15.05251 14.675938,25.42107 29.351877,50.84214 44.027816,76.26321 2.761293,4.783 8.673559,6.0982 13.068673,2.75435 28.548345,-21.71988 52.510725,-48.95763 72.013875,-81.76553 2.82204,-4.74718 3.00458,-12.6906 0.7284,-17.72185 -7.11103,-15.71813 -21.09098,-50.13052 -25.68624,-89.06116 -0.64735,-5.48427 -5.43095,-9.95351 -10.9538,-9.95353 l -24.440675,-6e-5 c -5.522847,-2e-5 -10.713598,4.42321 -11.89098,9.81854 z" /><path
|
|
38
|
+
id="path3-9-3-3-8-7-3-1-7-3-6-9-2-6"
|
|
39
|
+
style="fill:#0075bf;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.87637;stroke-dasharray:none;stroke-opacity:1"
|
|
40
|
+
d="m 72.187145,-608.63455 c -8.389369,38.44406 -27.282093,70.83442 -54.178521,94.61352 -4.137019,3.65754 -5.449842,10.26951 -2.688548,15.05251 14.675938,25.42107 29.351877,50.84214 44.027816,76.26321 2.761293,4.783 8.673559,6.0982 13.068673,2.75435 28.548345,-21.71988 52.510725,-48.95763 72.013875,-81.76553 2.82204,-4.74718 3.00458,-12.6906 0.7284,-17.72185 -7.11103,-15.71813 -21.09098,-50.13052 -25.68624,-89.06116 -0.64735,-5.48427 -5.43095,-9.95351 -10.9538,-9.95353 l -24.440675,-6e-5 c -5.522847,-2e-5 -10.713598,4.42321 -11.89098,9.81854 z"
|
|
41
|
+
transform="rotate(120,158.4647,-495.98275)" /><path
|
|
42
|
+
id="path3-9-3-3-8-7-3-5-2-9-3-2-6-2-1"
|
|
43
|
+
style="fill:#29235c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.87637;stroke-dasharray:none;stroke-opacity:1"
|
|
44
|
+
d="m 72.187145,-608.63455 c -8.389369,38.44406 -27.282093,70.83442 -54.178521,94.61352 -4.137019,3.65754 -5.449842,10.26951 -2.688548,15.05251 14.675938,25.42107 29.351877,50.84214 44.027816,76.26321 2.761293,4.783 8.673559,6.0982 13.068673,2.75435 28.548345,-21.71988 52.510725,-48.95763 72.013875,-81.76553 2.82204,-4.74718 3.00458,-12.6906 0.7284,-17.72185 -7.11103,-15.71813 -21.09098,-50.13052 -25.68624,-89.06116 -0.64735,-5.48427 -5.43095,-9.95351 -10.9538,-9.95353 l -24.440675,-6e-5 c -5.522847,-2e-5 -10.713598,4.42321 -11.89098,9.81854 z"
|
|
45
|
+
transform="rotate(-120,158.45415,-495.99122)" /></g><g
|
|
46
|
+
id="g11-7-0-0-9-0-2-89-0"
|
|
47
|
+
transform="matrix(0,0.59667125,0.59667125,0,630.13284,25.684221)"
|
|
48
|
+
style="stroke-width:0.443432"><path
|
|
49
|
+
id="path3-9-3-3-8-7-0-1-0-3-16-7-6"
|
|
50
|
+
style="fill:#ffcc00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.87637;stroke-dasharray:none;stroke-opacity:1"
|
|
51
|
+
d="m 72.187145,-608.63455 c -8.389369,38.44406 -27.282093,70.83442 -54.178521,94.61352 -4.137019,3.65754 -5.449842,10.26951 -2.688548,15.05251 14.675938,25.42107 29.351877,50.84214 44.027816,76.26321 2.761293,4.783 8.673559,6.0982 13.068673,2.75435 28.548345,-21.71988 52.510725,-48.95763 72.013875,-81.76553 2.82204,-4.74718 3.00458,-12.6906 0.7284,-17.72185 -7.11103,-15.71813 -21.09098,-50.13052 -25.68624,-89.06116 -0.64735,-5.48427 -5.43095,-9.95351 -10.9538,-9.95353 l -24.440675,-6e-5 c -5.522847,-2e-5 -10.713598,4.42321 -11.89098,9.81854 z" /><path
|
|
52
|
+
id="path3-9-3-3-8-7-3-1-7-3-6-2-36-3"
|
|
53
|
+
style="fill:#f18700;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.87637;stroke-dasharray:none;stroke-opacity:1"
|
|
54
|
+
d="m 72.187145,-608.63455 c -8.389369,38.44406 -27.282093,70.83442 -54.178521,94.61352 -4.137019,3.65754 -5.449842,10.26951 -2.688548,15.05251 14.675938,25.42107 29.351877,50.84214 44.027816,76.26321 2.761293,4.783 8.673559,6.0982 13.068673,2.75435 28.548345,-21.71988 52.510725,-48.95763 72.013875,-81.76553 2.82204,-4.74718 3.00458,-12.6906 0.7284,-17.72185 -7.11103,-15.71813 -21.09098,-50.13052 -25.68624,-89.06116 -0.64735,-5.48427 -5.43095,-9.95351 -10.9538,-9.95353 l -24.440675,-6e-5 c -5.522847,-2e-5 -10.713598,4.42321 -11.89098,9.81854 z"
|
|
55
|
+
transform="rotate(120,158.4647,-495.98275)" /><path
|
|
56
|
+
id="path3-9-3-3-8-7-3-5-2-9-3-2-1-1-2"
|
|
57
|
+
style="fill:#ce1625;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.87637;stroke-dasharray:none;stroke-opacity:1"
|
|
58
|
+
d="m 72.187145,-608.63455 c -8.389369,38.44406 -27.282093,70.83442 -54.178521,94.61352 -4.137019,3.65754 -5.449842,10.26951 -2.688548,15.05251 14.675938,25.42107 29.351877,50.84214 44.027816,76.26321 2.761293,4.783 8.673559,6.0982 13.068673,2.75435 28.548345,-21.71988 52.510725,-48.95763 72.013875,-81.76553 2.82204,-4.74718 3.00458,-12.6906 0.7284,-17.72185 -7.11103,-15.71813 -21.09098,-50.13052 -25.68624,-89.06116 -0.64735,-5.48427 -5.43095,-9.95351 -10.9538,-9.95353 l -24.440675,-6e-5 c -5.522847,-2e-5 -10.713598,4.42321 -11.89098,9.81854 z"
|
|
59
|
+
transform="rotate(-120,158.45415,-495.99122)" /></g><g
|
|
60
|
+
id="g11-7-0-0-9-0-2-8-2-0"
|
|
61
|
+
transform="matrix(0,0.59667125,0.59667125,0,630.43565,300.31284)"
|
|
62
|
+
style="stroke-width:0.443432"><path
|
|
63
|
+
id="path3-9-3-3-8-7-0-1-0-3-16-6-9-6"
|
|
64
|
+
style="fill:#ffcc00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.87637;stroke-dasharray:none;stroke-opacity:1"
|
|
65
|
+
d="m 72.187145,-608.63455 c -8.389369,38.44406 -27.282093,70.83442 -54.178521,94.61352 -4.137019,3.65754 -5.449842,10.26951 -2.688548,15.05251 14.675938,25.42107 29.351877,50.84214 44.027816,76.26321 2.761293,4.783 8.673559,6.0982 13.068673,2.75435 28.548345,-21.71988 52.510725,-48.95763 72.013875,-81.76553 2.82204,-4.74718 3.00458,-12.6906 0.7284,-17.72185 -7.11103,-15.71813 -21.09098,-50.13052 -25.68624,-89.06116 -0.64735,-5.48427 -5.43095,-9.95351 -10.9538,-9.95353 l -24.440675,-6e-5 c -5.522847,-2e-5 -10.713598,4.42321 -11.89098,9.81854 z" /><path
|
|
66
|
+
id="path3-9-3-3-8-7-3-1-7-3-6-2-3-3-1"
|
|
67
|
+
style="fill:#f18700;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.87637;stroke-dasharray:none;stroke-opacity:1"
|
|
68
|
+
d="m 72.187145,-608.63455 c -8.389369,38.44406 -27.282093,70.83442 -54.178521,94.61352 -4.137019,3.65754 -5.449842,10.26951 -2.688548,15.05251 14.675938,25.42107 29.351877,50.84214 44.027816,76.26321 2.761293,4.783 8.673559,6.0982 13.068673,2.75435 28.548345,-21.71988 52.510725,-48.95763 72.013875,-81.76553 2.82204,-4.74718 3.00458,-12.6906 0.7284,-17.72185 -7.11103,-15.71813 -21.09098,-50.13052 -25.68624,-89.06116 -0.64735,-5.48427 -5.43095,-9.95351 -10.9538,-9.95353 l -24.440675,-6e-5 c -5.522847,-2e-5 -10.713598,4.42321 -11.89098,9.81854 z"
|
|
69
|
+
transform="rotate(120,158.4647,-495.98275)" /><path
|
|
70
|
+
id="path3-9-3-3-8-7-3-5-2-9-3-2-1-8-1-5"
|
|
71
|
+
style="fill:#ce1625;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.87637;stroke-dasharray:none;stroke-opacity:1"
|
|
72
|
+
d="m 72.187145,-608.63455 c -8.389369,38.44406 -27.282093,70.83442 -54.178521,94.61352 -4.137019,3.65754 -5.449842,10.26951 -2.688548,15.05251 14.675938,25.42107 29.351877,50.84214 44.027816,76.26321 2.761293,4.783 8.673559,6.0982 13.068673,2.75435 28.548345,-21.71988 52.510725,-48.95763 72.013875,-81.76553 2.82204,-4.74718 3.00458,-12.6906 0.7284,-17.72185 -7.11103,-15.71813 -21.09098,-50.13052 -25.68624,-89.06116 -0.64735,-5.48427 -5.43095,-9.95351 -10.9538,-9.95353 l -24.440675,-6e-5 c -5.522847,-2e-5 -10.713598,4.42321 -11.89098,9.81854 z"
|
|
73
|
+
transform="rotate(-120,158.45414,-495.99122)" /></g><g
|
|
74
|
+
id="g11-7-0-0-9-0-0-0-94-5"
|
|
75
|
+
transform="matrix(0.51673246,-0.29833562,0.29833562,0.51673246,478.82011,560.2897)"
|
|
76
|
+
style="stroke-width:0.443432"><path
|
|
77
|
+
id="path3-9-3-3-8-7-0-1-0-3-1-1-78-4"
|
|
78
|
+
style="fill:#008b92;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.87637;stroke-dasharray:none;stroke-opacity:1"
|
|
79
|
+
d="m 72.187145,-608.63455 c -8.389369,38.44406 -27.282093,70.83442 -54.178521,94.61352 -4.137019,3.65754 -5.449842,10.26951 -2.688548,15.05251 14.675938,25.42107 29.351877,50.84214 44.027816,76.26321 2.761293,4.783 8.673559,6.0982 13.068673,2.75435 28.548345,-21.71988 52.510725,-48.95763 72.013875,-81.76553 2.82204,-4.74718 3.00458,-12.6906 0.7284,-17.72185 -7.11103,-15.71813 -21.09098,-50.13052 -25.68624,-89.06116 -0.64735,-5.48427 -5.43095,-9.95351 -10.9538,-9.95353 l -24.440675,-6e-5 c -5.522847,-2e-5 -10.713598,4.42321 -11.89098,9.81854 z" /><path
|
|
80
|
+
id="path3-9-3-3-8-7-3-1-7-3-6-9-9-4-7"
|
|
81
|
+
style="fill:#0075bf;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.87637;stroke-dasharray:none;stroke-opacity:1"
|
|
82
|
+
d="m 72.187145,-608.63455 c -8.389369,38.44406 -27.282093,70.83442 -54.178521,94.61352 -4.137019,3.65754 -5.449842,10.26951 -2.688548,15.05251 14.675938,25.42107 29.351877,50.84214 44.027816,76.26321 2.761293,4.783 8.673559,6.0982 13.068673,2.75435 28.548345,-21.71988 52.510725,-48.95763 72.013875,-81.76553 2.82204,-4.74718 3.00458,-12.6906 0.7284,-17.72185 -7.11103,-15.71813 -21.09098,-50.13052 -25.68624,-89.06116 -0.64735,-5.48427 -5.43095,-9.95351 -10.9538,-9.95353 l -24.440675,-6e-5 c -5.522847,-2e-5 -10.713598,4.42321 -11.89098,9.81854 z"
|
|
83
|
+
transform="rotate(120,158.4647,-495.98275)" /><path
|
|
84
|
+
id="path3-9-3-3-8-7-3-5-2-9-3-2-6-7-5-6"
|
|
85
|
+
style="fill:#29235c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.87637;stroke-dasharray:none;stroke-opacity:1"
|
|
86
|
+
d="m 72.187145,-608.63455 c -8.389369,38.44406 -27.282093,70.83442 -54.178521,94.61352 -4.137019,3.65754 -5.449842,10.26951 -2.688548,15.05251 14.675938,25.42107 29.351877,50.84214 44.027816,76.26321 2.761293,4.783 8.673559,6.0982 13.068673,2.75435 28.548345,-21.71988 52.510725,-48.95763 72.013875,-81.76553 2.82204,-4.74718 3.00458,-12.6906 0.7284,-17.72185 -7.11103,-15.71813 -21.09098,-50.13052 -25.68624,-89.06116 -0.64735,-5.48427 -5.43095,-9.95351 -10.9538,-9.95353 l -24.440675,-6e-5 c -5.522847,-2e-5 -10.713598,4.42321 -11.89098,9.81854 z"
|
|
87
|
+
transform="rotate(-120,158.45415,-495.99122)" /></g><g
|
|
88
|
+
id="g11-7-0-0-9-0-0-0-9-0-5"
|
|
89
|
+
transform="matrix(0.51673246,-0.29833562,0.29833562,0.51673246,241.95467,698.73251)"
|
|
90
|
+
style="stroke-width:0.443432"><path
|
|
91
|
+
id="path3-9-3-3-8-7-0-1-0-3-1-1-5-3-6"
|
|
92
|
+
style="fill:#008b92;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.87637;stroke-dasharray:none;stroke-opacity:1"
|
|
93
|
+
d="m 72.187145,-608.63455 c -8.389369,38.44406 -27.282093,70.83442 -54.178521,94.61352 -4.137019,3.65754 -5.449842,10.26951 -2.688548,15.05251 14.675938,25.42107 29.351877,50.84214 44.027816,76.26321 2.761293,4.783 8.673559,6.0982 13.068673,2.75435 28.548345,-21.71988 52.510725,-48.95763 72.013875,-81.76553 2.82204,-4.74718 3.00458,-12.6906 0.7284,-17.72185 -7.11103,-15.71813 -21.09098,-50.13052 -25.68624,-89.06116 -0.64735,-5.48427 -5.43095,-9.95351 -10.9538,-9.95353 l -24.440675,-6e-5 c -5.522847,-2e-5 -10.713598,4.42321 -11.89098,9.81854 z" /><path
|
|
94
|
+
id="path3-9-3-3-8-7-3-1-7-3-6-9-9-1-6-9"
|
|
95
|
+
style="fill:#0075bf;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.87637;stroke-dasharray:none;stroke-opacity:1"
|
|
96
|
+
d="m 72.187145,-608.63455 c -8.389369,38.44406 -27.282093,70.83442 -54.178521,94.61352 -4.137019,3.65754 -5.449842,10.26951 -2.688548,15.05251 14.675938,25.42107 29.351877,50.84214 44.027816,76.26321 2.761293,4.783 8.673559,6.0982 13.068673,2.75435 28.548345,-21.71988 52.510725,-48.95763 72.013875,-81.76553 2.82204,-4.74718 3.00458,-12.6906 0.7284,-17.72185 -7.11103,-15.71813 -21.09098,-50.13052 -25.68624,-89.06116 -0.64735,-5.48427 -5.43095,-9.95351 -10.9538,-9.95353 l -24.440675,-6e-5 c -5.522847,-2e-5 -10.713598,4.42321 -11.89098,9.81854 z"
|
|
97
|
+
transform="rotate(120,158.4647,-495.98275)" /><path
|
|
98
|
+
id="path3-9-3-3-8-7-3-5-2-9-3-2-6-7-2-10-3"
|
|
99
|
+
style="fill:#29235c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.87637;stroke-dasharray:none;stroke-opacity:1"
|
|
100
|
+
d="m 72.187145,-608.63455 c -8.389369,38.44406 -27.282093,70.83442 -54.178521,94.61352 -4.137019,3.65754 -5.449842,10.26951 -2.688548,15.05251 14.675938,25.42107 29.351877,50.84214 44.027816,76.26321 2.761293,4.783 8.673559,6.0982 13.068673,2.75435 28.548345,-21.71988 52.510725,-48.95763 72.013875,-81.76553 2.82204,-4.74718 3.00458,-12.6906 0.7284,-17.72185 -7.11103,-15.71813 -21.09098,-50.13052 -25.68624,-89.06116 -0.64735,-5.48427 -5.43095,-9.95351 -10.9538,-9.95353 l -24.440675,-6e-5 c -5.522847,-2e-5 -10.713598,4.42321 -11.89098,9.81854 z"
|
|
101
|
+
transform="rotate(-120,158.45415,-495.99122)" /></g></g></g></svg>
|