SMOLNET PORTAL home about changes
Re: Subscripts And Superscripts In Gemtext
en

[In reply to: Curiouser gemini://gemi.dev/gemlog/2022-06-06-unicode-sub-sup.gmi]

Curiouser wrote:
	Math formulas are especially challenging, not only because they can have so many symbols (such as sigma 'Σ'), but those symbols must be rendered in a certain layout (e.g. Σ used to sum a series has the variable and its starting value, as well as the value its going to, arranged in 2 different rows to the right of the Σ).

As a further example, sigma notation only behaves that way when it’s inline.
‘Block-level’ sigma notation places one row above the sigma and the other below,
and makes the sigma like twice as large as the rest of the text.
This holds true for a lot of other operations as well,
such as integrals (∫), sequential products (∏), and sometimes unions (∪).
Limits also follow the same rules,
except they’re not extra-large because they don’t have their own symbol.

	In fact, text layout of formulas and symbols is such a complicate domain that Donald Knuth literally created TeX, an entire digital typesetting system, while he was writing "The Art of Computer Programming."

	Given all this complexity, I didn't even try to represent math formulas in gemtext.

This is what made me reply to this post.
You see, I quite like math, so I envision writing some here at times.
So as part of working on the back-end,
I needed to think about how to typeset math in Gemtext,
and I think I’ve come up with a workable solution.

Basically, we can use preformatted blocks to approximate block-level mathematics
and put plaintext math using unicode’s extensive set of math symbols
in the alt-text as a mostly accessible fallback.

'''
%!gmi: > *Note*: This is still not completely accessible, so it’s important to also provide an accessible format. Unfortunately right now, this means HTML for math.
%!html: <p><mark><strong>Note</strong>: This is still not completely accessible, so it’s important to also provide an accessible format.</mark></p>
'''

== Examples ==

For these examples,
%!gmi: try collapsing the preformatted blocks to see the alt-text
%!gmi: if your client supports that.
%!html: I have put the alt text as the summary and a properly marked-up preformatted block in the details.
%!html: This more closely resembles the Gemtext expirence.

'''
%!gmi: ``` Σᵢ₌₃⁷ i²
%!html: <details><summary>Σᵢ₌₃⁷ i²</summary>
%!html: <pre role="img" alt="Above equation rendered in Unicode art">
 ₇
 Σ 𝑖²
ᶤ⁼³
%!html: </pre></details>
%!gmi: ```
'''

--------------------

'''
%!gmi: ``` ∫ _(π/6) ^π  sin θ dθ  =  [−cos θ] _(π/6) ^π  =  1 + (√3)/2
%!html: <details><summary>∫ _(π/6) ^π  sin θ dθ  =  [−cos θ] _(π/6) ^π  =  1 + (√3)/2</summary>
%!html: <pre role="img" alt="Above equations rendered in Unicode art">
 π
 ⌠               ⎡         ⎤ π
 ⌡  sin 𝜃 d𝜃  =  ⎢ − cos 𝜃 ⎥
π/6              ⎣         ⎦ π/6

                       √3
              =  1  +  ──
                       2
%!html: </pre></details>
%!gmi: ```
'''

--------------------

'''
%!gmi: ``` Dₓ cos(xy)  =  Dₓ (1 + sin y)
%!html: <details><summary>Dₓ cos(xy)  =  Dₓ (1 + sin y)</summary>
%!html: <pre role="img" alt="Above equation rendered using Unicode art">
     Dₓ cos(𝑥𝑦)  =  Dₓ (1 + sin 𝑦)
%!gmi: ```
%!html: </pre></details>
'''

'''
%!gmi: ``` −sin(xy)yy'  =  y' cos y
%!html: <details><summary>−sin(xy)yy'  =  y' cos y</summary>
%!html: <pre role="img" alt="above equation rendered using unicode art>
    −sin(𝑥𝑦)𝑦𝑦′  =  𝑦′ cos 𝑦
%!gmi: ```
%!html: </pre></details>
'''

'''
%!gmi: ``` - [sin(xy)yy'] / (y' cos y)  =  1
%!html: <details><summary>- [sin(xy)yy'] / (y' cos y)  =  1</summary>
%!html: <pre role="img" alt="Above equation rendered using Unicode art">
     sin(𝑥𝑦)𝑦𝑦′
   − ──────────  =  1
      𝑦′ cos 𝑦
%!gmi: ```
%!html: </pre></details>
'''

'''
%!gmi: ``` - [sin(xy)y / cos y] (y'/y')  =  1
%!html: <details><summary>- ""[sin(xy)y / cos y]"" (y'/y')  =  1</summary>
%!html: <pre role="img" alt="Above equation rendered using Unicode art">
   sin(𝑥𝑦)𝑦  𝑦′
−  ────────  ──  =  1
    cos 𝑦    𝑦′
%!gmi: ```
%!html: </pre></details>
'''

'''
%!gmi: ``` y' (1 × 1¹)  =  − cos y / [sin(xy)y]
%!html: <details><summary>y' (1 × 1¹)  =  − cos y / [sin(xy)y]</summary>
%!html: <pre role="img" alt="Above equation rendered using Unicode art">
                       cos 𝑦
    𝑦′ (1 × 1¹)  =  - ────────
                      sin(𝑥𝑦)𝑦
%!gmi: ```
%!html: </pre></details>
'''

'''
%!gmi: ``` y'  =  − cos y / [sin(xy)y]
%!html: <details><summary>y'  =  − cos y / [sin(xy)y]</summary>
%!html: <pre role="img" alt="Above equation rendered using Unicode art">
                       cos 𝑦
             𝑦′  =  - ────────
                      sin(𝑥𝑦)𝑦
%!gmi: ```
%!html: </pre></details>
'''
Response: 20 (Success), text/plain
Original URLgemini://dj-chase.com/documents/re-sub-sup-gemtext.t2t
Status Code20 (Success)
Content-Typetext/plain; charset=utf-8