From 89b9eca3f199fc237c7f71c2e802619320ff17ea Mon Sep 17 00:00:00 2001 From: Splines Date: Fri, 12 Apr 2024 19:26:44 +0200 Subject: [PATCH 1/3] Use siunitx multi-uncertainty support This fixes #31 --- src/api/export.py | 28 ------------------- .../latex_better_siunitx_stringifier.py | 15 +++++++--- src/application/stringifier.py | 2 ++ 3 files changed, 13 insertions(+), 32 deletions(-) diff --git a/src/api/export.py b/src/api/export.py index d21f9cd5..c60fad72 100644 --- a/src/api/export.py +++ b/src/api/export.py @@ -41,13 +41,6 @@ def _export(filepath: str, print_completed: bool): result_str = latexer.result_to_latex_cmd(result) result_lines.append(result_str) - if not c.configuration.siunitx_fallback: - siunitx_setup = _uncertainty_names_to_siunitx_setup(uncertainty_names) - if siunitx_setup != "": - lines.append("% Commands to correctly print the uncertainties in siunitx:") - lines.append(siunitx_setup) - lines.append("") - lines.append("% Commands to print the results. Use them in your document.") lines.extend(result_lines) @@ -56,24 +49,3 @@ def _export(filepath: str, print_completed: bool): f.write("\n".join(lines)) if print_completed: print(f'Exported to "{filepath}"') - - -def _uncertainty_names_to_siunitx_setup(uncert_names: Set[str]) -> str: - """ - Returns the preamble for the LaTeX document to use the siunitx package. - """ - if len(uncert_names) == 0: - return "" - - cmd_names = [] - cmds = [] - for name in uncert_names: - cmd_name = f"\\Uncert{Helpers.capitalize(name)}" - cmd_names.append(cmd_name) - cmds.append(rf"\NewDocumentCommand{{{cmd_name}}}{{}}{{_{{\text{{{name}}}}}}}") - - string = "\n".join(cmds) - string += "\n" - string += rf"\sisetup{{input-digits=0123456789{''.join(cmd_names)}}}" - - return string diff --git a/src/application/latex_better_siunitx_stringifier.py b/src/application/latex_better_siunitx_stringifier.py index 4911c33c..ae889bf2 100644 --- a/src/application/latex_better_siunitx_stringifier.py +++ b/src/application/latex_better_siunitx_stringifier.py @@ -2,6 +2,7 @@ from application.helpers import Helpers from application.stringifier import Stringifier +from domain.uncertainty import Uncertainty class LatexBetterSiunitxStringifier(Stringifier): @@ -22,7 +23,7 @@ class LatexBetterSiunitxStringifier(Stringifier): value_prefix = "" value_suffix = "" - error_name_prefix = r"\Uncert" + error_name_prefix = "" error_name_suffix = "" scientific_notation_prefix = "e" @@ -33,13 +34,14 @@ class LatexBetterSiunitxStringifier(Stringifier): # pylint: enable=duplicate-code def _modify_uncertainty_name(self, name) -> str: - return Helpers.capitalize(name) + return "" # pylint: disable-next=too-many-arguments def _assemble_str_parts( self, sign: str, value_rounded: str, + uncertainties: List[Uncertainty], uncertainties_rounded: List[str], should_use_parentheses: bool, use_scientific_notation: bool, @@ -51,9 +53,14 @@ def _assemble_str_parts( if use_scientific_notation: num_part += f" e{str(exponent)}" + uncert_descriptors = [u.name for u in uncertainties if u.name != ""] + uncert_descriptors_str = "" + if len(uncert_descriptors) > 0: + uncert_descriptors_str = f"[uncertainty-descriptors={{{','.join(uncert_descriptors)}}}]" + if unit != "": - string = rf"\qty{{{num_part}}}{{{unit}}}" + string = rf"\qty{uncert_descriptors_str}{{{num_part}}}{{{unit}}}" else: - string = rf"\num{{{num_part}}}" + string = rf"\num{uncert_descriptors_str}{{{num_part}}}" return string diff --git a/src/application/stringifier.py b/src/application/stringifier.py index ce78fdcd..8ece65ec 100644 --- a/src/application/stringifier.py +++ b/src/application/stringifier.py @@ -77,6 +77,7 @@ def create_str(self, value: Value, uncertainties: List[Uncertainty], unit: str) return self._assemble_str_parts( sign, value_rounded, + uncertainties, uncertainties_rounded, should_use_parentheses, use_scientific_notation, @@ -89,6 +90,7 @@ def _assemble_str_parts( self, sign: str, value_rounded: str, + uncertainties: List[Uncertainty], uncertainties_rounded: List[str], should_use_parentheses: bool, use_scientific_notation: bool, From 8f6e749eaad784199de6d73d0bc708de605b6490 Mon Sep 17 00:00:00 2001 From: Splines Date: Fri, 12 Apr 2024 19:32:59 +0200 Subject: [PATCH 2/3] Mark arguments as unused --- src/application/latex_better_siunitx_stringifier.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/application/latex_better_siunitx_stringifier.py b/src/application/latex_better_siunitx_stringifier.py index ae889bf2..817cecf3 100644 --- a/src/application/latex_better_siunitx_stringifier.py +++ b/src/application/latex_better_siunitx_stringifier.py @@ -33,7 +33,7 @@ class LatexBetterSiunitxStringifier(Stringifier): unit_suffix = "" # pylint: enable=duplicate-code - def _modify_uncertainty_name(self, name) -> str: + def _modify_uncertainty_name(self, _name) -> str: return "" # pylint: disable-next=too-many-arguments @@ -43,7 +43,7 @@ def _assemble_str_parts( value_rounded: str, uncertainties: List[Uncertainty], uncertainties_rounded: List[str], - should_use_parentheses: bool, + _should_use_parentheses: bool, use_scientific_notation: bool, exponent: int, unit: str, From 7314514a89930a0ac0a8b614a0abe4fd029da62f Mon Sep 17 00:00:00 2001 From: Splines Date: Fri, 12 Apr 2024 19:33:11 +0200 Subject: [PATCH 3/3] Remove unused imports --- src/api/export.py | 3 --- src/application/latex_better_siunitx_stringifier.py | 1 - 2 files changed, 4 deletions(-) diff --git a/src/api/export.py b/src/api/export.py index c60fad72..70e8a498 100644 --- a/src/api/export.py +++ b/src/api/export.py @@ -1,8 +1,5 @@ -from typing import Set from api.latexer import get_latexer from api.res import _res_cache -import api.config as c -from application.helpers import Helpers def export(filepath: str): diff --git a/src/application/latex_better_siunitx_stringifier.py b/src/application/latex_better_siunitx_stringifier.py index 817cecf3..e0c85149 100644 --- a/src/application/latex_better_siunitx_stringifier.py +++ b/src/application/latex_better_siunitx_stringifier.py @@ -1,6 +1,5 @@ from typing import List -from application.helpers import Helpers from application.stringifier import Stringifier from domain.uncertainty import Uncertainty