From: Guillaume Dehaene <guillaume.dehaene-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: pandoc-discuss <pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
Subject: Re: User story: typst multiline math in pandoc markdown and pandoc AST
Date: Fri, 20 Oct 2023 00:40:16 -0700 (PDT) [thread overview]
Message-ID: <daaf510b-50a3-4f9d-b7d5-58609d3821c6n@googlegroups.com> (raw)
In-Reply-To: <E89C2FED-79B7-4150-B015-D11C177D3F9B-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
[-- Attachment #1.1: Type: text/plain, Size: 3637 bytes --]
Thank you for your insight.
1. I'm not 100% satisfied with your solution since it does not work with
latex environments which open math-mode (such as a align). These produce
errors because of the double-opening of math-mode. It's also pretty
cumbersome compared to usual md.
I see that this is how pandoc parses typst equations (I should have looked!)
[ Math
DisplayMath "\\begin{aligned}\n1 + 1 & = 2 \\\\\n1 + 1 & =
2\n\\end{aligned}" ]
Is that now going to be the accepted format for multiline equations?
2. I had overlooked the possibility of writing a filter.
The principle of the filter would then be:
parse DisplayMath
if there are & and/or \\ present, modify the block
depending on writer:
- latex, HTML: transform to align
- everything else: transform to accepted format(??) \begin{aligned}
Is that correct? If so, I'll start hacking at it in the near future.
Best regards,
Guillaume
On Thursday, October 19, 2023 at 6:11:41 PM UTC+2 John MacFarlane wrote:
> > Pandoc provides a solution for almost all of these. The only issue is
> multi-line equations.
> > A work-around I am aware of is to just use raw latex code like:
> > ```latex
> > \begin{align}
> > 1 + 1 &= 2 \label{first_line} \\
> > 1 + 2 &= 3 \label{second_line}
> > \end{align}
> > ```
> > which works fine when exporting to both HTML and latex: it is added as
> is to the HTML where it is parsed by both mathjax and katex.
>
> Note that there's another way to do this that will create a native Math
> element in pandoc:
>
> $$
> \begin{aligned}
> 1 + 1 &= 2 \\
> 1 + 2 &= 3
> \end{aligned}
> $$
>
>
> > However, I propose that formatting equations like typst might be a good
> way to make multiline math native to Pandoc, instead of piggy-backing on
> raw latex.
> >
> > Multiline equations could be written as in latex, wrapped in `$$ $$`:
> > ```
> > $$
> > 1 + 1 &= 2 \\
> > 1 + 2 &= 3
> > $$
> > ```
> >
> > which could be parsed as a new DisplayMathMultiline type in the AST.
> > (This is a mockup: I really don't understand how the AST is written)
> > ```
> > [ Math DisplayMathMultiline
> > [
> > Math DisplayMathLine ["1+1", "=2"]
> > Math DisplayMathLine ["1+2", "=3"]
> > ]
> > ]
> > ```
> >
> > This type can be written to:
> > - HTML and latex: as an `align` block
> > - typst: as a multiline math block
> > - pandoc markdown: as a multiline math block
> > - other: as multiple successive displayMath blocks
> >
> > I do not see how modifying the AST in this way would produce an issue:
> it's an additive feature as far as I can tell.
>
> Any change to our algebraic data types is a breaking change that would
> require modifications throughout the ecosystem (all writers and readers,
> filters, etc.). That's why we're very conservative about such changes and
> make them infrequently and only with very strong reasons.
>
> I suppose one possibility would be to parse this syntax into
>
> \begin{aligned}
> 1 + 1 &= 2 \\
> 1 + 2 &= 3
> \end{aligned}
>
> which should work with all the formats you mention...
>
> You could even create a filter that does this, without changes to pandoc
> itself.
>
>
>
--
You received this message because you are subscribed to the Google Groups "pandoc-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To view this discussion on the web visit https://groups.google.com/d/msgid/pandoc-discuss/daaf510b-50a3-4f9d-b7d5-58609d3821c6n%40googlegroups.com.
[-- Attachment #1.2: Type: text/html, Size: 4938 bytes --]
next prev parent reply other threads:[~2023-10-20 7:40 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-19 13:47 Guillaume Dehaene
[not found] ` <672a5917-b04d-4eb9-966d-75b54df97837n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2023-10-19 16:11 ` John MacFarlane
[not found] ` <E89C2FED-79B7-4150-B015-D11C177D3F9B-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2023-10-20 7:40 ` Guillaume Dehaene [this message]
[not found] ` <daaf510b-50a3-4f9d-b7d5-58609d3821c6n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2023-10-20 17:26 ` John MacFarlane
[not found] ` <464EF7B5-5A64-495A-A195-CC62A3D2A637-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2023-10-20 19:25 ` Guillaume Dehaene
[not found] ` <e9222236-9514-4cdc-b986-ae8e7e198576n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2023-10-20 22:00 ` John MacFarlane
[not found] ` <73813E01-A490-4C3E-8B23-8952A80487DD-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2023-10-22 19:18 ` Guillaume Dehaene
2023-10-20 19:08 ` Gwern Branwen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=daaf510b-50a3-4f9d-b7d5-58609d3821c6n@googlegroups.com \
--to=guillaume.dehaene-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).