texmath icon indicating copy to clipboard operation
texmath copied to clipboard

\intertext{...} from LaTeX to Typst

Open joshniemela opened this issue 2 years ago • 6 comments

Currently, it isn't possible to convert aligned environments containing \intertext. Immediate solution: converting \intertext{...} to $...$ in Typst will give the intended result of intertext

Is this solution good enough or did I miss something?

joshniemela avatar Apr 15 '23 21:04 joshniemela

The fundamental problem is that texmath's TeX reader doesn't yet support intertext. That should be added.

jgm avatar Apr 16 '23 06:04 jgm

Is this perhaps something I could try to implement?

joshniemela avatar Apr 20 '23 09:04 joshniemela

Maybe! First step would be figuring out how to represent intertext in our AST; second step would be implementing it in the parser (src/Text/TeXMath/Readers/TeX.hs)

This is how we currently represent aligned environments:

% texmath -t native
\begin{align}
x &= y \\
1 &= 2
\end{align}
^D
[ EArray
    [ AlignRight , AlignLeft ]
    [ [ [ EIdentifier "x" ] , [ ESymbol Rel "=" , EIdentifier "y" ] ]
    , [ [ ENumber "1" ] , [ ESymbol Rel "=" , ENumber "2" ] ]
    ]
]

As you can see, there's no dedicated construction for aligned equations (which is maybe a problem, see #209). We just use an array. This makes it hard to see how we'd support intertext.

jgm avatar Apr 20 '23 16:04 jgm

To me it seems natural that intertext would just split the equation environment into two parts. Sure the alignment would be off, but at least the text would be there. As in

\begin{align*}
    Math part 1
    \intertext{Some text}
    Math part 2}
\end{align*}

gets treated as

\begin{align*}
    Math part 1
\end{align*}
Some text
\begin{align*}
    Math part 2}
\end{align*}

Enivex avatar Dec 05 '23 22:12 Enivex

@Enivex yes that's a good idea and it should be feasible.

jgm avatar Dec 06 '23 00:12 jgm

In the meantime, I've made a hacky solution based on the amazing work by @jorsn on this other github issue that somewhat implements the functionality of \intertext{}.

Demo

What this does

  • Insert text between aligned equations
  • Independently cite and label equations within a group of aligned equations

Known issues

  • Doesn't work across page breaks (can't be fixed)
  • Doesn't work for text longer than one line (can be fixed but very difficult)

This is only a temp fix, and I really hope the typst devs pay attention to this issue and fix it soon once and for all.

10decikelvin avatar Jun 26 '24 08:06 10decikelvin