-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathaccessible_math_documentation_page.html
1201 lines (1180 loc) · 84.3 KB
/
accessible_math_documentation_page.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Sanchez|Roboto|Nunito">
<link rel="stylesheet" href="styles.css">
<title>Accessible Mathematics</title>
<script>
MathJax = {
tex: {
inlineMath: [['$', '$'], ['\\(', '\\)']],
displayMath: [['$$', '$$'], ['\[', '\]']]
}
};
MathJax.Hub.Config({
"HTML-CSS": {
webFont: "Tex"
}
});
</script>
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>
<!--
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js"
type="text/javascript"></script>
-->
</head>
<body>
<!-- navbar must be on left side and always visible for landscape viewports -->
<!-- link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Sanchez|Roboto|Nunito" -->
<header>Accessible Mathematics</header>
<nav id="navbar">
<!-- <header>Accessible Mathematics</header> -->
<ul>
<li> <a href="#introduction" class="nav-link">Introduction</a></li>
<li> <a href="#problem_statement" class="nav-link">Problem Statement</a></li>
<li> <a href="#sample_workflow" class="nav-link">Sample Workflow</a></li>
<li> <a href="#math_markup_languages" class="nav-link">Math Markup Languages</a></li>
<li> <a href="#typesetting_software" class="nav-link">Typesetting Software</a></li>
<li> <a href="#web_display_engines" class="nav-link">Web Display Engines</a></li>
<li> <a href="#conversion_tools" class="nav-link">Conversion Tools</a></li>
<li> <a href="#screen_readers" class="nav-link">Screen Readers</a></li>
<li> <a href="#alt_text_for_math" class="nav-link">Alt-Text for Math</a></li>
<li> <a href="#math_speech_engines" class="nav-link">Math Speech Engines</a></li>
<li> <a href="#braille" class="nav-link">Math in Braille</a></li>
<li> <a href="#math_in_e-books" class="nav-link">Math in E-books</a></li>
<li> <a href="#tagged_pdf" class="nav-link">Tagged PDF</a></li>
<li> <a href="#code_examples" class="nav-link">Code Examples</a></li>
<li> <a href="#additional_links" class="nav-link">Additional Links</a></li>
</ul>
</nav>
<main id="main-doc">
<a name="top"></a>
<section class="main-section" id="introduction">
<h1>Introduction</h1>
<article>
<p>What is Accessible Mathematics?</p>
<p>Accessibility and Accessible Design are a wide net of principles and practices to build inclusive
environments and make content readily available to all people. Accessible design benefits everyone, and it is
inspired by people who use Assistive Technology (AT).
</p>
<p>Accessible Mathematics is the application of this to mathematics.</p>
</article>
</section>
<section class="main-section" id="problem_statement">
<h1>Problem Statement</h1>
<article>
<p>Braille, Screen Readers, Human Narration, and Tactile Sign language are four approaches to convey written
text to visually impaired readers. Conveying mathematics is more subtle, however, because mathematical
statements have more grammatical rules. For example, consider the statement "the square root of X plus Y".
This may be interpreted as either:
<ol>
<li>$\sqrt{x+y}$, meaning "the square root of the quantity (X + Y)"</li>
<p>or</p>
<li>$\sqrt{x} + y$, meaning "(the square root of X) + Y"</li>
</ol>
</p>
<p>
In this case, software translations of the two mathematical expressions will correctly convey the intended
meaning. On the other hand, sometimes the same mathematical notation has entirely different meanings based on
the context. For example, the notation $| \phantom{x} |$ can denote:
<ol id="math_example">
<li>The absolute value of a number: $|x|$</li>
<li>The norm of a vector: $|\mathbf{x}|$</li>
<li>The order of an element: $|x|$</li>
<li>The cardinality of a set: $|X|$</li>
<li>The determinant of a matrix: $|X|$</li>
</ol>
In situations like this, software tools need a more robust, context based semantic breakdown of mathematical
expressions to properly translate them for users of assistive technology. Authoring such statements encourages
extra clarity, which ultimately benefits everyone.
</p>
<p>HyperText Markup Language (<abbr>HTML</abbr>) is the worldwide, cross-platform,
device-independent semantic based authoring standard. Math<abbr>ML</abbr> is the extension of
<abbr>HTML</abbr>
for authoring
mathematics. Math<abbr>ML</abbr> is much more verbose than HTML and generally not coded by hand, making it
tenuous for authoring research, textbooks, and other long-format mathematics.
</p>
<p>LaTeX is the worldwide standard markup language for authoring mathematics due to its concise, contextual
syntax and huge library of extensions. But the LaTeX typesetting engine is designed for print, which strips
away the contextual information needed for screen readers.</p>
<p>Portable Document Format (<abbr>PDF</abbr>) is the universal open document standard for print adopted by the
International Organization
for Standardization (<abbr>ISO</abbr>). Tagged PDF is a version of PDF that incorporates a semantic structure
similar to <abbr>HTML</abbr>, offering an ideal solution for accessible mathematics if math markup could
be ported into the underlying semantics. This has not yet been standardized.</p>
<p>Currently, a workflow for generating accessible mathematics content involves a hybrid approach between LaTeX
and MathML. This process is described in stages throughout the rest of this document.</p>
</article>
</section>
<section class="main-section" id="sample_workflow">
<h1>Sample Workflow</h1>
<article>
<p>Here is a high level sample workflow:</p>
<ol>
<li>Write mathematics in a markup language.</li>
<li>Include the math markup in an HTML document.</li>
<li>Format the HTML to be structurally accessible.</li>
<li>Test your document with a screen reader.</li>
<li>Customize your math speech settings.</li>
<li>Test your document with a refreshable braille display.</li>
<li>Test your document on various mobile devices.</li>
<li>Share your document with users.</li>
<li>Update the HTML to address any accessibility issues from user feedback.</li>
</ol>
<p>Here is an one sample workflow with specific software:</p>
<ol>
<li>Write your mathematics in a Markdown document using LaTeX delimiters and syntax.</li>
<li>Convert the Markdown document to <abbr>HTML</abbr> with Pandoc, using the MathJax option to convert the
LaTeX to Math<abbr>ML</abbr>.</li>
<li>Test your document with VoiceOver (Mac), NVDA (Windows), and TalkBack (Android) in Firefox, Chrome, and
Safari.</li>
<li>Customize the math Speech Rule Engine in the MathJax script settings in your <abbr>HTML</abbr> document.
</li>
<li>Test your document with a refreshable braille display.</li>
<li>Share the document on your web site.</li>
<li>Test your <abbr>HTML</abbr> to ensure responsiveness and readability on a mobile device.</li>
<li>Test screen readability on a mobile device with VoiceOver (iOS) or Talkback (Android).</li>
<li>Update the <abbr>HTML</abbr> to address any accessibility issues from user feedback.</li>
</ol>
<p>While this is considerably more work than typesetting mathematics for print, the process will produce a
working template that can be reused and improved, just like a workflow for print.</p>
</article>
</section>
<section class="main-section" id="math_markup_languages">
<h1>Math Markup Languages</h1>
<article>
<p>The majority of mathematics today is written in a markup language. The most widely used math markup languages are: </p>
<ol>
<li>LaTeX</li>
<li>MathML</li>
<li>AsciiMath</li>
</ol>
<p>Plain text can be used for mathematics, with limited functionality. This is discussed at the end of this
section.</p>
<p>The syntax of each markup language serves a dual purpose: to reference mathematical symbols and to determine
the placement of the symbols. LaTeX was originally designed for print or presentation on a fixed canvas size.
MathML and AsciiMath were originally designed for the web to accommodate a flexible canvas. An accessible math
workflow today may use a blend of both.</p>
<h2>LaTeX</h2>
<p>The <a href="https://www.latex-project.org/" target="_blank" rel="noopener noreferrer">LaTeX typesetting system</a> is the most popular
method for typesetting mathematics. LaTeX was created as an outgrowth of
TeX, a markup language and layout engine created in 1978 to standardize typesetting mathematics and
scientific formulas for print. For those familiar with HTML, LaTeX can loosely be thought of as as
“<abbr>HTML</abbr> for paper”. It uses a context based syntax to signify chapters, sections, figures, lists,
equations, self-referenced labeling, graphics, code snippets, and much more. The goal is for authors to focus
on their content and let the LaTeX typesetting engine handle the presentation. LaTeX is extensible,
open-source, regularly updated, and has a huge library of extended tools to serve literary, scientific, and
artistic needs.</p>
<p>LaTeX markup can be written in any text editor, but the LaTeX typesetting engine is required to render the
mathematical output. This is discussed in the next section on <a href="#typesetting_software">Typesetting Software</a>.
<h2>MathML</h2>
<p><a href="https://www.w3.org/Math/" target="_blank" rel="noopener noreferrer">MathML</a> was created in 1998 as an extension of
<abbr>HTML</abbr> specifically to render mathematics on the
web. This provides all the benefits of reflowable text on any device, and a direct interface to mathematical
expressions for search engines, learning management systems, assitive technology such as screen readers, and
other web-based applications. There are two versions of MathML: <a href="https://www.w3.org/TR/MathML3/chapter3.html#presm.intro" target="_blank" rel="noopener noreferrer">Presentation MathML</a>, which
encodes information on how to display an equation, and <a href="https://www.w3.org/TR/MathML3/chapter4.html#contm.intro " target="_blank" rel="noopener noreferrer">Content MathML</a>, which incorporates
semantic information about the underlying mathematical expression itself. Please see this <a
href="https://samdooley.github.io/mathml-docs/intent2cmml/demo.html" target="_blank" rel="noopener noreferrer">MathML demonstration of
the quadratic formula</a> to compare the difference. Presentation MathML is primarily what is used today.
</p>
<p>MathML can also be written in any text editor, but is generally coded with <abbr>GUI</abbr> editors or
conversion tools from LaTeX or other XML formats.</p>
<h2>AsciiMath</h2>
<p><a href="http://asciimath.org/" target="_blank" rel="noopener noreferrer">AsciiMath</a> is a math markup language for a small set of
the most commonly used mathematical symbols. The
syntax for a symbol is meant to mimic the symbol it represents, similar in spirit to emotive
<abbr>ASCII</abbr> expressions that predate modern emoticons. It shares some similarity with basic LaTeX
markup.
</p>
<h2>Plain Text</h2>
<p>The <a href="https://unicode-table.com/en/sets/mathematical-signs/" target="_blank" rel="noopener noreferrer">Unicode Character Set</a>
contains a large collection of mathematical symbols that can be typed in plain
text, without any special markup. This is only practical for very basic mathematical expressions, as it does
not provide any additional formatting structure for fractions, matrices, and other special mathematical needs.
Further, while the Unicode Character Set is updated periodically, it cannot immediately be amended to work
with custom symbols. Still, it is worth mentioning because Unicode symbols will provide uniform semantic
information to assistive technology across all platforms. This is the gold standard for accessibility.</p>
</article>
</section>
<section class="main-section" id="typesetting_software">
<h1>Typesetting Software</h1>
<article>
<p>Any math markup can be written in any plain text editor, but a typesetting engine is needed to interpret the
markup and render the resulting mathematics. Thus, most authors use an integrated development environment
(<abbr>IDE</abbr>), a software suite that provides all the necessary functionality in one package. A few
popular software tools are listed here, but there are many more available with their own unique features.</p>
<h2>LaTeX</h2>
<p>The LaTeX typesetting system includes:</p>
<ul>
<li>The core typesetting engine</li>
<li>A collection of add-on libraries</li>
<li>A self-updating utility</li>
<li>An editor</li>
</ul>
<p>Versions vary by operating system:</p>
<ul>
<li><a href="https://www.tug.org/mactex/" target="_blank" rel="noopener noreferrer">MacTeX</a> -- MacOS</li>
<li><a href="https://miktex.org/" target="_blank" rel="noopener noreferrer">MikTeX</a> -- Windows and MacOS</li>
<li>Linux -- varies by distribution</li>
</ul>
<p>Popular <abbr>IDE</abbr>s are:</p>
<ol>
<li><a href="https://www.overleaf.com/" target="_blank" rel="noopener noreferrer">Overleaf</a> -- online (no installation required)</li>
<li><a href="https://pages.uoregon.edu/koch/texshop/index.html" target="_blank" rel="noopener noreferrer">TeXShop</a> -- Mac (comes
included with MacTeX)</li>
<li><a href="https://tug.org/texworks/" target="_blank" rel="noopener noreferrer">TeXworks</a> -- Windows, MacOS, Linux</li>
<li><a href="https://www.texstudio.org/" target="_blank" rel="noopener noreferrer">TeXstudio</a> -- Windows, MacOS, Linux</li>
<li><a href="https://www.lyx.org/" target="_blank" rel="noopener noreferrer">LyX</a> -- Windows, MacOS, Linux, ChromeOS, OS/2, Haiku
</li>
</ol>
<p>
The <a href="https://editor.codecogs.com/" target="_blank" rel="noopener noreferrer">Code-Cogs Online LaTeX Editor</a> is a helpful
browser based reference tool for popular LaTeX symbols.
</p>
<p>
More information is available at <a href="https://www.latex-project.org/" target="_blank" rel="noopener noreferrer">The LaTeX Project</a> website.
</p>
<p>
<a href="https://www.chikrii.com" target="_blank" rel="noopener noreferrer">Chikrii Software</a> offers the Tex2Word and Word2Tex converters for Microsoft Word to read and save documents in <span class="inline-code">tex</span> format. LaTeX formulas are rendered as MathML objects in Word, and vice versa.
</p>
<h2>MathML</h2>
<p>
MathML can be coded in any editor just like HTML. Most authors prefer to use a <abbr>GUI</abbr> editor rather than code MathML directly. To see why, please see the <a href="#code_examples">Code Examples</a> section for a comparison of MathML and LaTeX.</p>
<p>Popular MathML <abbr>GUI</abbr> editors:</p>
<ol>
<li>Wiris <a href="https://www.wiris.com/en/mathtype/" target="_blank" rel="noopener noreferrer">MathType</a> -- standalone, or as a plug-in to commercial word processing software such as <a href="https://support.microsoft.com/en-us/office/insert-mathematical-symbols-91a4b04c-84a8-4de9-bd13-8609e14bed58" target="_blank" rel="noopener noreferrer">Microsoft Word</a></li>
<li>Wiris <a href="https://docs.wiris.com/en/mathflow/start" target="_blank" rel="noopener noreferrer">MathFlow</a> -- as a part of
various professional XML systems</li>
<li>Scand <a href="https://scand.com/products/mathml-kit/" target="_blank" rel="noopener noreferrer">MathML-Kit</a> -- as a plug-in for Adobe Creative
Suite</li>
<li><a href="https://www.mathcha.io/" target="_blank" rel="noopener noreferrer">Mathcha</a> -- online or downloadable Notebook editor (Mac/Windows/Linux)</li>
<li><a href="https://www.mathmlcentral.com/" target="_blank" rel="noopener noreferrer">MathML Central</a> -- online converter by Wolfram
Research</li>
</ol>
<p><abbr>GUI</abbr> editors offer interactive menus and an instant preview of the output without the need to learn the underlying markup language.
<!-- This may be more efficient for authoring documents with a small amount of mathematical content. -->
</p>
<p>Some limitations of this method:</p>
<ul>
<li><abbr>GUI</abbr> editors are not always accessible friendly.</li>
<li><abbr>GUI</abbr> editors are not efficient for long-form mathematics.
<li>MathML is not natively supported in all browsers (most notably, <a href="https://chromestatus.com/feature/5240822173794304" target="_blank" rel="noopener noreferrer">Chrome</a>).</li>
</ul>
<p>To remedy this last point, there are Javascript tools that will render MathML in any modern
browser. This is discussed in the <a href="#web_display_engines">Web Display Engines</a> section.</p>
<h2>AsciiMath</h2>
<p>AsciiMath can be written with a text editor or any <abbr>HTML</abbr> authoring software. It is rendered in a
web browsers with the MathJax display engine. Instructions are provided on the <a href="http://asciimath.org/" target="_blank" rel="noopener noreferrer">AsciiMath home
page</a>.</p>
<h2>GNU TeXmacs</h2>
<p><a href="https://www.texmacs.org/tmweb/home/welcome.en.html" target="_blank" rel="noopener noreferrer">GNU TeXmacs</a> is a typesetting system that uses its own internal markup for rendering mathematics and scientific expressions. It was created as an alternative to LaTeX, incorporating realtime rendering and a more standardized internal data structure that can export to several different output formats. It is free and extensible, and can also operate as a front end for a number of other powerful mathematical software packages.
</p>
<p>Unfortunately, there is no mention of accessibility support in the TeXmacs documentation. Further testing is needed to determine how
its conversions to <abbr>HTML</abbr> and MathML react with screen readers.
</p>
</article>
</section>
<section class="main-section" id="web_display_engines">
<h1>Web Display Engines</h1>
<article>
<p>
LaTeX is widely adopted and efficient to code, but does not yet provide a navigable document structure to assistive technology. MathML provides this structure, but it is much longer to code and not supported in some browsers. To bridge this gap, there are JavaScript tools that convert LaTeX markup to MathML and display the MathML in a browser:
</p>
<ol>
<li>MathJax</li>
<li>KaTeX</li>
<li>MathLive</li>
<li>MathQuill</li>
<li>Latex.css</li>
</ol>
<p>
These tools aim to provide a "best of both worlds" approach, where assistive technology can navigate MathML just as easily as <abbr>HTML</abbr>, while the underlying LaTeX markup can be translated to screen reader and Braille output. Each varies in its scope, method of application, and accessibility support.
</p>
<h2>MathJax</h2>
<p><a href="https://www.mathjax.org/" target="_blank" rel="noopener noreferrer">MathJax</a> is the most popular method to render
mathematics on the web. The MathJax engine searches an <abbr>HTML</abbr> document for mathematics markup
embedded between LaTeX-style math mode delimiters (which are customizable), and renders it as math content on
a web page. Users can customize the display formats (MathML fonts or <abbr>SVG</abbr> graphic), extract the
math markup in both the LaTeX and MathML formats, and customize its math Speech Rule Engine
(<abbr>SRE</abbr>). It integrates well with major content and learning management systems, and its excellent
accessibility support makes it a key component of porting long-form mathematics into accessible friendly
formats.</p>
<h2>KaTeX</h2>
<p><a href="https://katex.org/" target="_blank" rel="noopener noreferrer">KaTeX</a> is an engine that purports to render much faster than
MathJax. This can provide a significant load time speedup for longer documents with a dense amount of LaTeX
markup. Unfortunately, at this time, KaTeX has zero accessibility support, as assistive technology cannot read
the MathML rendered by KaTeX. Therefore, it is <strong>not advisable</strong> to use KaTeX to port mathematics
for non-sighted users.</p>
<h2>MathLive</h2>
<p><a href="https://cortexjs.io/mathlive/" target="_blank" rel="noopener noreferrer">MathLive</a> is a component of the <a
href="https://cortexjs.io/" target="_blank" rel="noopener noreferrer">Cortex.js</a> family of web-based mathematical applications.
MathLive accepts LaTeX input, offers a virtual keyboard with popular mathematical symbols, and offers a choice
between its own built-in speech rules for screen reader math output or the same Speech Rule Engine
(<abbr>SRE</abbr>) used in MathJax, both of which are customizable.</p>
<h2>MathQuill</h2>
<p><a href="http://mathquill.com/" target="_blank" rel="noopener noreferrer">MathQuill</a> offers an interactive web formula editor where
users can enter text or LaTeX-style math markup and see it rendered into MathML in real-time. Users can also
render static formulas in a web page through its coding interface. MathQuill does not appear to offer
support for screen readers nor other assistive technology at this time.</p>
<h2>LaTeX.css</h2>
<p><a href="https://latex.vercel.app/" target="_blank" rel="noopener noreferrer">LaTeX.css</a> is a very cleverly constructed
<abbr>CSS</abbr> library that faithfully reproduces LaTeX-style formatting for numerous LaTeX environments,
providing a more seamless transition for those coming from a LaTeX background. LaTeX.css is not its own
JavaScript math display engine; rather, it uses MathJax to render mathematics formula, giving it a full
set of accessibility features.
</p>
</article>
</section>
<section class="main-section" id="conversion_tools">
<h1>Conversion Tools</h1>
<article>
<p>Web display engines only read and render mathematics markup already contained in an <abbr>HTML</abbr>
document.
The HTML document must be configured to use a display engine through its <span
class="inline-code"><script></span>
parameters, and most likely will require some <abbr>CSS</abbr> styling to accommodate different devices
accessing the content.
This contrasts with the LaTeX philosophy where an author should not have to worry about presentation and
styling.</p>
<p>Beyond this, one may need to convert entire documents containing a host of other content.
An article written in LaTeX, for example, may contain:</p>
<ol>
<li>Inline mathematics</li>
<li>Block display mathematics</li>
<li>Abstract</li>
<li>Table of Contents</li>
<li>Document Sections</li>
<li>Tables</li>
<li>Special formatting for content blocks such as theorems, lemmas, and definitions.</li>
<li>Numbered or bulleted lists</li>
<li>Images</li>
<li>Figures</li>
<li>Code Blocks</li>
<li>Footnotes</li>
<li>Automatic numbering for any of the above</li>
<li>Bibliography</li>
</ol>
<p>As many of these elements are also native to <abbr>HTML</abbr>, a direct conversion is theoretically
<em>possible</em>, but quite difficult in practice.
</p>
<p>There are several document conversion tools to assist with this part of the process. Each has their own
strengths, and each conversion will require some additional testing for responsiveness across devices and
accessibility support. The tools discussed here are:</p>
<ol>
<li>Markdown</li>
<li>Pandoc</li>
<li>TeX4ht</li>
<li>LaTeXML</li>
<li>LaTeX.js</li>
<li>LaTeX2HTML</li>
<li>sTeX</li>
</ol>
<h2>Markdown</h2>
<p><a href="https://www.markdownguide.org/getting-started/" target="_blank" rel="noopener noreferrer">Markdown</a> is not so much a
conversion <em>tool</em> as it is a markup language itself that is meant to <em>be converted</em> into
<abbr>HTML</abbr>. Markdown is a bridge between plain text and <abbr>HTML</abbr>, designed for fast authoring
but still readable as plain text. Markdown uses syntax such as <span class="inline-code">*emphasis
text*</span> to represent <em>emphasis text</em> and <span class="inline-code">**strong**</span> to
represent <strong>strong text</strong>. It is an ideal option for authors that want to minimize the amount of
additional coding needed to render their work.
</p>
<p>Markdown can be written in any text editor, but requires a Markdown reader to render its output. Many
browsers, collaborative workspaces, and online forums can automatically
read and render Markdown. Markdown has also been expanded and customized within different
document editing software. See, for example, the entry on <a href="#r_markdown">R Markdown</a> below.</p>
<p>LaTeX markup can be included in a Markdown document by enclosing the LaTeX code between math mode delimiters,
just as in an <abbr>HTML</abbr> document. Then, the entire Markdown document can be converted to
<abbr>HTML</abbr> by a popular tool called Pandoc. This process is described below. Sample code is provided in the <a href="#code_examples">Code Examples</a> section.
</p>
<h2>Pandoc</h2>
<p><a href="https://pandoc.org/index.html" target="_blank" rel="noopener noreferrer">Pandoc</a> is an extremely powerful "universal
document converter" capable of parsing and converting between hundreds of file formats. It is run from a
command line interface (<abbr>CLI</abbr>) by specifying the to- and from- formats along with any special
options available to those formats. An example is provided in the <a href="#pandoc_example">Code Examples</a> section.</p>
<p>Pandoc can call MathJax (or another engine) to render mathematics when it converts a document
to <abbr>HTML</abbr>. The resulting <abbr>HTML</abbr> file will have MathJax automatically set up in the <span
class="inline-code">script</span> section, and can work as a template for future use.</p>
<p>Pandoc can also convert directly from a LaTeX source file, but content
such as figures, tables, section headers, and other structured LaTeX syntax might not translate
as well into HTML. The recommended approach is to write the document in Markdown and
enclose mathematics between math mode delimiters. Pandoc uses its own expanded version of Markdown
(called <a href="https://pandoc.org/MANUAL.html#pandocs-markdown" target="_blank" rel="noopener noreferrer">Pandoc Markdown</a>)
with its own syntax for this extra structure.</p>
<p>We encourage you to read about the many capabilities of Pandoc at the <a href="https://pandoc.org/index.html" target="_blank" rel="noopener noreferrer">Pandoc home page</a>.</p>
<h2 id="tex4ht">TeX4ht</h2>
<p><a href="https://tug.org/tex4ht/" target="_blank" rel="noopener noreferrer">TeX4ht</a> was developed in 2004 to convert directly from
TeX source files to <abbr>HTML</abbr> and several other formats. It is now included as part of the TeXLive and
MikTeX distributions. It incorporates MathJax (and other methods) for mathematics output, includes the ability
to add some custom <abbr>CSS</abbr> to the final <abbr>HTML</abbr> output, can convert documents written with
<a href="#r_markdown">R Markdown</a> and <a href="https://www.overleaf.com/" target="_blank" rel="noopener noreferrer">Overleaf</a>, and has other unique features.</p>
<p>The article <a href="https://www.ams.org/journals/notices/202301/rnoti-p68.pdf" target="_blank" rel="noopener noreferrer">Making Accessible Documents Using LaTeX</a> by Eric Larson and Isabel Vogt shows an example of how to use TeX4ht.</p>
<h2>LaTeXML</h2>
<p>
<a href="https://math.nist.gov/~BMiller/LaTeXML/">LaTeXML</a> was developed to convert LaTeX markup to an
internal <abbr>XML</abbr> format specifically for the <a href="https://dlmf.nist.gov/" target="_blank" rel="noopener noreferrer">Digital Library of Mathematical Functions</a> (<abbr>DLMF</abbr>) project at the <a href="https://www.nist.gov/" target="_blank" rel="noopener noreferrer">National Institute of Standards and Technology</a> (<abbr>NIST</abbr>). In turn, the
internal <abbr>XML</abbr> can be used to export to <abbr>HTML</abbr>, with various customizable settings.
LaTeXML offers a <a href="https://latexml.mathweb.org/editor" target="_blank" rel="noopener noreferrer">sample web editor</a> that converts user input to rendered <abbr>HTML</abbr>, with numerous built-in examples.
</p>
<p>
LaTeXML was recently used to convert the <a href="https://ar5iv.labs.arxiv.org" target="_blank" rel="noopener noreferrer">arXiv research library to HTML</a>. This is an exciting development that could boost accessibility adoption for mathematics and science research everywhere.
</p>
<h2>LaTeX.js</h2>
<p><a href="https://latex.js.org/" target="_blank" rel="noopener noreferrer">LaTeX.js</a> is an interesting engine that ports full LaTeX
documents into <abbr>HTML</abbr> while also reproducing their original LaTeX style formatting, similar to
LaTeX.css. The web site showcases a side by side comparison of a sample LaTeX document to the rendered
<abbr>HTML</abbr>. The engine is extensible and the project aims to automate translation of more native LaTeX
environments. LaTeX.js uses the KaTeX engine to render mathematical formulas, and thus does not have
accessibility support at this time.
</p>
<h2>LaTeX2HTML</h2>
<p><a href="https://www.latex2html.org/" target="_blank" rel="noopener noreferrer">LaTeX2HTML</a> was way ahead of the curve, dating back
to 1999. It is a command line tool that converts a LaTeX document into several <abbr>HTML</abbr> files to
provide
a paginated navigation similar to the original LaTeX PDF output. It automatically generates necessary
hyperlinks, recreates lists, and converts mathematics, tables, and figures as into images. While the process
does not provide alt-text, an author can insert alt-text for all necessary components.</p>
<h2>sTeX</h2>
<p>
<a href="https://kwarc.info/systems/sTeX/" target="_blank" rel="noopener noreferrer">sTeX</a> is a set of LaTeX packages designed to embed semantic information in LaTeX generated output. sTeX can generate a PDF with some annotations and a (much richer) annotated HTML document using MathML with the <a href="#openmath">OpenMath</a> (or other user chosen) reference library. sTeX also offers a plug-in for LaTeXML.
</p>
<p>
sTeX is under active development, and requires some additional manual set up to use. Please read the<a href="https://github.com/slatex/sTeX/tree/main/doc" target="_blank" rel="noopener noreferrer">sTeX documentation</a> for detailed instructions and example content.
</p>
</article>
</section>
<section class="main-section" id="screen_readers">
<h1>Screen Readers</h1>
<article>
<p>A screen reader is a software program that translates text from a computer screen into speech audio or
braille. They are a cornerstone of how users with impaired vision interact with computers. When documents are
created with full accessibility support, a screen reader announces the structure of the document before
reading the content aloud.</p>
<p>Popular Screen Readers:
<ol>
<li><a href="https://www.apple.com/accessibility/vision/" target="_blank" rel="noopener noreferrer">VoiceOver</a> - Apple</li>
<li><a href="https://www.freedomscientific.com/products/software/jaws/" target="_blank" rel="noopener noreferrer">JAWS</a> - Windows
</li>
<li><a href="https://www.nvaccess.org" target="_blank" rel="noopener noreferrer">NVDA</a> - Windows</li>
<li><a href="https://support.google.com/accessibility/android/answer/6283677?hl=en"
target="_blank" rel="noopener noreferrer">Talkback</a> - Android</li>
<li><a href="https://help.gnome.org/users/orca/stable/introduction.html.en" target="_blank" rel="noopener noreferrer">Orca</a> - Linux
</li>
<li><a
href="https://support.microsoft.com/en-us/windows/complete-guide-to-narrator-e4397a0d-ef4f-b386-d8ae-c172f109bdb1"
target="_blank" rel="noopener noreferrer">Narrator</a> - Windows</li>
</ol>
</p>
<p>
The American Foundation for the Blind (<abbr>AFB</abbr>) maintains an <a
href="https://www.afb.org/blindness-and-low-vision/using-technology/assistive-technology-products/screen-readers">extensive
list of screen readers</a>. Screen readers are most commonly controlled with keyboards or a <a href="https://www.afb.org/node/16207/refreshable-braille-displays"
target="_blank" rel="noopener noreferrer">Refreshable Braille Display</a>, but can be used with any computer input device.
</p>
<p>
You may wish to view:
<ul>
<li>A <a href="https://www.youtube.com/watch?v=dEbl5jvLKGQ" target="_blank" rel="noopener noreferrer">screen reader demonstration
video</a> by Mark Sutton
</li>
<li>
An <a href="https://www.youtube.com/watch?v=9_K5-4ngDtE" target="_blank" rel="noopener noreferrer">overview of JAWS, NVDA, and
VoiceOver</a> by <a href="https://www.perkins.org/resource/challenge-solutions-group-blind-students-podcastingvideo-blogging/" target="_blank" rel="noopener noreferrer">Challenge Solutions</a>
</li>
</ul>
</p>
</article>
</section>
<section class="main-section" id="alt_text_for_math">
<h1>Alt-Text for Math</h1>
<article>
<p>
Screen readers convey mathematics through alt-text descriptions of mathematical expressions.
The alt-text description is at the heart of accessible mathematics. Like markup, it has a dual objective:
convey how the mathematical expression is written (the presentation) and what it is meant to represent (the
content).
</p>
<p>
Alt-text can be provided by:
<ol>
<li>The author</li>
<li>An <a href="https://developer.mozilla.org/en-US/docs/Web/MathML/Element/semantics"
target="_blank" rel="noopener noreferrer">encoding library</a>, a database of semantic meanings of mathematical symbols, such as <a
href="https://openmath.org/" target="_blank" rel="noopener noreferrer">OpenMath</a></li>
<li>A <a href="#math_speech_engines">mathematics speech engine</a>, a software generated translation of the
mathematical markup</li>
</ol>
</p>
<p>
Alt-text can appear in:
<ol>
<li>Plain text that references the mathematical expression</li>
<li>The <span class="inline-code">alt</span> property in an <a href="https://stackoverflow.com/a/68642955"
target="_blank" rel="noopener noreferrer">image of the mathematical expression</a></li>
<li>The <span class="inline-code">alttext</span> property in a <span class="inline-code"><math></span>
tag in a <a href="https://jats.nlm.nih.gov/archiving/tag-library/1.1d1/n-chc2.html" target="_blank" rel="noopener noreferrer">MathML
expression</a></li>
<li>
An <span class="inline-code">aria-label</span> property in a <a
href="https://www.w3.org/WAI/WCAG21/Techniques/aria/ARIA6" target="_blank" rel="noopener noreferrer">container around the
mathematical content</a>
</li>
</ol>
</p>
<p>Best practices for writing
and providing alt-text is an active, ongoing area of research. Some current institutional efforts are:
<ol>
<li>
<p>
The <a href="https://www.w3.org/Math/" target="_blank" rel="noopener noreferrer">W3C MathML group</a> is revising methods for
default and user-generated alt-text descriptions. Please see:
</p>
<ul>
<li>
MathML Working Group <a href="https://lists.w3.org/Archives/Public/www-math/2021Dec/0001.html"
target="_blank" rel="noopener noreferrer">public mailing list</a> (follow the discussion to present)
</li>
<li>
<a href="https://hackmd.io/@dginev/SkBHsZTiO" target="_blank" rel="noopener noreferrer">ARIA experiment with MathML</a>
</li>
<li>
<a href="https://samdooley.github.io/mathml-docs/intent2cmml/intent.html#intent_attribute"
target="_blank" rel="noopener noreferrer">Intent
Property proposal</a> and <a href="https://mathml-refresh.github.io/discussion-papers/semantics-mini#summary" target="_blank" rel="noopener noreferrer">numerous examples of its capability</a>.
</li>
<li>
Updated annotations in the <a href="https://w3c.github.io/mathml/#mixing" target="_blank" rel="noopener noreferrer">MathML 4.0
Draft</a>
</li>
</ul>
</li>
<li>
<p>
Since MathML is still not natively supported in all browsers, MathJax is
currently the best option for cross-platform compatibility. MathJax uses the <a
href="#speed_rule_engine">Speech Rule Engine</a> (SRE), mentioned in the next section, for accessibility
support. SRE
generates alt-text from math markup and stores it in <span class="inline-code">aria-labels</span> (links)
</p>
</li>
<li>
<p>
Members of the <a href="https://tug.org/" target="_blank" rel="noopener noreferrer">TeX Users Group</a> (TUG) and <a href="https://www.latex-project.org/" target="_blank" rel="noopener noreferrer">LaTeX 3
Project</a> are exploring methods to generate accessible PDFs from
LaTeX. Please see the <a href="#tagged_pdf">Tagged PDF</a> section for more information.
</p>
</li>
</ol>
</p>
<p>
The standardization of translation of mathematical expressions is a difficult issue. Mathematics is conveyed
differently among different people, and there is no single ideal method.
</p>
<p>
Note that in terms of user experience, a sighted reader can scan elements in a syntactic expression, compare
them each against a text description, and then process the full semantic meaning. Screen reader users cannot
yet
navigate both in tandem. Providing the same synchronous behavior for screen reader users is tied to the issue
of alt-text.
</p>
</article>
</section>
<section class="main-section" id="math_speech_engines">
<h1>Math Speech Engines</h1>
<article>
<p>
There are specialized speech engines for math that provide a more natural, context-based translation of math
markup:
<ol>
<li id="speech_rule_engine"> Speech Rule Engine</li>
<li>MathSpeak</li>
<li>MathCAT</li>
</ol>
These engines do not replace the screen readers mentioned in the previous section. Rather, they interact with
math elements to produce an
alternative speech and Braille output than the default output of a general screen reader. They can also be
customized around different spoken word conventions for math.
</p>
<h2>Speech Rule Engine</h2>
<p>
<a href="https://speechruleengine.org/" target="_blank" rel="noopener noreferrer">Speech Rule Engine</a> (SRE) is a JavaScript based engine, originally part of the ChromeVox Screen Reader extension for the Chrome browser. It has its own internal default semantic definitions for mathematical expressions, can generate speech translations from LaTeX or AsciiMath markup, has multiple modes of math speech output, and can translate into several languages and Nemeth Braille.
The SRE <a href="https://speech-rule-engine.github.io/semantic-tree-visualiser/visualise.html" target="_blank" rel="noopener noreferrer">semantic tree visualizer</a> demonstrates how it parses mathematical markup, with speech customization options. SRE comes bundled with MathJax, can run as a standalone application, and is configurable with several browsers.
</p>
<h2>MathSpeak</h2>
<p>
<a href="https://www.seewritehear.com/learn/mathspeak-and-mathspeak-rules/" target="_blank" rel="noopener noreferrer">MathSpeak</a>
was developed by Abraham Nemeth, based on <a href="https://accessinghigherground.org/handouts2013/HTCTU%20Alt%20Format%20Manuals/Math%20Accommodations/07%20MATHSPEAK.pdf" target="_blank" rel="noopener noreferrer">Nemeth Braille translation rules</a>. It is maintained and available commercially through <a href="https://www.seewritehear.com/learn/mathspeak-and-mathspeak-rules/" target="_blank" rel="noopener noreferrer">SeeWriteHear</a>, an accessibility services provider.
</p>
<h2>MathCAT</h2>
<p>
<a href="https://nsoiffer.github.io/MathCAT/" target="_blank" rel="noopener noreferrer">MathCAT</a> (Math Capable Assitive Technology) grew out of <a href="https://docs.wiris.com/en/mathplayer/start#using_mathplayer" target="_blank" rel="noopener noreferrer">MathPlayer</a>, both developed to translate MathML into speech and Nemeth Braille. (MathPlayer is no longer maintained, but its documentation is still available for legacy users). MathCAT improves upon MathPlayer's output capabilities, and will make use of MathML's upcoming <span class="inline-code">intent</span> attribute to allow authors to better control speech output of MathML expressions.
</p>
<h2>Ongoing Research</h2>
<p>
There is a large volume of research on speech generation from mathematics available at <a href="https://www.semanticscholar.org/" target="_blank" rel="noopener noreferrer">Semantic Scholar</a>. Two suggested articles are:
<ul>
<li>
<a href="https://www.semanticscholar.org/paper/Development-and-Initial-Evaluation-of-the-Style-for-Frankel-Brownstein/bdb5abc9fa756d90d858af6e73fbb3c7d24f7edd" target="_blank" rel="noopener noreferrer">Development and Initial Evaluation of the ClearSpeak Style for Automated Speaking of Algebra</a>
</li>
<li>
<a href="https://www.semanticscholar.org/paper/Evaluating-Speech-Synthesis-on-Mathematical-Mazzei-Monticone/e46406ba927d6b7bde78a7d0ecefe58c73ad8d29" target="_blank" rel="noopener noreferrer">Evaluating Speech Synthesis on Mathematical Sentences</a>
</li>
</ul>
</p>
</article>
</section>
<section class="main-section" id="braille">
<h1>Math in Braille</h1>
<article>
<p>There are four standards for authoring and reading mathematics in Braille:</p>
<ol>
<li>Nemeth Braille</li>
<li>UEB</li>
<li>GS8</li>
<li>DotsPlus</li>
</ol>
<p>Hardware and software for reading and authoring Braille are briefly discussed at the end of this section.</p>
<h2>Nemeth Braille</h2>
<p>
The <a href="http://www.brailleauthority.org/mathscience/nemeth1972.pdf" target="_blank" rel="noopener noreferrer">Nemeth Braille Code</a>
was created in 1946 by Dr. Abraham Nemeth to represent mathematical expressions and scientific content that was not possible with the English Braille American Edition (<abbr>EBAE</abbr>) literary Braille system alone. Nemeth Braille uses a 6-dot Braille cell, the same as literary Braille, with a mix of its own unique symbols and standard EBAE. Nemeth expressions are embedded in literary Braille between special opening and closing symbols (called <em>Nemeth Indicators</em>) that inform the reader when a mathematical or scientific expression begins and ends.
</p>
<p>
Nemeth Braille was officially adopted by the Braille Authority of North America (<abbr>BANA</abbr>) in 1952, last revised in 1972, and has been consistenly updated to represent modern mathematics, chemical equations, and other scientific disciplines.
</p>
<p>
More recently, <a href="http://www.dotlessbraille.org/nubs.htm" target="_blank" rel="noopener noreferrer">the Nemeth Uniform Braille System</a> (<abbr>NUBS</abbr>) was proposed to better unify Nemeth Braille with literary Braille.
</p>
<h2><abbr>UEB</abbr></h2>
<p>
<a href="http://www.brailleauthority.org/ueb.html" target="_blank" rel="noopener noreferrer">Unified English Braille</a>
(<abbr>UEB</abbr>)
is an overhaul of English Braille American Edition literary system to modernize and unify literary,
mathematical, and scientific content under one standard, and improve translation
between printed text and Braille. UEB was officially adopted by the Braille Authority of
North America in 2012. UEB uses a different convention for mathematics than Nemeth Braille.
Due to the ubiquity of Nemeth Braille, UEB was updated in 2015 to allow readers to
use their preferred style for mathematics.
</p>
<p>
<a href="https://www.aph.org" target="_blank" rel="noopener noreferrer">American Printing House</a> offers tutorials on <a href="https://nemeth.aphtech.org" target="_blank" rel="noopener noreferrer">Nemeth</a> and <a href="https://uebmath.aphtech.org" target="_blank" rel="noopener noreferrer">UEB Math</a>.
</p>
<h2>GS8</h2>
<p>
<a href="https://web.archive.org/web/20120219024932/http://dots.physics.orst.edu/gs.html"
target="_blank" rel="noopener noreferrer">GS8</a> Braille is named after its two creators, physicist
<a href="https://www.rehab.research.va.gov/jour/06/43/4/gardner.html" target="_blank" rel="noopener noreferrer">John Gardner</a>
and mathematician Norberto Salinas. It was developed to directly mirror LaTeX markup with Braille
symbols. It uses an 8-dot Braille cell to accommodate a large set of base symbols from which the
many thousands of mathematical and scientific symbols available in LaTeX can be constructed.
GS8 is not in wide use, but may be preferable to those authoring in LaTeX.
dCode offers an online <a href="https://www.dcode.fr/gs8-braille-code" target="_blank" rel="noopener noreferrer">GS8 encoder/decoder</a>.
</p>
<h2>DotsPlus</h2>
<p>
<a href="https://www.washington.edu/doit/what-dotsplus-braille" target="_blank" rel="noopener noreferrer">DotsPlus</a> is a
two-dimensional Braille system designed to be a tactile font that mimics a written symbol. It was
developed by John Gardner as a means for educators to present mathematics or other scientific content to blind users without having to learn Braille.
</p>
<h2>Tactile Graphs in Braille</h2>
<p>
Dr. Gardner also pioneered a method to <a href="https://www.sciencenewsforstudents.org/article/printer-makes-visual-aids-for-people-sight-problems" target="_blank" rel="noopener noreferrer">display data and graphs with Braille</a>, and began a company, <a href="https://viewplus.com/about/" target="_blank" rel="noopener noreferrer">ViewPlus Technologies</a>, to provide the technology and services. Please see:
<ul>
<li><a href="https://viewplus.com/wp-content/uploads/2016/08/IntroToEmBrailleColumbiaSales_20160826.pdf" target="_blank" rel="noopener noreferrer">Intro to Tactile Graphics with ViewPlus</a></li>
<li><a href="https://www.youtube.com/watch?v=XWHtAbaP63g" target="_blank" rel="noopener noreferrer">Creating tactile graphics using VP embossers and Tiger Designer</a></li>
</ul>
</p>
<h2>Reading, Writing, and Translating Braille on a Computer</h2>
<p>
The following suggestions were taken from the article <a href="https://www.washington.edu/doit/what-are-some-techniques-creating-braille-math-materials" target="_blank" rel="noopener noreferrer">What are some techniques for creating Braille math materials?</a>, and other online resources. This section is not comprehensive and not meant to be a definitive source. Please be sure to consult a Braille expert at your teaching institution or a <a href="https://www.google.com/search?q=local+organizations+for+the+blind" target="_blank" rel="noopener noreferrer">local organization</a> to proofread any translations to Braille generated from software. The Library of Congress provides a <a href="https://www.loc.gov/nls/resources/blindness-and-vision-impairment/information-advocacy-organizations/" target="_blank" rel="noopener noreferrer">list of organizations</a>. You can also contact the <a href="https://nfb.org/about-us/contact-us" target="_blank" rel="noopener noreferrer">National Federation for the Blind</a> or its <a href="https://nfb.org/about-us/state-affiliates" target="_blank" rel="noopener noreferrer">State Affiliates</a>.
</p>
<p>
Braille can be read from a computer with a <a href="https://www.afb.org/node/16207/refreshable-braille-displays"target="_blank" rel="noopener noreferrer">Refreshable Braille Display</a>,
or printed out onto perforated paper using a <a href="https://www.afb.org/blindness-and-low-vision/using-technology/assistive-technology-products/braille-printers" target="_blank" rel="noopener noreferrer">Braille Printer</a>.
Screen readers have built-in Braille output, with configuration as per instructions for <a href="https://www.freedomscientific.com/training/braille/focus/braille-commands/" target="_blank" rel="noopener noreferrer">JAWS</a>, <a href="https://addons.nvda-project.org/addons/pcKbBrl.en.html" target="_blank" rel="noopener noreferrer">NVDA</a>, <a href="http://macfortheblind.com/documentation" target="_blank" rel="noopener noreferrer">VoiceOver</a>, and <a href="https://support.microsoft.com/en-us/windows/chapter-8-using-narrator-with-braille-3e5f065b-1c9d-6eb2-ec6d-1d07c9e94b20" target="_blank" rel="noopener noreferrer">Narrator</a>.
</p>
<p>
Braille can be written directly on a computer using a Braille keypad or standard keyboard with designated keys for Braille characters. Sample lists of hardware devices are available at:
<ul>
<li>
<a href="https://www.pathstoliteracy.org/tools-writing-braille" target="_blank" rel="noopener noreferrer">Writing Tools for Braille</a>
</li>
<li>
<a href="http://www2.edc.org/ncip/library/vi/input.htm#anchor1536045" target="_blank" rel="noopener noreferrer">Braille Access to Input to a Computer</a>
</li>
</ul>
</p>
<p>
Braille can also be written through software translation of standard text. Two major systems are:
<ul>
<li>
<a href="https://www.brailleblaster.org/" target="_blank" rel="noopener noreferrer">BrailleBlaster</a>, a free, open-source editor based on the <a href="http://liblouis.org/" target="_blank" rel="noopener noreferrer">Liblouis</a> translation engine. BrailleBlaster has support for LaTeX, and can convert to HTML using <a href="#tex4ht">TeX4ht</a>.
</li>
<li>
<a href="https://www.duxburysystems.com/default.asp" target="_blank" rel="noopener noreferrer">Duxbury Braille Translator</a> (DBT) by Duxbury Systems is a commercial software translator with full support for MathML, LaTeX, and translation for over 170 languages. Please see the <a href="https://www.duxburysystems.com/documentation/dbt12.5/mathematics/mathematics.htm" target="_blank" rel="noopener noreferrer">DBT mathematics documentation</a> page for all the support options for math.
</li>
</ul>
</p>
<p>
Other resources for typesetting math in Braille:
<ul>
<li>
MathJax offers <a href="https://docs.mathjax.org/en/latest/basic/a11y-extensions.html" target="_blank" rel="noopener noreferrer">Nemeth Braille output</a>
</li>
<li>
Wiris MathType <a href="https://docs.wiris.com/mathtype/en/mathtype-office-tools/mathtype-7-for-windows-and-mac/ using-mathtype-with-other-applications-and-websites/using-mathtype-with-duxbury-braille-translator.html" target="_blank" rel="noopener noreferrer">works with DBT</a> to offer Braille output capability in Microsoft Word
</li>
<li>
The <a href="https://www.tug.org/tug2021/assets/pdf/Andreas-Papasalouros-slides.pdf" target="_blank" rel="noopener noreferrer">latex2nemeth package</a> for LaTeX offers translation to Nemeth Braille
</li>
<li>
Martin Jarmar's 2012 thesis <a href="https://is.muni.cz/th/t3e0k/dp.pdf" target="_blank" rel="noopener noreferrer">Conversion of Mathematical Documents into Braille</a> details several other software options with accessibility support for mathematics into Braille at the time. Some of the software mentioned is no longer maintained, but may still be in use.
</li>
</ul>
</p>
<p>
There are many different Braille Fonts. Please see:
<ul>
<li>
A <a href="https://www.rnib.org.uk/braille-and-other-tactile-codes-portal-writing-and-producing-braille/braille-fonts" target="_blank" rel="noopener noreferrer">guide for selecting and using Braille fonts</a> provided by the Royal National Institute of Blind People
</li>
<li>
A sample list of fonts at the <a href="https://www.tsbvi.edu/resources/1087-download-braille-and-asl-specialty-fonts" target="_blank" rel="noopener noreferrer">Texas School for the Blind and Visually Impaired</a>
</li>
<li>
A more extensive list at <a href="http://luc.devroye.org/braille.html" target="_blank" rel="noopener noreferrer">Luc Devroye's Database</a>
</li>
</ul>
</p>
<p>
Math can be rendered in DotsPlus using Microsoft Word with MathType. For an overview, please read:
<ul>
<li>
<a href="https://viewplus.com/dotsplus-braille-for-the-mainstream-teacher/" target="_blank" rel="noopener noreferrer">DotsPlus Braille for the Mainstream Teacher</a>
</li>
<li>
<a href="https://viewplus.com/new-technologies-for-accessible-tactile-math-and-accessible-graphics/" target="_blank" rel="noopener noreferrer">New Technologies for Accessible Tactile Math and Accessible Graphics</a>
</li>
</ul>
</p>
</article>
</section>
<section class="main-section" id="math_in_e-books">
<h1>Math in E-books</h1>
<article>
<p>
This section discusses e-book production software geared towards creating accessible-friendly
mathematics and science e-books:
<ol>
<li>PreTeXt</li>
<li>R Markdown</li>
<li>Calibre</li>
<li>DAISY</li>
</ol>
There may be a bit more of a learning curve to these programs than those mentioned in the <a href="#typesetting_software">Typesetting Software</a> section, but these programs significantly ease the entire e-book production process.
</p>
<h2>PreTeXt</h2>
<p>
<a href="https://pretextbook.org" target="_blank" rel="noopener noreferrer">PreTeXt</a>, originally known as MathBook XML,
is an outgrowth of the <a href="https://utmost.aimath.org" target="_blank" rel="noopener noreferrer">Undergraduate Teaching
in Mathematics with Open Software and Textbooks</a> (<abbr>UTMOST</abbr>) project through the
<a href="http://aimath.org/" target="_blank" rel="noopener noreferrer">American Institute for Mathematics</a>
(<abbr>AIM</abbr>). It was originally designed to create freely available open-textbooks on the web, and
has grown into a full accessible-friendly document production system.
</p>
<p>PreTeXt is its own XML that
can be exported to HTML, PDF, Jupyter Notebooks, Nemeth Braille (using MathJax), and other formats. For mathematics,
PreTeXt uses a hybrid of MathML to indicate math mode, LaTeX syntax for mathematics markup, and MathJax for rendering. It can be written in any editor, and it is compiled from a command line interface. An authoring guide, sample files, and several free textbooks written with PreTeXt are all available on the <a href="https://pretextbook.org" target="_blank" rel="noopener noreferrer">PreTeXt website</a>.
</p>
<h2 id="r_markdown">R Markdown</h2>
<p>
<a href="https://rmarkdown.rstudio.com/" target="_blank" rel="noopener noreferrer">R Markdown</a> is an extended version of Markdown that works with in tandem with the <a href="https://www.r-project.org/about.html" target="_blank" rel="noopener noreferrer">R language</a> for
statistical computing. R Markdown allows users to include and execute code from R and several other languages, and export to HTML, PDF, presentation slides, and (many) other formats from the same source. R Markdown can also be used to author articles and shorter documents.
</p>
<p>
<a href="https://bookdown.org/" target="_blank" rel="noopener noreferrer">Bookdown</a> is package for the R language to compile and
generate R Markdown documents into EPUB, MOBI, PDF, and an HTML navigable book format. It uses MathJax to render mathematics, and incorporates LaTeX functionality such as equation auto-numbering, labels and referencing, and theorems and other special environments. The bookdown website has numerous free books available created with bookdown, including guides on <a href="https://bookdown.org/yihui/rmarkdown/" target="_blank" rel="noopener noreferrer">R Markdown</a>, the <a href="https://bookdown.org/yihui/bookdown/" target="_blank" rel="noopener noreferrer">bookdown package</a>, and the <a href="https://rstudio-education.github.io/hopr/" target="_blank" rel="noopener noreferrer">R language</a>.
</p>
<p>
Not only can R Markdown produce a high quality accessible document, it is also a versatile
<a href="https://r-resources.massey.ac.nz/rmarkdown/" target="_blank" rel="noopener noreferrer"> accessible friendly authoring tool</a>. The <a href="https://CRAN.R-project.org/package=BrailleR" target="_blank" rel="noopener noreferrer">BrailleR package</a> lets users code in R directly with Braille.
</p>
<h2>Calibre</h2>
<p><a href="https://calibre-ebook.com/" target="_blank" rel="noopener noreferrer">Calibre</a> is a popular open source,
cross-platform e-book reader, management tool, and e-book authoring software. It uses
MathJax to read LaTeX input and renders mathematics as SVG images. The online user manual
has a <a href="https://manual.calibre-ebook.com/typesetting_math.html" target="_blank" rel="noopener noreferrer">sample HTML
document</a> that can be used as a template for mathematics, as well as a sample EPUB
file of the same content. It may be an easier entry point for LaTeX authors who are already
familiar with HTML to get an ebook up and running without too much extra work.
</p>
<h2>DAISY</h2>
<p><a href="https://daisy.org/" target="_blank" rel="noopener noreferrer">DAISY</a> (Digital Audiobased Information SYstem) is an international consortium
that develops
tools to create and publish accessible reading materials. DAISY helped create
the EPUB standard, pioneered Digital Talking Books (DAISY 3), offers accessible book
production software, and operates as a news, events, and networking source. Please see
<a href="https://daisy.org/activities/" target="_blank" rel="noopener noreferrer">DAISY Activities</a> page for a
detailed list.
</p>
<p>The DAISY XML standard integrates MathML to display math, and provides the option to
synchronize a recorded narration of the mathematical content with it.
This has an advantage over screen readers as an author can best customize the audio
description to meet readers' needs. Authoring information is available
at <a href="https://daisy.org/activities/standards/daisy/mathml/mathml-in-daisy-specification/">DAISY MathML Specifications</a>.
</p>
<h2>E-Readers for Math</h2>
<p>
The EPUB e-book standard is based on HTML, and e-book readers are based on the same core engines as web browsers. The EPUB 3 standard supports MathML, but MathML does not have universal browser support. Therefore, the same concerns apply to rendering mathematics in e-books: MathML code may be used directly, but some publishers opt for SVG images with alt-text. Readers must check with their specific software & device to determine what level of support they have for mathematics.
</p>
<p>
MathJax documentation maintains <a href="https://docs.mathjax.org/en/v2.7-latest/misc/epub.html" target="_blank" rel="noopener noreferrer">list of e-book readers with MathML support</a>.
</p>
</article>
</section>
<section class="main-section" id="tagged_pdf">
<h1>Tagged PDF</h1>
<article>
<p>
<a href="https://taggedpdf.com/what-is-a-tagged-pdf/" target="_blank" rel="noopener noreferrer">Tagged PDF</a> is a semantically enriched PDF that provides meta document
information and navigation structure for
assistive technology. The <a href="https://accessible-docs.com/overview-pdf-ua-standard/" target="_blank" rel="noopener noreferrer">PDF
for Universal Accessibility</a> (<abbr>PDF/UA</abbr>) standard, established in 2012, specifies the
requirements for a PDF to be fully accessible compliant. A short introduction is available at <a
href="https://webaim.org/techniques/acrobat/" target="_blank" rel="noopener noreferrer">WebAIM</a>.
</p>
<p>Since much of mathematics is written and formatted for print by PDF, Tagged PDF is an ideal candidate for
accessible mathematics, alternative to HTML. At this time, however, Tagged PDF does not officially support
mathematics markup. There is a
<span class="inline-code"><formula></span> tag to denote mathematical content. Adobe advises <a
href="https://twitter.com/raymondcamden/status/1511453103178006532?s=20&t=Pw_Xehqv5XFpA0pMrlwaBw"
target="_blank" rel="noopener noreferrer">using an SVG image</a> of the mathematical expression with alt-text for accessibility.
</p>
<p>
Software that can embed mathematics in Tagged PDFs with this method:
<ol>
<li><a href="https://www.washington.edu/accessibility/documents/pdf-word/" target="_blank" rel="noopener noreferrer">Microsoft Word</a>
</li>
<li><a href="https://collegeofthedesert.instructure.com/courses/11049/files/198018/"
target="_blank" rel="noopener noreferrer">OpenOffice
Writer</a></li>
<li><a href="https://wiki.documentfoundation.org/Accessibility/Creating_Accessible_LibreOffice_Files"
target="_blank" rel="noopener noreferrer">LibreOffice</a></li>
<li><a href="https://helpx.adobe.com/indesign/using/structuring-pdfs.html" target="_blank" rel="noopener noreferrer">Adobe InDesign</a>
</li>
<li><a href="https://support.apple.com/en-us/HT210563">Apple Pages, Numbers, KeyNote</a></li>
</ol>
</p>
<p>
PDF editors that can add tags to any PDF document:
<ol>
<li><a href="https://helpx.adobe.com/acrobat/using/creating-accessible-pdfs.html">Adobe Acrobat Pro</a></li>
</li>
<li><a href="https://www.foxit.com/solution/accessibility/" target="_blank" rel="noopener noreferrer">Foxit</a></li>
<li><a href="https://equidox.co" target="_blank" rel="noopener noreferrer">Equidox</a></li>
<li><a href="https://commonlook.com/about/" target="_blank" rel="noopener noreferrer">CommonLook</a></li>
</ol>
</p>
<p>
There are other independent efforts underway to provide Tagged PDF with a robust semantic
structure for mathematics with LaTeX, MathML, and AsciiMath markup.
</p>
<h2>LaTeX</h2>
<p>
The <a href="https://www.tug.org" target="_blank" rel="noopener noreferrer">TeX Users Group</a> (<abbr>TUG</abbr>) has been working to incorporate Tagged PDF functionality into LaTeX:
<ul>
<li><a href="https://tug.org/twg/accessibility/" target="_blank" rel="noopener noreferrer">TeX Users Group Accessibility Working Group</a> </li>
<li><a href="https://tug.org/TUGboat/tb41-2/tb128moore-tagging1.pdf" target="_blank" rel="noopener noreferrer">Tagging with LaTeX</a> by
Ross Moore</li>
<li><a href="http://ceur-ws.org/Vol-1010/paper-01.pdf" target="_blank" rel="noopener noreferrer">Tagged Mathematics in PDFs for
Accessibility and other purposes</a> by Ross Moore</li>
<li><a href="https://tug.org/TUGboat/tb41-1/tb127fischer-accessible.pdf" target="_blank" rel="noopener noreferrer">Creating accessible
pdfs with LaTeX</a> by Ulrike Fischer</li>
<li><a href="https://www.latex-project.org/publications/2020-FMi-TUB-tb129mitt-tagpdf.pdf"
target="_blank" rel="noopener noreferrer">LaTeX
Tagged PDF — A blueprint for a large project</a> by Frank Mittelbach and Chris
Rowley</li>
<li>LaTeX <a href="https://mirror.mwt.me/ctan/macros/latex/contrib/pdfx/pdfx.pdf" target="_blank" rel="noopener noreferrer">pdfx
package</a> documentation</li>
<li>LaTeX <a href="https://ctan.math.washington.edu/tex-archive/macros/latex/contrib/tagpdf/tagpdf.pdf"
target="_blank" rel="noopener noreferrer">tagpdf package</a> documentation</li>
</ul>
More articles are available at <a href="https://researchers.mq.edu.au/en/persons/ross-moore"
target="_blank" rel="noopener noreferrer">Ross Moore's website</a> and the <a href="https://www.latex-project.org/publications/indexbytopic/pdf/" target="_blank" rel="noopener noreferrer">LaTeX Project website</a>.
</p>
<p>
This work is analagous to the efforts to render math in HTML documents. One major difference is text flow.
HTML behaves as one long continuous document that conforms to the
size and shape of the device upon which it is viewed. PDF flows text in discrete pages on a fixed canvas size.
Martin Ruckert's <a href="https://www.tug.org/practicaltex2018/slides/ruckert.pdf">HINT Project</a>
modifies TeX to have the ability to reflow text like HTML.
</p>
<h2>MathML</h2>
<p><a href="https://movemen.com/index.html" target="_blank" rel="noopener noreferrer">MathTools for InDesign</a> by MoveMen (not to be
confused with the <a href="https://ctan.org/pkg/mathtools?lang=en" target="_blank" rel="noopener noreferrer">mathtools package</a> for
LaTeX) is a commercial plugin for Adobe InDesign that allows embedding of MathML into
InDesign. <a href="https://www.axaio.com/doku.php/.en:news:2020-07-27" target="_blank" rel="noopener noreferrer">MadeToTag</a> by Axaio
Software is a commercial plugin that builds on MathTools to offer better Tagged PDF and Accessibility support
by including the semantic structure of MathML, an improvement over images and alt-text.</p>
<p>
Another approach is <a href="https://www.princexml.com/" target="_blank" rel="noopener noreferrer">Prince XML</a>, an HTML
to PDF
converter that can generate Tagged PDF, as explained in <a
href="https://brucelawson.co.uk/2019/making-accessible-tagged-pdfs-with-prince/" target="_blank" rel="noopener noreferrer">Making
accessible
PDFs with Prince</a> by <a href="https://brucelawson.co.uk/" target="_blank" rel="noopener noreferrer">Bruce Lawson</a>. For a
demonstration
of Prince XML's output, please see:
<ul>
<li><a href="https://www.princexml.com/howcome/2016/samples/magic6/magic.xhtml#math" target="_blank" rel="noopener noreferrer">The magic
of Prince HTML source page</a></li>
<li><a href="https://www.princexml.com/howcome/2016/samples/magic6/magic.pdf" target="_blank" rel="noopener noreferrer">The magic of
Prince rendered PDF</a></li>
</ul>
This document suggests some support for MathML. Prince XML's official documentation does not yet mention it.
</p>
<h2>AsciiMath</h2>
<p><a href="https://www.metanorma.org/author/approach/" target="_blank" rel="noopener noreferrer">Metanorma</a> is an open-source XML
authoring system based on the <a href="https://docs.asciidoctor.org/">Asciidoc</a> markup language. Similar to
the Pandoc + Markdown workflow mentioned earlier, Asciidoc + Metanorma's internal XML can output a source file
to several formats. Please see their article on <a
href="https://www.metanorma.org/blog/2021-08-26-pdf-accessibility-for-math-formulas/"
target="_blank" rel="noopener noreferrer">accessibility with mathematics</a>.</p>
</article>
</section>
<section class="main-section" id="code_examples">
<h1>Code Examples</h1>
<article>
<p>
Test LaTeX code in a browser at:
<ul>
<li><a href="https://editor.codecogs.com" target="_blank" rel="noopener noreferrer">Code Cogs Equation Editor</a></li>
<li><a href="https://quicklatex.com/" target="_blank" rel="noopener noreferrer">Quick LaTeX</a></li>
</ul>
</p>
<p>
Test MathML code in a browser at:
<ul>
<li><a href="https://www-archive.mozilla.org/projects/mathml/demo/tester" target="_blank" rel="noopener noreferrer">Mozilla MathML Tester</a></li>
</ul>
Note that the MathML will not display in all browsers. Check <a href="https://caniuse.com/mathml" target="_blank" rel="noopener noreferrer">Can I Use ?</a> for your browser.
</p>
<h2>Fraction</h2>
<p>$$\frac{a}{b}$$</p>
<p>LaTeX:
<code>\frac{a}{b}</code>
</p>
<p>MathML:
<code style="white-space: pre-line"> <math>
<mfrac>
<mi> a </mi>
<mi> b </mi>
</mfrac>
</math>
</code>
</p>
<h2>Geometric Series</h2>
<p>$$S_n = \sum_{i=1}^{n} a r^{i-1} = \frac{a (1-r^n)}{1-r}$$</p>
<p>LaTeX:
<code>S_n = \sum_{i=1}^{n} a r^{i-1} = \frac{a(1-r^n)}{1-r}</code>
</p>
<p>MathML:
<code style="white-space: pre-line";> <math>
<semantics>