pytex-preprocessor 0.1.0__py3-none-any.whl
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/__init__.py +87 -0
- pytex/commands/__init__.py +51 -0
- pytex/commands/biblatex.py +98 -0
- pytex/commands/builtin.py +598 -0
- pytex/commands/captions.py +56 -0
- pytex/commands/cleveref.py +43 -0
- pytex/commands/colors.py +60 -0
- pytex/commands/conditionals.py +62 -0
- pytex/commands/counters.py +85 -0
- pytex/commands/definitions.py +109 -0
- pytex/commands/floats.py +93 -0
- pytex/commands/font.py +138 -0
- pytex/commands/fontawesome.py +88 -0
- pytex/commands/fontspec.py +75 -0
- pytex/commands/geometry.py +25 -0
- pytex/commands/glossaries.py +126 -0
- pytex/commands/graphics.py +68 -0
- pytex/commands/hooks.py +58 -0
- pytex/commands/hyperref.py +57 -0
- pytex/commands/lengths.py +200 -0
- pytex/commands/listings.py +63 -0
- pytex/commands/mdframed.py +43 -0
- pytex/commands/picture.py +32 -0
- pytex/commands/setspace.py +38 -0
- pytex/commands/tables.py +123 -0
- pytex/helpers/__init__.py +3 -0
- pytex/helpers/coerce.py +13 -0
- pytex/helpers/parenting.py +13 -0
- pytex/helpers/sanitize.py +54 -0
- pytex/helpers/with_package.py +61 -0
- pytex/interface/__init__.py +3 -0
- pytex/interface/control_sequence.py +29 -0
- pytex/interface/package.py +52 -0
- pytex/interface/tex.py +41 -0
- pytex/model/__init__.py +25 -0
- pytex/model/color.py +203 -0
- pytex/model/concat.py +31 -0
- pytex/model/control_sequence.py +72 -0
- pytex/model/document.py +120 -0
- pytex/model/document_class.py +29 -0
- pytex/model/empty.py +19 -0
- pytex/model/environment.py +30 -0
- pytex/model/image.py +137 -0
- pytex/model/include.py +21 -0
- pytex/model/length.py +54 -0
- pytex/model/math.py +401 -0
- pytex/model/package.py +132 -0
- pytex/model/raw.py +61 -0
- pytex/packages.py +221 -0
- pytex/registry.py +49 -0
- pytex_builder/__init__.py +8 -0
- pytex_builder/build.py +175 -0
- pytex_builder/console.py +77 -0
- pytex_builder/render.py +90 -0
- pytex_builder/tectonic.py +370 -0
- pytex_hsrtreport/__init__.py +116 -0
- pytex_hsrtreport/assets/fonts/Blender/Blender-Bold.ttf +0 -0
- pytex_hsrtreport/assets/fonts/Blender/Blender-BoldItalic.ttf +0 -0
- pytex_hsrtreport/assets/fonts/Blender/Blender-Book.ttf +0 -0
- pytex_hsrtreport/assets/fonts/Blender/Blender-BookItalic.ttf +0 -0
- pytex_hsrtreport/assets/fonts/Blender/Blender-Medium.ttf +0 -0
- pytex_hsrtreport/assets/fonts/Blender/Blender-MediumItalic.ttf +0 -0
- pytex_hsrtreport/assets/fonts/Blender/Blender-Strong.ttf +0 -0
- pytex_hsrtreport/assets/fonts/Blender/Blender-Thin.ttf +0 -0
- pytex_hsrtreport/assets/fonts/Blender/Blender-ThinItalic.ttf +0 -0
- pytex_hsrtreport/assets/fonts/DIN/DIN-Black.ttf +0 -0
- pytex_hsrtreport/assets/fonts/DIN/DIN-Bold.ttf +0 -0
- pytex_hsrtreport/assets/fonts/DIN/DIN-BoldItalic.ttf +0 -0
- pytex_hsrtreport/assets/fonts/DIN/DIN-Italic.ttf +0 -0
- pytex_hsrtreport/assets/fonts/DIN/DIN-Medium.ttf +0 -0
- pytex_hsrtreport/assets/fonts/DIN/DIN-Regular.ttf +0 -0
- pytex_hsrtreport/assets/fonts/Times New Roman.ttf +0 -0
- pytex_hsrtreport/assets/logos/ASTA.svg +79 -0
- pytex_hsrtreport/assets/logos/DUMMY.png +0 -0
- pytex_hsrtreport/assets/logos/DUMMY_FOOT.png +0 -0
- pytex_hsrtreport/assets/logos/ECHO.svg +226 -0
- pytex_hsrtreport/assets/logos/HSRT.pdf +0 -0
- pytex_hsrtreport/assets/logos/INF.pdf +0 -0
- pytex_hsrtreport/assets/logos/STUPA.pdf +0 -0
- pytex_hsrtreport/assets/logos/Skyline.pdf +0 -0
- pytex_hsrtreport/boxes.py +215 -0
- pytex_hsrtreport/citations.py +21 -0
- pytex_hsrtreport/cleveref_names.py +47 -0
- pytex_hsrtreport/colors.py +30 -0
- pytex_hsrtreport/document.py +307 -0
- pytex_hsrtreport/fonts.py +66 -0
- pytex_hsrtreport/glossary.py +61 -0
- pytex_hsrtreport/hyperref_config.py +49 -0
- pytex_hsrtreport/listings.py +90 -0
- pytex_hsrtreport/logos.py +234 -0
- pytex_hsrtreport/pagebreak.py +67 -0
- pytex_hsrtreport/pagesetup.py +33 -0
- pytex_hsrtreport/tex/pagesetup.tex +76 -0
- pytex_hsrtreport/titlepage.py +136 -0
- pytex_hsrtreport/variants.py +24 -0
- pytex_hsrtreport/voting.py +96 -0
- pytex_hsrtreport/watermark.py +63 -0
- pytex_hsrtreport/wordcount.py +33 -0
- pytex_koma/__init__.py +90 -0
- pytex_koma/commands.py +296 -0
- pytex_koma/document.py +138 -0
- pytex_markdown/__init__.py +62 -0
- pytex_markdown/convert.py +271 -0
- pytex_markdown/escape.py +11 -0
- pytex_preprocessor-0.1.0.dist-info/METADATA +82 -0
- pytex_preprocessor-0.1.0.dist-info/RECORD +119 -0
- pytex_preprocessor-0.1.0.dist-info/WHEEL +5 -0
- pytex_preprocessor-0.1.0.dist-info/entry_points.txt +2 -0
- pytex_preprocessor-0.1.0.dist-info/top_level.txt +7 -0
- pytex_protocol/__init__.py +37 -0
- pytex_protocol/convert.py +202 -0
- pytex_protocol/document.py +91 -0
- pytex_protocol/entries.py +96 -0
- pytex_protocol/frontmatter.py +80 -0
- pytex_protocol/header.py +139 -0
- pytex_protocol/shortcodes.py +130 -0
- pytex_protocol/signatures.py +84 -0
- pytex_tikz/__init__.py +25 -0
- pytex_tikz/tikz.py +272 -0
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
"""Locate, download and drive the ``tectonic`` engine plus ``makeindex``.
|
|
2
|
+
|
|
3
|
+
The tectonic binary is fetched once into a stable temp folder so repeated
|
|
4
|
+
builds reuse it. The official install script drops a self-contained binary into
|
|
5
|
+
its working directory - we point that at the cache dir.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import hashlib
|
|
11
|
+
import os
|
|
12
|
+
import platform
|
|
13
|
+
import shutil
|
|
14
|
+
import subprocess
|
|
15
|
+
import tarfile
|
|
16
|
+
import tempfile
|
|
17
|
+
import xml.etree.ElementTree as ET
|
|
18
|
+
from pathlib import Path
|
|
19
|
+
from typing import TYPE_CHECKING
|
|
20
|
+
|
|
21
|
+
__all__ = ["BuildError", "ensure_tectonic", "run_makeindex", "run_tectonic"]
|
|
22
|
+
|
|
23
|
+
if TYPE_CHECKING:
|
|
24
|
+
from .console import Console
|
|
25
|
+
|
|
26
|
+
INSTALL_URL = "https://drop-sh.fullyjustified.net"
|
|
27
|
+
CACHE_DIR = Path(tempfile.gettempdir()) / "pytex-tectonic"
|
|
28
|
+
|
|
29
|
+
# BCF control-file format version -> compatible biber release.
|
|
30
|
+
# Pattern: BCF minor = biber minor - 9 (holds for biber 2.14+)
|
|
31
|
+
BCF_TO_BIBER: dict[str, str] = {
|
|
32
|
+
"3.5": "2.14",
|
|
33
|
+
"3.6": "2.15",
|
|
34
|
+
"3.7": "2.16",
|
|
35
|
+
"3.8": "2.17",
|
|
36
|
+
"3.9": "2.18",
|
|
37
|
+
"3.10": "2.19",
|
|
38
|
+
"3.11": "2.20",
|
|
39
|
+
"3.12": "2.21",
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
BIBER_RELEASE_URL = (
|
|
43
|
+
"https://sourceforge.net/projects/biblatex-biber/files/"
|
|
44
|
+
"biblatex-biber/{version}/binaries/{sf_dir}/{filename}/download"
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
# Mirror of the upstream biber binaries, hosted as release assets so builds
|
|
48
|
+
# survive SourceForge outages (it periodically gates downloads behind a
|
|
49
|
+
# Cloudflare challenge that curl cannot pass). Tried before SourceForge.
|
|
50
|
+
BIBER_MIRROR_URL = (
|
|
51
|
+
"https://github.com/frederikbeimgraben/PyTeX-Preprocessor"
|
|
52
|
+
"/releases/download/biber-binaries/{asset}"
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
# SHA256 of each upstream biber tarball, keyed by the versioned mirror asset
|
|
56
|
+
# name. Used to verify downloads from either source and to reject HTML error
|
|
57
|
+
# pages a CDN might serve with a 200 status. Linux x86_64 only for now; other
|
|
58
|
+
# platforms download from SourceForge without a pinned checksum.
|
|
59
|
+
BIBER_SHA256: dict[str, str] = {
|
|
60
|
+
"biber-2.11-linux_x86_64.tar.gz": "7fcb51491fb24151810a92b2e2d03b7a1291823c0f8d6fb53183af391fca42e7",
|
|
61
|
+
"biber-2.12-linux_x86_64.tar.gz": "fd0b5145cc908c400a701b583330635d533d750b73a272d1d5ea47e10b2fbf71",
|
|
62
|
+
"biber-2.13-linux_x86_64.tar.gz": "03101f418d46f4666272b68a4318d9e4b7a840d9dfa05d93ddc490d491157a75",
|
|
63
|
+
"biber-2.14-linux_x86_64.tar.gz": "dab3177f03322b5529d07d47d21d9e573a90c23d86eaaf11591b2d155316ee1b",
|
|
64
|
+
"biber-2.15-linux_x86_64.tar.gz": "653c8add18d2e94a233a6b9aae6d8144f965c2ce13fb7b4e66502b55fcd06e06",
|
|
65
|
+
"biber-2.16-linux_x86_64.tar.gz": "3afb97a42d2cf272d3c0b51663725e55339c4e6f3d594cd52e16c39fa9fcfb13",
|
|
66
|
+
"biber-2.17-linux_x86_64.tar.gz": "129d2e0332a57e985ffa253e5e9fbd28ef99af5a068d1b141145211969aa8999",
|
|
67
|
+
"biber-2.18-linux_x86_64.tar.gz": "2a6b4cd15a1139907799da0d23cd4ddcce8341af3960d2b3d1d3e4b4a9f1fb53",
|
|
68
|
+
"biber-2.19-linux_x86_64.tar.gz": "e2eda3e6ea7ac7e78d60e99a0e2aeb1096829f95791c06b768ed31a12889e58e",
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
class BuildError(RuntimeError):
|
|
73
|
+
"""Raised when an external tool is missing or exits non-zero."""
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def _cached_binary() -> Path:
|
|
77
|
+
return CACHE_DIR / "tectonic"
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def ensure_tectonic(console: Console) -> Path:
|
|
81
|
+
"""Return a path to a usable ``tectonic`` binary, downloading if needed."""
|
|
82
|
+
on_path = shutil.which("tectonic")
|
|
83
|
+
if on_path:
|
|
84
|
+
return Path(on_path)
|
|
85
|
+
|
|
86
|
+
cached = _cached_binary()
|
|
87
|
+
if cached.exists():
|
|
88
|
+
return cached
|
|
89
|
+
|
|
90
|
+
if not (shutil.which("curl") and shutil.which("sh")):
|
|
91
|
+
raise BuildError(
|
|
92
|
+
"tectonic is not installed and cannot be downloaded without"
|
|
93
|
+
+ " 'curl' and 'sh' on PATH"
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
console.step("Downloading tectonic")
|
|
97
|
+
console.detail(f"target: {cached}")
|
|
98
|
+
CACHE_DIR.mkdir(parents=True, exist_ok=True)
|
|
99
|
+
proc = subprocess.run(
|
|
100
|
+
f"curl --proto '=https' --tlsv1.2 -fsSL {INSTALL_URL} | sh",
|
|
101
|
+
shell=True,
|
|
102
|
+
cwd=CACHE_DIR,
|
|
103
|
+
capture_output=True,
|
|
104
|
+
text=True,
|
|
105
|
+
)
|
|
106
|
+
if proc.returncode != 0 or not cached.exists():
|
|
107
|
+
raise BuildError(
|
|
108
|
+
"failed to download tectonic:\n"
|
|
109
|
+
+ (proc.stderr.strip() or "no output from install script")
|
|
110
|
+
)
|
|
111
|
+
cached.chmod(0o755)
|
|
112
|
+
return cached
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
def _biber_sf_path() -> tuple[str, str]:
|
|
116
|
+
"""Return (sourceforge_subdir, filename) for biber on this platform."""
|
|
117
|
+
system = platform.system()
|
|
118
|
+
machine = platform.machine()
|
|
119
|
+
if system == "Linux":
|
|
120
|
+
if machine == "x86_64":
|
|
121
|
+
return "Linux", "biber-linux_x86_64.tar.gz"
|
|
122
|
+
return "Linux-musl", f"biber-linuxmusl_{machine}.tar.gz"
|
|
123
|
+
if system == "Darwin":
|
|
124
|
+
arch = "arm64" if machine == "arm64" else "x86_64"
|
|
125
|
+
return "MacOS", f"biber-darwin_{arch}.tar.gz"
|
|
126
|
+
if system == "Windows":
|
|
127
|
+
return "Windows", "biber-windows_x86_64.zip"
|
|
128
|
+
raise BuildError(
|
|
129
|
+
f"unsupported platform for biber auto-download: {system} {machine}"
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def _biber_cached(version: str) -> Path:
|
|
134
|
+
return CACHE_DIR / "biber" / version / "biber"
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
def _mirror_asset(version: str, filename: str) -> str:
|
|
138
|
+
"""Versioned mirror asset name, e.g. ``biber-2.17-linux_x86_64.tar.gz``."""
|
|
139
|
+
return filename.replace("biber-", f"biber-{version}-", 1)
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
def _biber_sources(version: str) -> list[tuple[str, str | None]]:
|
|
143
|
+
"""(url, expected_sha256 or None) pairs to try in order: mirror, then SourceForge."""
|
|
144
|
+
sf_dir, filename = _biber_sf_path()
|
|
145
|
+
asset = _mirror_asset(version, filename)
|
|
146
|
+
sha = BIBER_SHA256.get(asset)
|
|
147
|
+
return [
|
|
148
|
+
(BIBER_MIRROR_URL.format(asset=asset), sha),
|
|
149
|
+
(
|
|
150
|
+
BIBER_RELEASE_URL.format(version=version, sf_dir=sf_dir, filename=filename),
|
|
151
|
+
sha,
|
|
152
|
+
),
|
|
153
|
+
]
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
def _download_to(url: str, dest: Path, sha: str | None, console: Console) -> bool:
|
|
157
|
+
"""Fetch *url* into *dest*; return True only on success and matching checksum."""
|
|
158
|
+
proc = subprocess.run(
|
|
159
|
+
["curl", "-fsSL", "-o", str(dest), url],
|
|
160
|
+
capture_output=True,
|
|
161
|
+
text=True,
|
|
162
|
+
)
|
|
163
|
+
if proc.returncode != 0 or not dest.exists():
|
|
164
|
+
return False
|
|
165
|
+
if sha is not None:
|
|
166
|
+
actual = hashlib.sha256(dest.read_bytes()).hexdigest()
|
|
167
|
+
if actual != sha:
|
|
168
|
+
console.warn(f"checksum mismatch from {url}; discarding")
|
|
169
|
+
dest.unlink(missing_ok=True)
|
|
170
|
+
return False
|
|
171
|
+
return True
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
def _ensure_biber(version: str, console: Console) -> Path:
|
|
175
|
+
"""Return a path to biber *version*, downloading from the mirror or SourceForge."""
|
|
176
|
+
cached = _biber_cached(version)
|
|
177
|
+
if cached.exists():
|
|
178
|
+
return cached
|
|
179
|
+
|
|
180
|
+
if not shutil.which("curl"):
|
|
181
|
+
raise BuildError(
|
|
182
|
+
"biber is not installed and cannot be downloaded without 'curl' on PATH"
|
|
183
|
+
)
|
|
184
|
+
|
|
185
|
+
console.step(f"Downloading biber {version}")
|
|
186
|
+
cached.parent.mkdir(parents=True, exist_ok=True)
|
|
187
|
+
tmp = cached.parent / "biber.download"
|
|
188
|
+
try:
|
|
189
|
+
downloaded = False
|
|
190
|
+
for url, sha in _biber_sources(version):
|
|
191
|
+
console.detail(f"source: {url}")
|
|
192
|
+
if _download_to(url, tmp, sha, console):
|
|
193
|
+
downloaded = True
|
|
194
|
+
break
|
|
195
|
+
if not downloaded:
|
|
196
|
+
raise BuildError(
|
|
197
|
+
f"failed to download biber {version} from the mirror or SourceForge"
|
|
198
|
+
)
|
|
199
|
+
with tarfile.open(tmp) as tf:
|
|
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())
|
|
218
|
+
except Exception:
|
|
219
|
+
if cached.exists():
|
|
220
|
+
cached.unlink()
|
|
221
|
+
raise
|
|
222
|
+
finally:
|
|
223
|
+
if tmp.exists():
|
|
224
|
+
tmp.unlink()
|
|
225
|
+
|
|
226
|
+
cached.chmod(0o755)
|
|
227
|
+
return cached
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
def _biber_for_build(build_dir: Path, job: str, console: Console) -> Path | None:
|
|
231
|
+
"""Return a correctly-versioned biber if the BCF file reveals a mismatch."""
|
|
232
|
+
bcf = build_dir / f"{job}.bcf"
|
|
233
|
+
if not bcf.exists():
|
|
234
|
+
return None
|
|
235
|
+
try:
|
|
236
|
+
root = ET.parse(bcf).getroot()
|
|
237
|
+
bcf_ver = root.get("version")
|
|
238
|
+
except ET.ParseError:
|
|
239
|
+
return None
|
|
240
|
+
if bcf_ver is None:
|
|
241
|
+
return None
|
|
242
|
+
biber_ver = BCF_TO_BIBER.get(bcf_ver)
|
|
243
|
+
if biber_ver is None:
|
|
244
|
+
console.warn(f"unknown BCF version {bcf_ver!r}; using system biber")
|
|
245
|
+
return None
|
|
246
|
+
# System biber may already be the right version - avoid downloading.
|
|
247
|
+
system_biber = shutil.which("biber")
|
|
248
|
+
if system_biber:
|
|
249
|
+
result = subprocess.run(
|
|
250
|
+
[system_biber, "--version"], capture_output=True, text=True
|
|
251
|
+
)
|
|
252
|
+
if f"biber version: {biber_ver}" in result.stdout:
|
|
253
|
+
return Path(system_biber)
|
|
254
|
+
return _ensure_biber(biber_ver, console)
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
def _env_with_biber(biber: Path) -> dict[str, str]:
|
|
258
|
+
env = os.environ.copy()
|
|
259
|
+
env["PATH"] = str(biber.parent) + os.pathsep + env.get("PATH", "")
|
|
260
|
+
return env
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
def _probe_bcf(cmd: list[str]) -> None:
|
|
264
|
+
"""Run tectonic with a no-op biber so the BCF file is written to build_dir.
|
|
265
|
+
|
|
266
|
+
Tectonic cleans up intermediates when biber fails, so the BCF is never
|
|
267
|
+
persisted on a real failed run. A fake biber that exits 0 lets the TeX
|
|
268
|
+
pass finish and tectonic copy the BCF into ``build_dir``. Output is
|
|
269
|
+
suppressed - the real pass immediately follows.
|
|
270
|
+
"""
|
|
271
|
+
tmpdir = Path(tempfile.mkdtemp(prefix="pytex-fakeb-"))
|
|
272
|
+
try:
|
|
273
|
+
fake = tmpdir / "biber"
|
|
274
|
+
fake.write_text("#!/bin/sh\nexit 0\n")
|
|
275
|
+
fake.chmod(0o755)
|
|
276
|
+
subprocess.run(cmd, env=_env_with_biber(fake), capture_output=True)
|
|
277
|
+
finally:
|
|
278
|
+
shutil.rmtree(tmpdir, ignore_errors=True)
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
def run_tectonic(
|
|
282
|
+
binary: Path,
|
|
283
|
+
tex_file: Path,
|
|
284
|
+
build_dir: Path,
|
|
285
|
+
*,
|
|
286
|
+
shell_escape: bool,
|
|
287
|
+
console: Console,
|
|
288
|
+
) -> None:
|
|
289
|
+
"""Run a single tectonic pass, keeping intermediates for the glossary step."""
|
|
290
|
+
cmd: list[str] = [
|
|
291
|
+
str(binary),
|
|
292
|
+
"--outdir",
|
|
293
|
+
str(build_dir),
|
|
294
|
+
"--keep-intermediates",
|
|
295
|
+
"--keep-logs",
|
|
296
|
+
"--synctex",
|
|
297
|
+
]
|
|
298
|
+
if shell_escape:
|
|
299
|
+
# shell-escape (and a stable cwd for it) is required so inline images
|
|
300
|
+
# can decode their base64 payloads at compile time.
|
|
301
|
+
cmd += ["-Z", "shell-escape"]
|
|
302
|
+
cmd += ["-Z", f"shell-escape-cwd={tex_file.parent.resolve()}"]
|
|
303
|
+
cmd.append(str(tex_file))
|
|
304
|
+
|
|
305
|
+
job = tex_file.stem
|
|
306
|
+
|
|
307
|
+
# Determine the right biber from the BCF. If no BCF exists yet (first build
|
|
308
|
+
# or after a clean), run a silent probe pass with a no-op biber so tectonic
|
|
309
|
+
# writes the BCF to build_dir without actually needing biber installed.
|
|
310
|
+
biber = _biber_for_build(build_dir, job, console)
|
|
311
|
+
if biber is None:
|
|
312
|
+
_probe_bcf(cmd)
|
|
313
|
+
biber = _biber_for_build(build_dir, job, console)
|
|
314
|
+
|
|
315
|
+
env = _env_with_biber(biber) if biber is not None else None
|
|
316
|
+
proc = subprocess.run(cmd, env=env)
|
|
317
|
+
if proc.returncode != 0:
|
|
318
|
+
log = build_dir / f"{tex_file.stem}.log"
|
|
319
|
+
raise BuildError(
|
|
320
|
+
"tectonic failed to compile the document."
|
|
321
|
+
+ (f"\nSee the full log at {log}" if log.exists() else "")
|
|
322
|
+
)
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
def run_makeindex(
|
|
326
|
+
job: str,
|
|
327
|
+
build_dir: Path,
|
|
328
|
+
*,
|
|
329
|
+
console: Console,
|
|
330
|
+
) -> bool:
|
|
331
|
+
"""Resolve glossary/acronym indices for ``glossaries``.
|
|
332
|
+
|
|
333
|
+
Returns ``True`` if any index was (re)built, meaning a further tectonic
|
|
334
|
+
pass is needed. Missing ``makeindex`` is a warning, not a fatal error.
|
|
335
|
+
"""
|
|
336
|
+
makeindex = shutil.which("makeindex")
|
|
337
|
+
style = build_dir / f"{job}.ist"
|
|
338
|
+
|
|
339
|
+
# (input, log, output) triples produced by the glossaries package.
|
|
340
|
+
targets = [
|
|
341
|
+
(f"{job}.glo", f"{job}.glg", f"{job}.gls"),
|
|
342
|
+
(f"{job}.acn", f"{job}.alg", f"{job}.acr"),
|
|
343
|
+
]
|
|
344
|
+
present = [t for t in targets if (build_dir / t[0]).exists()]
|
|
345
|
+
|
|
346
|
+
if not present or not style.exists():
|
|
347
|
+
return False
|
|
348
|
+
|
|
349
|
+
if not makeindex:
|
|
350
|
+
console.warn("glossary entries found but 'makeindex' is not installed")
|
|
351
|
+
console.hint(
|
|
352
|
+
"install a TeX distribution providing 'makeindex'"
|
|
353
|
+
+ " (e.g. TeX Live) so glossaries and acronyms resolve"
|
|
354
|
+
)
|
|
355
|
+
return False
|
|
356
|
+
|
|
357
|
+
console.step("Building glossaries")
|
|
358
|
+
for source, log, output in present:
|
|
359
|
+
proc = subprocess.run(
|
|
360
|
+
[makeindex, "-s", style.name, "-t", log, "-o", output, source],
|
|
361
|
+
cwd=build_dir,
|
|
362
|
+
capture_output=True,
|
|
363
|
+
text=True,
|
|
364
|
+
)
|
|
365
|
+
if proc.returncode != 0:
|
|
366
|
+
console.warn(f"makeindex failed for {source}")
|
|
367
|
+
console.detail(proc.stderr.strip() or proc.stdout.strip())
|
|
368
|
+
return False
|
|
369
|
+
console.detail(f"{source} -> {output}")
|
|
370
|
+
return True
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
from . import (
|
|
2
|
+
boxes,
|
|
3
|
+
citations,
|
|
4
|
+
cleveref_names,
|
|
5
|
+
colors,
|
|
6
|
+
document,
|
|
7
|
+
fonts,
|
|
8
|
+
glossary,
|
|
9
|
+
hyperref_config,
|
|
10
|
+
listings,
|
|
11
|
+
logos,
|
|
12
|
+
pagebreak,
|
|
13
|
+
pagesetup,
|
|
14
|
+
titlepage,
|
|
15
|
+
variants,
|
|
16
|
+
voting,
|
|
17
|
+
watermark,
|
|
18
|
+
wordcount,
|
|
19
|
+
)
|
|
20
|
+
from .boxes import (
|
|
21
|
+
ColoredBox,
|
|
22
|
+
CustomBox,
|
|
23
|
+
DiscussionBox,
|
|
24
|
+
ImportantBox,
|
|
25
|
+
InfoBox,
|
|
26
|
+
SuccessBox,
|
|
27
|
+
WarningBox,
|
|
28
|
+
)
|
|
29
|
+
from .citations import Fcite
|
|
30
|
+
from .cleveref_names import GermanCrefNames
|
|
31
|
+
from .colors import HSRT_PALETTE, HSRTColors
|
|
32
|
+
from .document import HSRTReport
|
|
33
|
+
from .fonts import HSRTFontSetup
|
|
34
|
+
from .glossary import AcrShortcut, HSRTGlossarySetup
|
|
35
|
+
from .hyperref_config import (
|
|
36
|
+
HSRT_CITE_COLOR,
|
|
37
|
+
HSRT_HYPER_OPTIONS,
|
|
38
|
+
HSRT_LINK_COLOR,
|
|
39
|
+
HSRT_URL_COLOR,
|
|
40
|
+
HSRTHyperref,
|
|
41
|
+
)
|
|
42
|
+
from .listings import HSRTListingStyles, style_options
|
|
43
|
+
from .logos import DefaultLogos, Logo, LogoStrip, logo_path
|
|
44
|
+
from .pagebreak import (
|
|
45
|
+
Conditionalpagebreak,
|
|
46
|
+
Critical,
|
|
47
|
+
Keeptogether,
|
|
48
|
+
Smartsection,
|
|
49
|
+
Smartsubsection,
|
|
50
|
+
)
|
|
51
|
+
from .pagesetup import HSRTPageSetup
|
|
52
|
+
from .titlepage import TitlePage, TitlePageDataLine
|
|
53
|
+
from .variants import Variant, default_logo_names
|
|
54
|
+
from .voting import VotingResults
|
|
55
|
+
from .watermark import DraftWatermark, WatermarkCounter
|
|
56
|
+
from .wordcount import WordcountCommands
|
|
57
|
+
|
|
58
|
+
__all__ = [
|
|
59
|
+
"HSRT_CITE_COLOR",
|
|
60
|
+
"HSRT_HYPER_OPTIONS",
|
|
61
|
+
"HSRT_LINK_COLOR",
|
|
62
|
+
"HSRT_PALETTE",
|
|
63
|
+
"HSRT_URL_COLOR",
|
|
64
|
+
"AcrShortcut",
|
|
65
|
+
"ColoredBox",
|
|
66
|
+
"Conditionalpagebreak",
|
|
67
|
+
"Critical",
|
|
68
|
+
"CustomBox",
|
|
69
|
+
"DefaultLogos",
|
|
70
|
+
"DiscussionBox",
|
|
71
|
+
"DraftWatermark",
|
|
72
|
+
"Fcite",
|
|
73
|
+
"GermanCrefNames",
|
|
74
|
+
"HSRTColors",
|
|
75
|
+
"HSRTFontSetup",
|
|
76
|
+
"HSRTGlossarySetup",
|
|
77
|
+
"HSRTHyperref",
|
|
78
|
+
"HSRTListingStyles",
|
|
79
|
+
"HSRTPageSetup",
|
|
80
|
+
"HSRTReport",
|
|
81
|
+
"ImportantBox",
|
|
82
|
+
"InfoBox",
|
|
83
|
+
"Keeptogether",
|
|
84
|
+
"Logo",
|
|
85
|
+
"LogoStrip",
|
|
86
|
+
"Smartsection",
|
|
87
|
+
"Smartsubsection",
|
|
88
|
+
"SuccessBox",
|
|
89
|
+
"TitlePage",
|
|
90
|
+
"TitlePageDataLine",
|
|
91
|
+
"Variant",
|
|
92
|
+
"VotingResults",
|
|
93
|
+
"WarningBox",
|
|
94
|
+
"WatermarkCounter",
|
|
95
|
+
"WordcountCommands",
|
|
96
|
+
"boxes",
|
|
97
|
+
"citations",
|
|
98
|
+
"cleveref_names",
|
|
99
|
+
"colors",
|
|
100
|
+
"default_logo_names",
|
|
101
|
+
"document",
|
|
102
|
+
"fonts",
|
|
103
|
+
"glossary",
|
|
104
|
+
"hyperref_config",
|
|
105
|
+
"listings",
|
|
106
|
+
"logo_path",
|
|
107
|
+
"logos",
|
|
108
|
+
"pagebreak",
|
|
109
|
+
"pagesetup",
|
|
110
|
+
"style_options",
|
|
111
|
+
"titlepage",
|
|
112
|
+
"variants",
|
|
113
|
+
"voting",
|
|
114
|
+
"watermark",
|
|
115
|
+
"wordcount",
|
|
116
|
+
]
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
+
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
3
|
+
|
|
4
|
+
<svg
|
|
5
|
+
width="240mm"
|
|
6
|
+
height="71.4375mm"
|
|
7
|
+
viewBox="0 0 239.99999 71.437526"
|
|
8
|
+
version="1.1"
|
|
9
|
+
id="svg1"
|
|
10
|
+
xml:space="preserve"
|
|
11
|
+
sodipodi:docname="ASTA-Logo_black-only-complex.svg"
|
|
12
|
+
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
|
13
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
14
|
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
15
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
16
|
+
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
|
|
17
|
+
id="namedview1"
|
|
18
|
+
pagecolor="#505050"
|
|
19
|
+
bordercolor="#ffffff"
|
|
20
|
+
borderopacity="1"
|
|
21
|
+
inkscape:showpageshadow="0"
|
|
22
|
+
inkscape:pageopacity="0"
|
|
23
|
+
inkscape:pagecheckerboard="1"
|
|
24
|
+
inkscape:deskcolor="#505050"
|
|
25
|
+
inkscape:document-units="mm"
|
|
26
|
+
inkscape:zoom="0.52056996"
|
|
27
|
+
inkscape:cx="113.33731"
|
|
28
|
+
inkscape:cy="223.79317"
|
|
29
|
+
inkscape:window-width="2560"
|
|
30
|
+
inkscape:window-height="1047"
|
|
31
|
+
inkscape:window-x="0"
|
|
32
|
+
inkscape:window-y="0"
|
|
33
|
+
inkscape:window-maximized="1"
|
|
34
|
+
inkscape:current-layer="layer1" /><defs
|
|
35
|
+
id="defs1"><clipPath
|
|
36
|
+
clipPathUnits="userSpaceOnUse"
|
|
37
|
+
id="clipPath157"><path
|
|
38
|
+
d="m 58.961,783.842 h 113.386 v 29.701 H 58.961 Z"
|
|
39
|
+
transform="translate(-84.798705,-783.84222)"
|
|
40
|
+
id="path157" /></clipPath></defs><g
|
|
41
|
+
id="layer1"
|
|
42
|
+
transform="translate(0,-43.656246)"><path
|
|
43
|
+
d="M 0,0 V 0 29.701 C 0.696,29.005 1.086,28.615 1.782,27.919 V 1.782 C 1.086,1.086 0.696,0.696 0,0"
|
|
44
|
+
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
45
|
+
transform="matrix(2.3186545,0,0,-2.3186545,60.75005,113.80792)"
|
|
46
|
+
clip-path="url(#clipPath157)"
|
|
47
|
+
id="path228" /><path
|
|
48
|
+
style="font-weight:bold;font-size:69.6213px;line-height:0.8;font-family:Blender-Bold;-inkscape-font-specification:'Blender-Bold Bold';text-align:center;letter-spacing:5.59457px;text-anchor:middle;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill"
|
|
49
|
+
d="m 116.35835,90.999077 h -7.79759 l -2.92409,-8.841905 H 89.55415 l -2.924095,8.841905 H 78.83247 L 93.174457,49.36554 h 8.911523 z M 97.630221,57.789717 91.851653,75.195042 h 11.487517 z m 49.456039,33.557466 h -11.83562 q -4.10766,0 -7.93683,-4.595005 -1.74054,-2.019018 -2.43675,-3.829172 l 7.171,-1.879775 q 0.97469,1.462047 1.94939,2.436745 1.04432,0.905077 1.53167,0.905077 h 11.41789 q 0.41773,0 1.87978,-1.462047 1.46205,-1.462047 1.46205,-1.879775 v -4.107657 q 0,-1.044319 -0.83546,-1.183562 l -18.10154,-5.151976 q -2.57599,-0.696213 -4.03803,-2.854473 -1.39243,-2.158261 -1.39243,-4.734249 v -3.481065 q 0,-2.993716 1.67091,-4.943112 1.67091,-1.949396 3.13296,-3.272201 2.50637,-2.297503 5.70895,-2.297503 h 10.16471 q 4.10765,0 7.93683,4.595006 1.74053,2.019018 2.43674,3.829171 l -7.17099,1.879775 q -0.90508,-1.462047 -1.9494,-2.367124 -1.04432,-0.974698 -1.46205,-0.974698 h -9.8166 q -0.41773,0 -1.87978,1.462047 -1.46204,1.462048 -1.46204,1.879775 v 3.272202 q 0,1.044319 0.76583,1.183562 l 18.17116,5.291218 q 2.57599,0.765835 3.96842,2.924095 1.46204,2.15826 1.46204,4.664627 v 4.177278 q 0,2.993716 -1.67091,4.943112 -1.67091,1.949397 -3.13296,3.272201 -2.50636,2.297503 -5.70894,2.297503 z M 168.13683,49.36554 h 29.86754 v 6.96213 h -11.27865 v 34.671407 h -7.31024 V 56.32767 h -11.27865 z m 70.76006,41.633537 h -7.79759 l -2.92409,-8.841905 h -16.08252 l -2.9241,8.841905 h -7.79758 L 215.71299,49.36554 h 8.91153 z m -18.72813,-33.20936 -5.77857,17.405325 h 11.48751 z"
|
|
50
|
+
id="text1"
|
|
51
|
+
aria-label="ASTA" /><path
|
|
52
|
+
style="font-weight:500;font-size:19.5151px;line-height:0.8;font-family:Blender-Medium;-inkscape-font-specification:'Blender-Medium Medium';text-align:center;letter-spacing:0px;text-anchor:middle;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill"
|
|
53
|
+
d="m 84.374802,108.9737 h -1.795389 l -2.322297,-4.87877 h -2.712599 v 4.87877 H 75.944279 V 97.323186 h 5.522773 q 0.663514,0 1.151391,0.351272 0.195151,0.136606 0.507393,0.448848 0.331757,0.312241 0.468362,0.507392 0.331757,0.507393 0.331757,1.170906 v 1.814906 q 0,0.68303 -0.331757,1.1709 -0.136605,0.19516 -0.468362,0.5074 -0.312242,0.31224 -0.507393,0.44884 -0.273211,0.19516 -0.663513,0.29273 z M 81.291416,98.864879 h -3.746899 v 3.688351 h 3.746899 q 0.312242,0 0.663514,-0.37078 0.370787,-0.35128 0.370787,-0.644 v -1.658785 q 0,-0.273212 -0.370787,-0.663514 -0.351272,-0.351272 -0.663514,-0.351272 z m 12.040808,4.059141 v 2.57599 h -5.542289 v 1.09285 q 0,0.29273 0.370787,0.66351 0.390302,0.37079 0.663514,0.37079 h 2.088115 q 0.09758,0 0.195151,-0.039 0.117091,-0.0586 0.234182,-0.17564 0.11709,-0.1366 0.175636,-0.19515 0.05854,-0.0585 0.195151,-0.25369 0.15612,-0.19515 0.175635,-0.21467 l 1.405088,0.44885 q -0.99527,1.87345 -2.400358,1.87345 h -2.146661 q -0.683028,0 -1.170906,-0.33176 -0.195151,-0.13661 -0.507392,-0.44885 -0.312242,-0.33175 -0.448848,-0.5269 -0.351272,-0.48788 -0.351272,-1.1514 v -3.68835 q 0,-0.68303 0.351272,-1.15139 0.136606,-0.19515 0.448848,-0.50739 0.312241,-0.33176 0.507392,-0.46837 0.487878,-0.33175 1.170906,-0.33175 h 2.127146 q 0.663514,0 1.151391,0.33175 0.195151,0.13661 0.507393,0.46837 0.331756,0.31224 0.468362,0.50739 0.331757,0.46836 0.331757,1.15139 z m -4.507988,-1.01478 q -0.292727,0 -0.663514,0.37078 -0.370787,0.37079 -0.370787,0.66352 v 1.1709 h 4.020111 v -1.1709 q 0,-0.29273 -0.370787,-0.66352 -0.351272,-0.37078 -0.663513,-0.37078 z m 13.875224,7.06446 h -1.48315 l -0.11709,-0.70254 q -0.91721,0.80012 -1.463631,0.80012 h -1.580723 q -0.663514,0 -1.151391,-0.33176 -0.195151,-0.13661 -0.526908,-0.44885 -0.312241,-0.33175 -0.448847,-0.5269 -0.331757,-0.5074 -0.331757,-1.1514 v -6.04968 h 1.522178 v 6.03017 q 0,0.29273 0.370787,0.66351 0.370787,0.37079 0.663513,0.37079 h 1.424603 q 0.312241,0 0.780606,-0.37079 0.46836,-0.3903 0.644,-0.68303 v -6.01065 h 1.52217 v 6.83029 z m 6.86931,-8.41101 v 1.44412 h -2.47842 v 4.48847 q 0,0.29273 0.37079,0.66352 0.3903,0.37078 0.66351,0.37078 h 1.17091 v 1.44412 h -1.24897 q -0.68303,0 -1.1709,-0.33176 -0.19515,-0.1366 -0.5074,-0.44884 -0.31224,-0.33176 -0.44884,-0.52691 -0.35128,-0.48788 -0.35128,-1.15139 v -4.50799 h -1.32702 v -1.44412 h 1.32702 v -3.161443 h 1.52218 v 3.161443 z m 3.59079,8.41101 h -1.54169 q -0.039,-0.21466 -0.11709,-0.68303 -0.0586,-0.48787 -0.0976,-0.70254 V 97.323186 h 1.52218 v 10.050274 q 0.039,0.31224 0.23418,1.60024 z m 3.92253,-9.874639 h -1.73684 v -1.79539 h 1.73684 z m -0.0976,9.874639 h -1.52218 v -8.41101 h 1.52218 z m 9.11355,-7.20107 q 0.35127,0.46836 0.35127,1.15139 v 6.04968 h -1.52218 v -6.03016 q 0,-0.29273 -0.37079,-0.66352 -0.37078,-0.37078 -0.66351,-0.37078 h -1.4246 q -0.29273,0 -0.72206,0.35127 -0.42933,0.35127 -0.70254,0.68303 v 6.03016 h -1.52218 v -6.8498 l -0.17564,-1.56121 h 1.48315 l 0.13661,0.68303 q 0.93672,-0.7806 1.44411,-0.7806 h 1.56121 q 0.66351,0 1.17091,0.33175 0.19515,0.13661 0.50739,0.46837 0.31224,0.31224 0.44885,0.50739 z m 7.20106,10.44058 h -1.95151 q -1.38557,0 -2.41987,-1.81491 l 1.4246,-0.44884 q 0.56594,0.81963 0.93673,0.81963 h 1.93199 q 0.29273,0 0.66352,-0.37079 0.37078,-0.37078 0.37078,-0.66351 v -1.46363 q -0.80012,0.80012 -1.4246,0.80012 h -1.63927 q -0.68303,0 -1.1709,-0.33176 -0.19515,-0.13661 -0.5074,-0.44885 -0.31224,-0.33175 -0.44884,-0.5269 -0.35127,-0.48788 -0.35127,-1.1514 v -3.68835 q 0,-0.68303 0.35127,-1.15139 0.1366,-0.19515 0.44884,-0.50739 0.31225,-0.33176 0.5074,-0.46837 0.48787,-0.33175 1.1709,-0.33175 h 1.65879 q 0.54642,0 1.46363,0.80012 l 0.0976,-0.70255 h 1.50267 l -0.13661,1.56121 v 7.63041 q 0,0.68302 -0.35127,1.15139 -0.13661,0.19515 -0.44885,0.50739 -0.31224,0.33176 -0.50739,0.46836 -0.50739,0.33176 -1.17091,0.33176 z m -3.06387,-9.26967 v 3.64932 q 0,0.29273 0.37079,0.66351 0.3903,0.37079 0.66351,0.37079 h 1.5417 q 0.21466,0 0.72206,-0.40982 0.5269,-0.40981 0.72205,-0.70254 v -3.53223 q -0.17563,-0.27322 -0.70254,-0.66352 -0.52691,-0.40981 -0.76109,-0.40981 h -1.52218 q -0.29272,0 -0.66351,0.37078 -0.37079,0.37079 -0.37079,0.66352 z m 14.90953,-0.0195 v 2.57599 h -5.54229 v 1.09285 q 0,0.29273 0.37079,0.66351 0.3903,0.37079 0.66351,0.37079 h 2.08812 q 0.0976,0 0.19515,-0.039 0.11709,-0.0586 0.23418,-0.17564 0.11709,-0.1366 0.17564,-0.19515 0.0585,-0.0585 0.19515,-0.25369 0.15612,-0.19515 0.17564,-0.21467 l 1.40508,0.44885 q -0.99527,1.87345 -2.40036,1.87345 h -2.14666 q -0.68302,0 -1.1709,-0.33176 -0.19515,-0.13661 -0.50739,-0.44885 -0.31225,-0.33175 -0.44885,-0.5269 -0.35127,-0.48788 -0.35127,-1.1514 v -3.68835 q 0,-0.68303 0.35127,-1.15139 0.1366,-0.19515 0.44885,-0.50739 0.31224,-0.33176 0.50739,-0.46837 0.48788,-0.33175 1.1709,-0.33175 h 2.12715 q 0.66351,0 1.15139,0.33175 0.19515,0.13661 0.50739,0.46837 0.33176,0.31224 0.46837,0.50739 0.33175,0.46836 0.33175,1.15139 z m -4.50799,-1.01478 q -0.29272,0 -0.66351,0.37078 -0.37079,0.37079 -0.37079,0.66352 v 1.1709 h 4.02011 v -1.1709 q 0,-0.29273 -0.37078,-0.66352 -0.35127,-0.37078 -0.66352,-0.37078 z m 13.42638,-0.13661 q 0.35127,0.46836 0.35127,1.15139 v 6.04968 h -1.52218 v -6.03016 q 0,-0.29273 -0.37079,-0.66352 -0.37078,-0.37078 -0.66351,-0.37078 h -1.4246 q -0.29273,0 -0.72206,0.35127 -0.42933,0.35127 -0.70254,0.68303 v 6.03016 h -1.52218 v -6.8498 l -0.17564,-1.56121 h 1.48315 l 0.13661,0.68303 q 0.93672,-0.7806 1.44411,-0.7806 h 1.56121 q 0.66351,0 1.17091,0.33175 0.19515,0.13661 0.50739,0.46837 0.31224,0.31224 0.44885,0.50739 z m 12.76288,7.29865 h -2.51745 q -0.78061,0 -1.30751,-0.46837 -0.5074,-0.42933 -0.85867,-0.81963 -0.60497,-0.66351 -0.60497,-1.48315 v -8.976944 h 1.60024 v 9.035494 q 0,0.21466 0.48788,0.70254 0.50739,0.48788 0.70254,0.48788 h 2.45891 q 0.21466,0 0.70254,-0.48788 0.50739,-0.50739 0.50739,-0.70254 v -9.035494 h 1.60024 v 8.976944 q 0,0.78061 -0.46836,1.32703 -0.44885,0.48788 -0.83915,0.83915 -0.62448,0.60497 -1.46363,0.60497 z m 12.0213,-7.29865 q 0.35128,0.46836 0.35128,1.15139 v 6.04968 h -1.52218 v -6.03016 q 0,-0.29273 -0.37079,-0.66352 -0.37079,-0.37078 -0.66351,-0.37078 h -1.4246 q -0.29273,0 -0.72206,0.35127 -0.42934,0.35127 -0.70255,0.68303 v 6.03016 h -1.52217 v -6.8498 l -0.17564,-1.56121 h 1.48315 l 0.1366,0.68303 q 0.93673,-0.7806 1.44412,-0.7806 h 1.56121 q 0.66351,0 1.1709,0.33175 0.19516,0.13661 0.5074,0.46837 0.31224,0.31224 0.44884,0.50739 z m 4.41041,-2.673569 h -1.73684 v -1.79539 h 1.73684 z m -0.0976,9.874639 h -1.52218 v -8.41101 h 1.52218 z m 5.32762,-1.89296 2.22472,-6.51805 h 1.61975 l -2.96629,8.41101 h -1.77588 l -2.96629,-8.41101 h 1.65878 z m 12.17742,-4.15672 v 2.57599 h -5.54229 v 1.09285 q 0,0.29273 0.37079,0.66351 0.3903,0.37079 0.66351,0.37079 h 2.08812 q 0.0976,0 0.19515,-0.039 0.11709,-0.0586 0.23418,-0.17564 0.11709,-0.1366 0.17563,-0.19515 0.0585,-0.0585 0.19516,-0.25369 0.15612,-0.19515 0.17563,-0.21467 l 1.40509,0.44885 q -0.99527,1.87345 -2.40036,1.87345 h -2.14666 q -0.68303,0 -1.17091,-0.33176 -0.19515,-0.13661 -0.50739,-0.44885 -0.31224,-0.33175 -0.44885,-0.5269 -0.35127,-0.48788 -0.35127,-1.1514 v -3.68835 q 0,-0.68303 0.35127,-1.15139 0.13661,-0.19515 0.44885,-0.50739 0.31224,-0.33176 0.50739,-0.46837 0.48788,-0.33175 1.17091,-0.33175 h 2.12715 q 0.66351,0 1.15139,0.33175 0.19515,0.13661 0.50739,0.46837 0.33176,0.31224 0.46836,0.50739 0.33176,0.46836 0.33176,1.15139 z m -4.50799,-1.01478 q -0.29273,0 -0.66351,0.37078 -0.37079,0.37079 -0.37079,0.66352 v 1.1709 h 4.02011 v -1.1709 q 0,-0.29273 -0.37079,-0.66352 -0.35127,-0.37078 -0.66351,-0.37078 z m 12.09935,-1.19043 -0.46836,1.288 q -0.19515,-0.0976 -0.44884,-0.0976 h -1.38558 q -0.31224,0 -0.7806,0.37078 -0.46836,0.37079 -0.644,0.66352 v 6.03016 h -1.52218 v -6.8498 l -0.17563,-1.56121 h 1.46363 l 0.13661,0.70255 q 0.89769,-0.80012 1.46363,-0.80012 h 1.40508 q 0.48788,0 0.95624,0.25369 z m 5.71792,8.35247 h -2.40036 q -1.40509,0 -2.40036,-1.87345 l 1.40509,-0.44885 q 0.62448,0.87818 0.93672,0.87818 h 2.38085 q 0.29272,0 0.66351,-0.37079 0.37079,-0.3903 0.37079,-0.66351 v -0.50739 q 0,-0.46837 -0.48788,-0.5074 l -3.31757,-0.29272 q -0.76109,-0.0585 -1.24896,-0.54643 -0.46837,-0.50739 -0.46837,-1.32702 v -0.48788 q 0,-0.68303 0.33176,-1.15139 0.13661,-0.19515 0.44885,-0.50739 0.33175,-0.33176 0.5269,-0.46837 0.46837,-0.33175 1.1514,-0.33175 h 2.0686 q 1.36605,0 2.41987,1.85393 l -1.4246,0.44885 q -0.62449,-0.85866 -0.93673,-0.85866 h -2.04908 q -0.27322,0 -0.66352,0.37078 -0.35127,0.35127 -0.35127,0.66352 v 0.42933 q 0,0.44884 0.48788,0.48788 l 3.2395,0.31224 q 0.78061,0.0781 1.288,0.58545 0.50739,0.48788 0.50739,1.30751 v 0.54642 q 0,0.66352 -0.35127,1.1514 -0.1366,0.19515 -0.44885,0.5269 -0.31224,0.31224 -0.50739,0.44885 -0.48788,0.33176 -1.1709,0.33176 z m 6.28384,-9.972219 h -1.73684 v -1.79539 h 1.73684 z m -0.0976,9.874639 h -1.52217 v -8.41101 h 1.52217 z m 7.00593,-8.41101 v 1.44412 h -2.47842 v 4.48847 q 0,0.29273 0.37078,0.66352 0.39031,0.37078 0.66352,0.37078 h 1.1709 v 1.44412 h -1.24896 q -0.68303,0 -1.17091,-0.33176 -0.19515,-0.1366 -0.50739,-0.44884 -0.31224,-0.33176 -0.44885,-0.52691 -0.35127,-0.48788 -0.35127,-1.15139 v -4.50799 h -1.32703 v -1.44412 h 1.32703 v -3.161443 h 1.52218 v 3.161443 z m 4.78121,6.53756 2.20521,-6.53756 h 1.60024 l -4.03963,11.59197 h -1.52218 l 1.13188,-3.18096 h -0.31224 l -2.9663,-8.41101 h 1.65879 z"
|
|
54
|
+
id="text2"
|
|
55
|
+
aria-label="Reutlingen University" /><path
|
|
56
|
+
id="polyline12-3-6-4"
|
|
57
|
+
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
|
58
|
+
d="m 8.822073,128.83893 c -0.6361326,0.006 -1.2719273,0.0473 -1.9038781,0.12464 -0.5800689,0.071 -1.5135609,0.24033 -2.0816397,0.37749 -0.6492005,0.15675 -1.2885666,0.3521 -1.9146076,0.58348 -0.5481631,0.20259 -0.5131347,0.47336 0.058538,0.59493 2.9509899,0.62754 5.9711398,1.80027 8.8163284,3.0101 0.537817,0.22869 1.426809,0.28143 1.995848,0.14819 1.958682,-0.45863 3.987694,-0.614 5.991774,-0.43805 0.582179,0.0511 0.702175,-0.19834 0.245489,-0.56299 -2.595508,-2.07238 -5.795766,-3.36342 -9.095187,-3.73036 -0.580836,-0.0646 -1.5282803,-0.11307 -2.112665,-0.10743 z m -8.55566959,2.32733 c -2.44240381,1.39799 -4.55765001,3.37187 -6.08501941,5.73589 -0.3171424,0.49086 -0.072021,0.90648 0.5124799,0.90645 3.2971384,-1.1e-4 6.5942472,-3.2e-4 9.891386,-4.4e-4 0.5845013,-2e-5 1.4143419,-0.31346 1.8771438,-0.67034 1.3947984,-1.07555 2.9425551,-1.94757 4.5792753,-2.59739 0.543184,-0.21566 0.558446,-0.55074 0.01937,-0.77664 -2.8391588,-1.18976 -5.817415,-2.30468 -8.6817126,-2.85447 -0.5738918,-0.11015 -1.1188578,-0.18383 -1.1793956,-0.24129 l 0,-4e-5 z m 16.13644859,3.91701 c -0.447385,0.0453 -0.376692,0.29819 0.137922,0.57518 3.554419,1.91313 7.069403,5.33977 9.847113,12.13348 0.221201,0.54101 0.441895,0.5132 0.468681,-0.0706 0.180941,-3.94362 -0.965014,-7.94068 -3.218123,-11.1833 -0.33348,-0.47994 -1.083832,-0.98852 -1.653569,-1.11862 -1.137796,-0.2598 -2.301738,-0.39965 -3.468403,-0.42245 -0.584298,-0.0114 -1.532183,0.0274 -2.113621,0.0863 z m -2.722882,0.49402 c -1.242292,0.32822 -2.44795,0.79331 -3.585533,1.39135 -0.5172725,0.27194 -1.0910917,0.86181 -0.91515,0.84258 5.867554,0.40567 10.503658,2.59281 13.860687,6.05313 0.40696,0.41948 1.025106,1.13865 1.387738,1.59702 0.140834,0.17802 0.279391,0.35812 0.414933,0.54049 0.348594,0.46901 0.416078,0.43287 0.162966,-0.094 -2.684074,-5.58668 -5.895551,-8.40666 -9.124966,-10.03018 -0.522153,-0.2625 -1.053292,-0.48897 -1.169913,-0.53976 l -2e-6,3e-5 z"
|
|
59
|
+
transform="translate(10.205122,-72.949162)" /><path
|
|
60
|
+
id="polyline12-3-6-4-8"
|
|
61
|
+
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
|
62
|
+
d="m 8.822073,128.83893 c -0.6361326,0.006 -1.2719273,0.0473 -1.9038781,0.12464 -0.5800689,0.071 -1.5135609,0.24033 -2.0816397,0.37749 -0.6492005,0.15675 -1.2885666,0.3521 -1.9146076,0.58348 -0.5481631,0.20259 -0.5131347,0.47336 0.058538,0.59493 2.9509899,0.62754 5.9711398,1.80027 8.8163284,3.0101 0.537817,0.22869 1.426809,0.28143 1.995848,0.14819 1.958682,-0.45863 3.987694,-0.614 5.991774,-0.43805 0.582179,0.0511 0.702175,-0.19834 0.245489,-0.56299 -2.595508,-2.07238 -5.795766,-3.36342 -9.095187,-3.73036 -0.580836,-0.0646 -1.5282803,-0.11307 -2.112665,-0.10743 z m -8.55566959,2.32733 c -2.44240381,1.39799 -4.55765001,3.37187 -6.08501941,5.73589 -0.3171424,0.49086 -0.072021,0.90648 0.5124799,0.90645 3.2971384,-1.1e-4 6.5942472,-3.2e-4 9.891386,-4.4e-4 0.5845013,-2e-5 1.4143419,-0.31346 1.8771438,-0.67034 1.3947984,-1.07555 2.9425551,-1.94757 4.5792753,-2.59739 0.543184,-0.21566 0.558446,-0.55074 0.01937,-0.77664 -2.8391588,-1.18976 -5.817415,-2.30468 -8.6817126,-2.85447 -0.5738918,-0.11015 -1.1188578,-0.18383 -1.1793956,-0.24129 l 0,-4e-5 z m 16.13644859,3.91701 c -0.447385,0.0453 -0.376692,0.29819 0.137922,0.57518 3.554419,1.91313 7.069403,5.33977 9.847113,12.13348 0.221201,0.54101 0.441895,0.5132 0.468681,-0.0706 0.180941,-3.94362 -0.965014,-7.94068 -3.218123,-11.1833 -0.33348,-0.47994 -1.083832,-0.98852 -1.653569,-1.11862 -1.137796,-0.2598 -2.301738,-0.39965 -3.468403,-0.42245 -0.584298,-0.0114 -1.532183,0.0274 -2.113621,0.0863 z m -2.722882,0.49402 c -1.242292,0.32822 -2.44795,0.79331 -3.585533,1.39135 -0.5172725,0.27194 -1.0910917,0.86181 -0.91515,0.84258 5.867554,0.40567 10.503658,2.59281 13.860687,6.05313 0.40696,0.41948 1.025106,1.13865 1.387738,1.59702 0.140834,0.17802 0.279391,0.35812 0.414933,0.54049 0.348594,0.46901 0.416078,0.43287 0.162966,-0.094 -2.684074,-5.58668 -5.895551,-8.40666 -9.124966,-10.03018 -0.522153,-0.2625 -1.053292,-0.48897 -1.169913,-0.53976 l -2e-6,3e-5 z"
|
|
63
|
+
transform="rotate(-60,-39.930999,107.02967)" /><path
|
|
64
|
+
id="polyline12-3-6-4-6"
|
|
65
|
+
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
|
66
|
+
d="m 8.822073,128.83893 c -0.6361326,0.006 -1.2719273,0.0473 -1.9038781,0.12464 -0.5800689,0.071 -1.5135609,0.24033 -2.0816397,0.37749 -0.6492005,0.15675 -1.2885666,0.3521 -1.9146076,0.58348 -0.5481631,0.20259 -0.5131347,0.47336 0.058538,0.59493 2.9509899,0.62754 5.9711398,1.80027 8.8163284,3.0101 0.537817,0.22869 1.426809,0.28143 1.995848,0.14819 1.958682,-0.45863 3.987694,-0.614 5.991774,-0.43805 0.582179,0.0511 0.702175,-0.19834 0.245489,-0.56299 -2.595508,-2.07238 -5.795766,-3.36342 -9.095187,-3.73036 -0.580836,-0.0646 -1.5282803,-0.11307 -2.112665,-0.10743 z m -8.55566959,2.32733 c -2.44240381,1.39799 -4.55765001,3.37187 -6.08501941,5.73589 -0.3171424,0.49086 -0.072021,0.90648 0.5124799,0.90645 3.2971384,-1.1e-4 6.5942472,-3.2e-4 9.891386,-4.4e-4 0.5845013,-2e-5 1.4143419,-0.31346 1.8771438,-0.67034 1.3947984,-1.07555 2.9425551,-1.94757 4.5792753,-2.59739 0.543184,-0.21566 0.558446,-0.55074 0.01937,-0.77664 -2.8391588,-1.18976 -5.817415,-2.30468 -8.6817126,-2.85447 -0.5738918,-0.11015 -1.1188578,-0.18383 -1.1793956,-0.24129 l 0,-4e-5 z m 16.13644859,3.91701 c -0.447385,0.0453 -0.376692,0.29819 0.137922,0.57518 3.554419,1.91313 7.069403,5.33977 9.847113,12.13348 0.221201,0.54101 0.441895,0.5132 0.468681,-0.0706 0.180941,-3.94362 -0.965014,-7.94068 -3.218123,-11.1833 -0.33348,-0.47994 -1.083832,-0.98852 -1.653569,-1.11862 -1.137796,-0.2598 -2.301738,-0.39965 -3.468403,-0.42245 -0.584298,-0.0114 -1.532183,0.0274 -2.113621,0.0863 z m -2.722882,0.49402 c -1.242292,0.32822 -2.44795,0.79331 -3.585533,1.39135 -0.5172725,0.27194 -1.0910917,0.86181 -0.91515,0.84258 5.867554,0.40567 10.503658,2.59281 13.860687,6.05313 0.40696,0.41948 1.025106,1.13865 1.387738,1.59702 0.140834,0.17802 0.279391,0.35812 0.414933,0.54049 0.348594,0.46901 0.416078,0.43287 0.162966,-0.094 -2.684074,-5.58668 -5.895551,-8.40666 -9.124966,-10.03018 -0.522153,-0.2625 -1.053292,-0.48897 -1.169913,-0.53976 l -2e-6,3e-5 z"
|
|
67
|
+
transform="rotate(-120,2.1867408,112.92166)" /><path
|
|
68
|
+
id="polyline12-3-6-4-6-3"
|
|
69
|
+
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
|
70
|
+
d="m 8.822073,128.83893 c -0.6361326,0.006 -1.2719273,0.0473 -1.9038781,0.12464 -0.5800689,0.071 -1.5135609,0.24033 -2.0816397,0.37749 -0.6492005,0.15675 -1.2885666,0.3521 -1.9146076,0.58348 -0.5481631,0.20259 -0.5131347,0.47336 0.058538,0.59493 2.9509899,0.62754 5.9711398,1.80027 8.8163284,3.0101 0.537817,0.22869 1.426809,0.28143 1.995848,0.14819 1.958682,-0.45863 3.987694,-0.614 5.991774,-0.43805 0.582179,0.0511 0.702175,-0.19834 0.245489,-0.56299 -2.595508,-2.07238 -5.795766,-3.36342 -9.095187,-3.73036 -0.580836,-0.0646 -1.5282803,-0.11307 -2.112665,-0.10743 z m -8.55566959,2.32733 c -2.44240381,1.39799 -4.55765001,3.37187 -6.08501941,5.73589 -0.3171424,0.49086 -0.072021,0.90648 0.5124799,0.90645 3.2971384,-1.1e-4 6.5942472,-3.2e-4 9.891386,-4.4e-4 0.5845013,-2e-5 1.4143419,-0.31346 1.8771438,-0.67034 1.3947984,-1.07555 2.9425551,-1.94757 4.5792753,-2.59739 0.543184,-0.21566 0.558446,-0.55074 0.01937,-0.77664 -2.8391588,-1.18976 -5.817415,-2.30468 -8.6817126,-2.85447 -0.5738918,-0.11015 -1.1188578,-0.18383 -1.1793956,-0.24129 l 0,-4e-5 z m 16.13644859,3.91701 c -0.447385,0.0453 -0.376692,0.29819 0.137922,0.57518 3.554419,1.91313 7.069403,5.33977 9.847113,12.13348 0.221201,0.54101 0.441895,0.5132 0.468681,-0.0706 0.180941,-3.94362 -0.965014,-7.94068 -3.218123,-11.1833 -0.33348,-0.47994 -1.083832,-0.98852 -1.653569,-1.11862 -1.137796,-0.2598 -2.301738,-0.39965 -3.468403,-0.42245 -0.584298,-0.0114 -1.532183,0.0274 -2.113621,0.0863 z m -2.722882,0.49402 c -1.242292,0.32822 -2.44795,0.79331 -3.585533,1.39135 -0.5172725,0.27194 -1.0910917,0.86181 -0.91515,0.84258 5.867554,0.40567 10.503658,2.59281 13.860687,6.05313 0.40696,0.41948 1.025106,1.13865 1.387738,1.59702 0.140834,0.17802 0.279391,0.35812 0.414933,0.54049 0.348594,0.46901 0.416078,0.43287 0.162966,-0.094 -2.684074,-5.58668 -5.895551,-8.40666 -9.124966,-10.03018 -0.522153,-0.2625 -1.053292,-0.48897 -1.169913,-0.53976 l -2e-6,3e-5 z"
|
|
71
|
+
transform="rotate(180,23.245443,115.8681)" /><path
|
|
72
|
+
id="polyline12-3-6-4-6-3-8"
|
|
73
|
+
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
|
74
|
+
d="m 8.822073,128.83893 c -0.6361326,0.006 -1.2719273,0.0473 -1.9038781,0.12464 -0.5800689,0.071 -1.5135609,0.24033 -2.0816397,0.37749 -0.6492005,0.15675 -1.2885666,0.3521 -1.9146076,0.58348 -0.5481631,0.20259 -0.5131347,0.47336 0.058538,0.59493 2.9509899,0.62754 5.9711398,1.80027 8.8163284,3.0101 0.537817,0.22869 1.426809,0.28143 1.995848,0.14819 1.958682,-0.45863 3.987694,-0.614 5.991774,-0.43805 0.582179,0.0511 0.702175,-0.19834 0.245489,-0.56299 -2.595508,-2.07238 -5.795766,-3.36342 -9.095187,-3.73036 -0.580836,-0.0646 -1.5282803,-0.11307 -2.112665,-0.10743 z m -8.55566959,2.32733 c -2.44240381,1.39799 -4.55765001,3.37187 -6.08501941,5.73589 -0.3171424,0.49086 -0.072021,0.90648 0.5124799,0.90645 3.2971384,-1.1e-4 6.5942472,-3.2e-4 9.891386,-4.4e-4 0.5845013,-2e-5 1.4143419,-0.31346 1.8771438,-0.67034 1.3947984,-1.07555 2.9425551,-1.94757 4.5792753,-2.59739 0.543184,-0.21566 0.558446,-0.55074 0.01937,-0.77664 -2.8391588,-1.18976 -5.817415,-2.30468 -8.6817126,-2.85447 -0.5738918,-0.11015 -1.1188578,-0.18383 -1.1793956,-0.24129 l 0,-4e-5 z m 16.13644859,3.91701 c -0.447385,0.0453 -0.376692,0.29819 0.137922,0.57518 3.554419,1.91313 7.069403,5.33977 9.847113,12.13348 0.221201,0.54101 0.441895,0.5132 0.468681,-0.0706 0.180941,-3.94362 -0.965014,-7.94068 -3.218123,-11.1833 -0.33348,-0.47994 -1.083832,-0.98852 -1.653569,-1.11862 -1.137796,-0.2598 -2.301738,-0.39965 -3.468403,-0.42245 -0.584298,-0.0114 -1.532183,0.0274 -2.113621,0.0863 z m -2.722882,0.49402 c -1.242292,0.32822 -2.44795,0.79331 -3.585533,1.39135 -0.5172725,0.27194 -1.0910917,0.86181 -0.91515,0.84258 5.867554,0.40567 10.503658,2.59281 13.860687,6.05313 0.40696,0.41948 1.025106,1.13865 1.387738,1.59702 0.140834,0.17802 0.279391,0.35812 0.414933,0.54049 0.348594,0.46901 0.416078,0.43287 0.162966,-0.094 -2.684074,-5.58668 -5.895551,-8.40666 -9.124966,-10.03018 -0.522153,-0.2625 -1.053292,-0.48897 -1.169913,-0.53976 l -2e-6,3e-5 z"
|
|
75
|
+
transform="rotate(120,44.303623,118.81435)" /><path
|
|
76
|
+
id="polyline12-3-6-4-6-3-8-9"
|
|
77
|
+
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
|
78
|
+
d="m 8.822073,128.83893 c -0.6361326,0.006 -1.2719273,0.0473 -1.9038781,0.12464 -0.5800689,0.071 -1.5135609,0.24033 -2.0816397,0.37749 -0.6492005,0.15675 -1.2885666,0.3521 -1.9146076,0.58348 -0.5481631,0.20259 -0.5131347,0.47336 0.058538,0.59493 2.9509899,0.62754 5.9711398,1.80027 8.8163284,3.0101 0.537817,0.22869 1.426809,0.28143 1.995848,0.14819 1.958682,-0.45863 3.987694,-0.614 5.991774,-0.43805 0.582179,0.0511 0.702175,-0.19834 0.245489,-0.56299 -2.595508,-2.07238 -5.795766,-3.36342 -9.095187,-3.73036 -0.580836,-0.0646 -1.5282803,-0.11307 -2.112665,-0.10743 z m -8.55566959,2.32733 c -2.44240381,1.39799 -4.55765001,3.37187 -6.08501941,5.73589 -0.3171424,0.49086 -0.072021,0.90648 0.5124799,0.90645 3.2971384,-1.1e-4 6.5942472,-3.2e-4 9.891386,-4.4e-4 0.5845013,-2e-5 1.4143419,-0.31346 1.8771438,-0.67034 1.3947984,-1.07555 2.9425551,-1.94757 4.5792753,-2.59739 0.543184,-0.21566 0.558446,-0.55074 0.01937,-0.77664 -2.8391588,-1.18976 -5.817415,-2.30468 -8.6817126,-2.85447 -0.5738918,-0.11015 -1.1188578,-0.18383 -1.1793956,-0.24129 l 0,-4e-5 z m 16.13644859,3.91701 c -0.447385,0.0453 -0.376692,0.29819 0.137922,0.57518 3.554419,1.91313 7.069403,5.33977 9.847113,12.13348 0.221201,0.54101 0.441895,0.5132 0.468681,-0.0706 0.180941,-3.94362 -0.965014,-7.94068 -3.218123,-11.1833 -0.33348,-0.47994 -1.083832,-0.98852 -1.653569,-1.11862 -1.137796,-0.2598 -2.301738,-0.39965 -3.468403,-0.42245 -0.584298,-0.0114 -1.532183,0.0274 -2.113621,0.0863 z m -2.722882,0.49402 c -1.242292,0.32822 -2.44795,0.79331 -3.585533,1.39135 -0.5172725,0.27194 -1.0910917,0.86181 -0.91515,0.84258 5.867554,0.40567 10.503658,2.59281 13.860687,6.05313 0.40696,0.41948 1.025106,1.13865 1.387738,1.59702 0.140834,0.17802 0.279391,0.35812 0.414933,0.54049 0.348594,0.46901 0.416078,0.43287 0.162966,-0.094 -2.684074,-5.58668 -5.895551,-8.40666 -9.124966,-10.03018 -0.522153,-0.2625 -1.053292,-0.48897 -1.169913,-0.53976 l -2e-6,3e-5 z"
|
|
79
|
+
transform="rotate(60,86.420319,124.70595)" /></g></svg>
|
|
Binary file
|
|
Binary file
|