Handle missing verbatim arguments and empty LaTeX matrices
This commit is contained in:
parent
bc25eeb06a
commit
3dfaed5041
3 changed files with 20 additions and 6 deletions
|
|
@ -386,7 +386,7 @@ def fmt_matrix_environment_node(node, l2tobj):
|
||||||
state.new_row() # finish the last row
|
state.new_row() # finish the last row
|
||||||
|
|
||||||
# now format the contents as array --
|
# now format the contents as array --
|
||||||
max_char_width = max((len(x) for row in state.matrix_rows for x in row))
|
max_char_width = max((len(x) for row in state.matrix_rows for x in row), default=0)
|
||||||
matrix_contents = "; ".join(
|
matrix_contents = "; ".join(
|
||||||
(
|
(
|
||||||
" ".join((x.rjust(max_char_width, " ") for x in row))
|
" ".join((x.rjust(max_char_width, " ") for x in row))
|
||||||
|
|
|
||||||
|
|
@ -460,7 +460,7 @@ class VerbatimArgsParser(MacroStandardArgsParser):
|
||||||
if self.verbatim_arg_type == "verb-macro":
|
if self.verbatim_arg_type == "verb-macro":
|
||||||
# read the next nonwhitespace char. This is the delimiter of the
|
# read the next nonwhitespace char. This is the delimiter of the
|
||||||
# argument
|
# argument
|
||||||
while w.s[pos].isspace():
|
while pos < len(w.s) and w.s[pos].isspace():
|
||||||
pos += 1
|
pos += 1
|
||||||
if pos >= len(w.s):
|
if pos >= len(w.s):
|
||||||
raise latexwalker.LatexWalkerParseError(
|
raise latexwalker.LatexWalkerParseError(
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
import pytest
|
||||||
from great_ai.utilities.external.pylatexenc.latex2text import LatexNodes2Text
|
from great_ai.utilities.external.pylatexenc.latex2text import LatexNodes2Text
|
||||||
|
from great_ai.utilities.external.pylatexenc.latexwalker import LatexWalkerParseError
|
||||||
|
|
||||||
|
|
||||||
def test_strict_input_checks_path_ancestry(tmp_path: Path) -> None:
|
def test_strict_input_checks_path_ancestry(tmp_path: Path) -> None:
|
||||||
|
|
@ -16,3 +18,15 @@ def test_strict_input_checks_path_ancestry(tmp_path: Path) -> None:
|
||||||
assert converter.latex_to_text(r"\input{inside}") == "inside"
|
assert converter.latex_to_text(r"\input{inside}") == "inside"
|
||||||
assert converter.latex_to_text(r"\input{../allowed_neighbor/outside}") == ""
|
assert converter.latex_to_text(r"\input{../allowed_neighbor/outside}") == ""
|
||||||
assert converter.latex_to_text(r"\input{link}") == ""
|
assert converter.latex_to_text(r"\input{link}") == ""
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("text", [r"\verb", "\\verb "])
|
||||||
|
def test_missing_verbatim_arguments_use_normal_parse_errors(text: str) -> None:
|
||||||
|
converter = LatexNodes2Text()
|
||||||
|
with pytest.raises(LatexWalkerParseError):
|
||||||
|
converter.latex_to_text(text, tolerant_parsing=False)
|
||||||
|
assert converter.latex_to_text(text, tolerant_parsing=True) == ""
|
||||||
|
|
||||||
|
|
||||||
|
def test_empty_matrix_has_a_text_representation() -> None:
|
||||||
|
assert LatexNodes2Text().latex_to_text(r"\begin{pmatrix}\end{pmatrix}") == "[ ]"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue