Ich möchte alignat
die Umgebung neu definieren, um die Formeln automatisch zu taggen und als tatsächlichen Text das Tag P dieser Formeln einzufügen. Das funktioniert einwandfrei, aber warum expl3
bekomme ich tatsächlichen Text, wenn ich die Syntax einschalte xs_StrFindGrou
? Die zweite Frage: Wie kann ich alle zusätzlichen Befehle entfernen, um die Formel als tatsächlichen Text des Absatzes festzulegen, ohne xstring
ein Paket zu verwenden, sondern nur expl3
Features? Vielen Dank an alle für die Hilfe.
\documentclass{article}
\usepackage{tagpdf,amsmath,xstring}
\tagpdfsetup{tabsorder=structure,uncompress,activate-all,interwordspace=true,tagunmarked=false}
\tagpdfifpdftexT
{
\pdfcompresslevel=0
%set language / can also be done with hyperref
\pdfcatalog{/Lang (en-US)}
\usepackage[T1]{fontenc}
\input glyphtounicode
\pdfgentounicode=1
}
\tagpdfifluatexT
{
%set language / can also be done with hyperref
\pdfextension catalog{/Lang (en-US)}
\usepackage{fontspec}
\newfontface\zerowidthfont{freeserif}
}
\pagestyle{empty}
\ExplSyntaxOn
\makeatletter
\long\def\doactualtext#1{
\def\@mltext{\detokenize\expandafter{#1}}
\def\@mltexttmp{}
\StrBehind[5]{\@mltext}{ }[\@mltexttmp]
\StrGobbleRight{\@mltexttmp}{1}[\@mltext]
\tagstructbegin{tag=P,actualtext-o=\detokenize\expandafter{\@mltext}}
\tagmcbegin{tag=P}
#1
\tagmcend
\tagstructend
}
\renewenvironment{alignat}{
\collect@body\doactualtext\space
\start@align
\z@\st@rredfalse
}{
\endalign
}
\makeatother
\ExplSyntaxOn
\begin{document}
\tagstructbegin{tag=Document}
\begin{alignat}
10xy^2+15x^2y-5xy7 & = 5\left(2xy^2+3x^2y-xy7\right) = \\
& = 5x\left(2y^2+3xy-y7\right) = \\
& = 5xy\left(2y+3x-7\right)
\end{alignat}
%\tagstructend Why i get an error,that there is no structure on the stack?
\end{document}
Antwort1
Sie erhalten einen Fehler vom \tagstructend, da der Teil nach dem #1
in Ihrem \doactualtext
von den amsmath-Befehlen zweimal verarbeitet wird. Sie können \ifmeasuring@
dies während des Messschritts unterdrücken.
Sie erhalten den falschen Alternativtext, da Sie das Leerzeichen nicht durch die Tilde ersetzt haben.
\documentclass{article}
\usepackage{tagpdf,amsmath,xstring}
\tagpdfsetup{tabsorder=structure,uncompress,activate-all,interwordspace=true,tagunmarked=false}
\tagpdfifpdftexT
{
\pdfcompresslevel=0
%set language / can also be done with hyperref
\pdfcatalog{/Lang (en-US)}
\usepackage[T1]{fontenc}
\input glyphtounicode
\pdfgentounicode=1
}
\tagpdfifluatexT
{
%set language / can also be done with hyperref
\pdfextension catalog{/Lang (en-US)}
\usepackage{fontspec}
\newfontface\zerowidthfont{freeserif}
}
\pagestyle{empty}
\ExplSyntaxOn
\makeatletter
\long\def\doactualtext#1{
\def\@mltext{\detokenize\expandafter{#1}}
\def\@mltexttmp{}
\StrBehind[5]{\@mltext}{~}[\@mltexttmp]
\StrGobbleRight{\@mltexttmp}{1}[\@mltext]
\tagstructbegin{tag=P,actualtext-o=\detokenize\expandafter{\@mltext}}
\tagmcbegin{tag=P}
#1
\ifmeasuring@\else
\tagmcend
\tagstructend
\fi
}
\renewenvironment{alignat}{
\collect@body\doactualtext\space
\start@align
\z@\st@rredfalse
}{
\endalign
}
\makeatother
\ExplSyntaxOn
\begin{document}
\tagstructbegin{tag=Document}
\begin{alignat}
10xy^2+15x^2y-5xy7 & = 5\left(2xy^2+3x^2y-xy7\right) = \\
& = 5x\left(2y^2+3xy-y7\right) = \\
& = 5xy\left(2y+3x-7\right)
\end{alignat}
\tagstructend
\end{document}
Ich habe keine Ahnung, was Ihre Ersatzteile tun sollen.