From 0236f65bce5b6e81ff653325f9e0187c1845dda1 Mon Sep 17 00:00:00 2001 From: "Prof. Dr. Matthias Jung DL9MJ" Date: Tue, 13 May 2025 23:25:09 +0200 Subject: [PATCH] feature: add photos --- renderer/fifty_ohm_html_renderer.py | 23 ++++++++++++++++++----- renderer/fifty_ohm_latex_renderer.py | 16 +++++++++++++--- renderer/photo.py | 19 +++++++++++++++++++ 3 files changed, 50 insertions(+), 8 deletions(-) create mode 100644 renderer/photo.py diff --git a/renderer/fifty_ohm_html_renderer.py b/renderer/fifty_ohm_html_renderer.py index 9dea785..9051e3c 100644 --- a/renderer/fifty_ohm_html_renderer.py +++ b/renderer/fifty_ohm_html_renderer.py @@ -2,13 +2,13 @@ import textwrap from mistletoe import Document, HtmlRenderer -from renderer.picture import Picture - from .comment import BlockComment from .dash import Dash from .halfwidth_spaces import HalfwidthSpaces from .morse import Morse from .nonbreaking_spaces import NonbreakingSpaces, NonbreakingSpacesDots +from .photo import Photo +from .picture import Picture from .question import Question from .quote import Quote from .references import References @@ -37,7 +37,8 @@ class FiftyOhmHtmlRenderer(HtmlRenderer): NonbreakingSpacesDots, References, Question, - Picture + Picture, + Photo ) self.question_renderer = question_renderer @@ -176,10 +177,22 @@ class FiftyOhmHtmlRenderer(HtmlRenderer): def render_picture_helper(id, ref, text, number): return f"""
- +
Abbildung {number}: {text}
""" def render_picture(self, token) : - return self.render_picture_helper(token.id, token.ref, token.text, token.number) \ No newline at end of file + return self.render_picture_helper(token.id, token.ref, token.text, token.number) + + @staticmethod + def render_photo_helper(id, ref, text, number): + return f""" +
+ +
Abbildung {number}: {text}
+
+ """ + + def render_photo(self, token) : + return self.render_photo_helper(token.id, token.ref, token.text, token.number) \ No newline at end of file diff --git a/renderer/fifty_ohm_latex_renderer.py b/renderer/fifty_ohm_latex_renderer.py index 94f5725..83891d1 100644 --- a/renderer/fifty_ohm_latex_renderer.py +++ b/renderer/fifty_ohm_latex_renderer.py @@ -1,11 +1,11 @@ from mistletoe.latex_renderer import LaTeXRenderer -from renderer.picture import Picture - from .comment import BlockComment from .dash import Dash from .halfwidth_spaces import HalfwidthSpaces from .nonbreaking_spaces import NonbreakingSpaces, NonbreakingSpacesDots +from .photo import Photo +from .picture import Picture from .question import Question from .quote import Quote from .tag import Tag @@ -24,7 +24,8 @@ class FiftyOhmLaTeXRenderer(LaTeXRenderer): NonbreakingSpaces, NonbreakingSpacesDots, Question, - Picture + Picture, + Photo ) self.question_renderer = question_renderer @@ -103,4 +104,13 @@ class FiftyOhmLaTeXRenderer(LaTeXRenderer): \label{{{ref}}}""" def render_picture(self, token) : + return self.render_picture_helper(token.id, token.ref, token.text, token.number) + + @staticmethod + def render_photo_helper(id, ref, text, number): + return rf"""\includegraphics[width=1.0\linewidth]{{photo/{id}}} +\captionof{{figure}}{{{text}}} +\label{{{ref}}}""" + + def render_photo(self, token) : return self.render_picture_helper(token.id, token.ref, token.text, token.number) \ No newline at end of file diff --git a/renderer/photo.py b/renderer/photo.py new file mode 100644 index 0000000..a8676ec --- /dev/null +++ b/renderer/photo.py @@ -0,0 +1,19 @@ +import re + +from mistletoe.span_token import SpanToken + + +class Photo(SpanToken): + """ + Span token for photos. + Example: [photo:123:n_wasserfalldiagramm_trx_collage:Ansichten verschiedener Transceiver] + """ + + parse_inner = False + pattern = re.compile(r"\[photo:(\d+):(.+):(.+)\]") + + def __init__(self, match_object): + self.id = match_object.group(1) + self.ref = match_object.group(2) + self.text = match_object.group(3) + self.number = "TODO" \ No newline at end of file