This file is indexed.

/usr/share/doc/libjs-mathjax-doc/html/advanced/startup.html is in libjs-mathjax-doc 2.7+20171212-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
  <meta charset="utf-8">
  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  
  <title>The MathJax Startup Sequence &mdash; MathJax 2.7 documentation</title>
  

  
  
  
  

  

  
  
    

  

  
  
    <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
  

  

  
        <link rel="index" title="Index"
              href="../genindex.html"/>
        <link rel="search" title="Search" href="../search.html"/>
    <link rel="top" title="MathJax 2.7 documentation" href="../index.html"/>
        <link rel="next" title="Synchronizing your code with MathJax" href="synchronize.html"/>
        <link rel="prev" title="The MathJax Processing Model" href="model.html"/> 

  
  <script src="../_static/js/modernizr.min.js"></script>

</head>

<body class="wy-body-for-nav" role="document">

   
  <div class="wy-grid-for-nav">

    
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-scroll">
        <div class="wy-side-nav-search">
          

          
            <a href="../index.html" class="icon icon-home"> MathJax
          

          
          </a>

          
            
            
              <div class="version">
                2.7
              </div>
            
          

          
<div role="search">
  <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
    <input type="text" name="q" placeholder="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>

          
        </div>

        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
          
            
            
              
            
            
              <p class="caption"><span class="caption-text">Basic Usage</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../mathjax.html">What is MathJax?</a></li>
<li class="toctree-l1"><a class="reference internal" href="../start.html">Getting Started with MathJax</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installation.html">Installing and Testing MathJax</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration.html">Loading and Configuring MathJax</a></li>
<li class="toctree-l1"><a class="reference internal" href="../config-files.html">Combined MathJax Configurations</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../tex.html">MathJax TeX and LaTeX Support</a></li>
<li class="toctree-l1"><a class="reference internal" href="../mathml.html">MathJax MathML Support</a></li>
<li class="toctree-l1"><a class="reference internal" href="../asciimath.html">MathJax AsciiMath Support</a></li>
<li class="toctree-l1"><a class="reference internal" href="../output.html">MathJax Output Formats</a></li>
<li class="toctree-l1"><a class="reference internal" href="../font-support.html">MathJax Font Support</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../localization.html">MathJax Localization</a></li>
<li class="toctree-l1"><a class="reference internal" href="../safe-mode.html">MathJax Safe-mode</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../community.html">The MathJax Community</a></li>
</ul>
<p class="caption"><span class="caption-text">Configuration options</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../options/index.html">Configuration options</a></li>
</ul>
<p class="caption"><span class="caption-text">Advanced topics</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="model.html">The MathJax Processing Model</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">The MathJax Startup Sequence</a></li>
<li class="toctree-l1"><a class="reference internal" href="synchronize.html">Synchronizing Your Code with MathJax</a></li>
<li class="toctree-l1"><a class="reference internal" href="dynamic.html">Loading MathJax Dynamically</a></li>
<li class="toctree-l1"><a class="reference internal" href="typeset.html">Modifying Math on the Page</a></li>
<li class="toctree-l1"><a class="reference internal" href="toMathML.html">Obtaining the MathML for an Expression</a></li>
<li class="toctree-l1"><a class="reference internal" href="extension-writing.html">Writing MathJax Extensions</a></li>
<li class="toctree-l1"><a class="reference internal" href="debugging-tips.html">Debugging Tips</a></li>
<li class="toctree-l1"><a class="reference internal" href="mathjax-node.html">MathJax on NodeJS</a></li>
</ul>
<p class="caption"><span class="caption-text">The MathJax API</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../api/index.html">Details of the MathJax API</a></li>
</ul>
<p class="caption"><span class="caption-text">Miscellanea</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../misc/accessibility-features.html">Accessibility features</a></li>
<li class="toctree-l1"><a class="reference internal" href="../misc/browser-compatibility.html">Browser Compatibility</a></li>
<li class="toctree-l1"><a class="reference internal" href="../misc/epub.html">EPUB3 Reading Systems</a></li>
<li class="toctree-l1"><a class="reference internal" href="../misc/badges.html">MathJax Badges and Logo</a></li>
<li class="toctree-l1"><a class="reference internal" href="../misc/articles.html">Articles and Presentations</a></li>
<li class="toctree-l1"><a class="reference internal" href="../misc/platforms.html">Using MathJax in Web Platforms</a></li>
<li class="toctree-l1"><a class="reference internal" href="../misc/faq.html">MathJax FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../misc/mathjax-in-use.html">MathJax in Use</a></li>
</ul>
<p class="caption"><span class="caption-text">Upgrading MathJax</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../upgrading/index.html">Upgrading MathJax</a></li>
</ul>
<p class="caption"><span class="caption-text">Reference Pages</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../reference/HTML-snippets.html">HTML snippets</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/CSS-styles.html">CSS style objects</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/localization-strings.html">Localization strings</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/glossary.html">Glossary</a></li>
</ul>

            
          
        </div>
      </div>
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">

      
      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
        
          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
          <a href="../index.html">MathJax</a>
        
      </nav>


      
      <div class="wy-nav-content">
        <div class="rst-content">
          















<div role="navigation" aria-label="breadcrumbs navigation">

  <ul class="wy-breadcrumbs">
    
      <li><a href="../index.html">Docs</a> &raquo;</li>
        
      <li>The MathJax Startup Sequence</li>
    
    
      <li class="wy-breadcrumbs-aside">
        
            
            <a href="../_sources/advanced/startup.rst.txt" rel="nofollow"> View page source</a>
          
        
      </li>
    
  </ul>

  
  <hr/>
</div>
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
           <div itemprop="articleBody">
            
  <div class="section" id="the-mathjax-startup-sequence">
<span id="startup-sequence"></span><h1>The MathJax Startup Sequence<a class="headerlink" href="#the-mathjax-startup-sequence" title="Permalink to this headline"></a></h1>
<p>When you load <code class="docutils literal"><span class="pre">MathJax.js</span></code> into a web page, it configures itself and
immediately begins loading the components it needs.  As MathJax starts
up, it uses its <a class="reference internal" href="synchronize.html#synchronization"><span class="std std-ref">signaling mechanism</span></a>
to indicate the actions that it is taking so that MathJax extensions
can tie into the initialization process, and so other applications
within the page can synchronize their actions with MathJax.</p>
<p>The startup process performs the following actions:</p>
<ul class="simple">
<li>It creates the <code class="docutils literal"><span class="pre">MathJax</span></code> variable, and defines the following
subsystems:<ul>
<li><code class="docutils literal"><span class="pre">MathJax.Object</span></code> (object-oriented programming model)</li>
<li><code class="docutils literal"><span class="pre">MathJax.Callback</span></code> (callbacks, signals, and queues)</li>
<li><code class="docutils literal"><span class="pre">MathJax.Ajax</span></code> (file-loading and style-creation code)</li>
<li><code class="docutils literal"><span class="pre">MathJax.HTML</span></code> (support code for creating HTML elements)</li>
<li><code class="docutils literal"><span class="pre">MathJax.Localization</span></code> (alternative language support)</li>
<li><code class="docutils literal"><span class="pre">MathJax.Message</span></code> (manages the menu line in the lower left)</li>
<li><code class="docutils literal"><span class="pre">MathJax.Hub</span></code> (the core MathJax functions)</li>
</ul>
</li>
</ul>
<ul class="simple">
<li>It then creates the base <code class="docutils literal"><span class="pre">MathJax.InputJax</span></code>,
<code class="docutils literal"><span class="pre">MathJax.OutputJax</span></code>, and <code class="docutils literal"><span class="pre">MathJax.ElementJax</span></code> objects.</li>
</ul>
<ul class="simple">
<li>MathJax sets up the default configuration, and creates the
signal objects used for the startup and hub actions.</li>
</ul>
<ul class="simple">
<li>MathJax locates the <code class="docutils literal"><span class="pre">&lt;script&gt;</span></code> tag that loaded the <code class="docutils literal"><span class="pre">MathJax.js</span></code>
file, and sets the <code class="docutils literal"><span class="pre">MathJax.Hub.config.root</span></code> value to reflect the
location of the MathJax root directory.</li>
</ul>
<ul class="simple">
<li>MathJax determines the browser being used and its version.  It sets
up the <code class="docutils literal"><span class="pre">MathJax.Hub.Browser</span></code> object, which includes the browser
name and version, plus <code class="docutils literal"><span class="pre">isMac</span></code>, <code class="docutils literal"><span class="pre">isPC</span></code>, <code class="docutils literal"><span class="pre">isMSIE</span></code>, and so on.</li>
</ul>
<ul class="simple">
<li>MathJax executes the <code class="docutils literal"><span class="pre">AuthorInit()</span></code> function specified from in-line
<code class="docutils literal"><span class="pre">MathJax</span> <span class="pre">=</span> <span class="pre">{...}</span></code> configuration.</li>
</ul>
<ul class="simple">
<li>MathJax sets up the <code class="docutils literal"><span class="pre">MathJax.Hub.queue</span></code> command queue, and
populates it with the commands MathJax runs at startup.  This
includes creating the <code class="docutils literal"><span class="pre">MathJax.Hub.Startup.onload</span></code> onload
handler that is used to synchronize MathJax’s action with the
loading of the page.</li>
</ul>
<p>Once the <code class="docutils literal"><span class="pre">MathJax.Hub.queue</span></code> is created, the following actions are
pushed into the queue:</p>
<ol class="arabic simple">
<li>Post the <code class="docutils literal"><span class="pre">Begin</span></code> startup signal</li>
</ol>
<ol class="arabic simple" start="2">
<li>Perform the configuration actions:<ul>
<li>Post the <code class="docutils literal"><span class="pre">Begin</span> <span class="pre">Config</span></code> startup signal</li>
<li>Load any configuration files specified via <code class="docutils literal"><span class="pre">config=</span></code> as a script parameter</li>
<li>Perform author configuration from in-line <code class="docutils literal"><span class="pre">MathJax</span> <span class="pre">=</span> <span class="pre">{...}</span></code></li>
<li>Execute the content of the <code class="docutils literal"><span class="pre">&lt;script&gt;</span></code> that loaded MathJax, if it is not empty</li>
<li>Wait for the <code class="docutils literal"><span class="pre">delayStartupUntil</span></code> condition to be met, if one was specified</li>
<li>Execute any <code class="docutils literal"><span class="pre">text/x-mathjax-config</span></code> script blocks</li>
<li>load the files listed in the <code class="docutils literal"><span class="pre">MathJax.Hub.config.config</span></code> array</li>
<li>Post the <code class="docutils literal"><span class="pre">End</span> <span class="pre">Config</span></code> startup signal</li>
</ul>
</li>
</ol>
<ol class="arabic simple" start="3">
<li>Load the cookie values:<ul>
<li>Post the <code class="docutils literal"><span class="pre">Begin</span> <span class="pre">Cookie</span></code> startup signal</li>
<li>Load the menu cookie values</li>
<li>Use the cookie to set the renderer, if it is set</li>
<li>Post the <code class="docutils literal"><span class="pre">End</span> <span class="pre">Cookie</span></code> startup signal</li>
</ul>
</li>
</ol>
<ol class="arabic simple" start="4">
<li>Define the MathJax styles:<ul>
<li>Post the <code class="docutils literal"><span class="pre">Begin</span> <span class="pre">Styles</span></code> startup signal</li>
<li>Load the stylesheet files from the <code class="docutils literal"><span class="pre">MathJax.Hub.config.stylesheets</span></code> array</li>
<li>Define the stylesheet described in <code class="docutils literal"><span class="pre">MathJax.Hub.config.styles</span></code></li>
<li>Post the <code class="docutils literal"><span class="pre">End</span> <span class="pre">Styles</span></code> startup signal</li>
</ul>
</li>
</ol>
<ol class="arabic simple" start="5">
<li>Initialize the Message system (the grey information box in the
lower left)</li>
</ol>
<ol class="arabic simple" start="6">
<li>Load the jax configuration files:<ul>
<li>Post the <code class="docutils literal"><span class="pre">Begin</span> <span class="pre">Jax</span></code> startup signal</li>
<li>Load the jax config files from the <code class="docutils literal"><span class="pre">MathJax.Hub.config.jax</span></code> array<ul>
<li>The jax will register themselves when they are loaded</li>
</ul>
</li>
<li>Post the <code class="docutils literal"><span class="pre">End</span> <span class="pre">Jax</span></code> startup signal</li>
</ul>
</li>
</ol>
<ol class="arabic simple" start="7">
<li>Load the extension files:<ul>
<li>Post the <code class="docutils literal"><span class="pre">Begin</span> <span class="pre">Extensions</span></code> startup signal</li>
<li>Load the files from the <code class="docutils literal"><span class="pre">MathJax.Hub.config.extensions</span></code> array<ul>
<li>Most extensions will post a <code class="docutils literal"><span class="pre">[name]</span> <span class="pre">Ready</span></code> or <code class="docutils literal"><span class="pre">Extension</span>
<span class="pre">[name]</span> <span class="pre">Ready</span></code> startup message when they are loaded (where
<code class="docutils literal"><span class="pre">[name]</span></code> is the name of the extension)</li>
</ul>
</li>
<li>Post the <code class="docutils literal"><span class="pre">End</span> <span class="pre">Extensions</span></code> startup signal</li>
</ul>
</li>
</ol>
<ol class="arabic simple" start="8">
<li>Set the MathJax menu’s renderer value based on the jax that have been
loaded</li>
</ol>
<ol class="arabic simple" start="9">
<li>Wait for the onload handler to fire (in MathJax v2.0 this can
occur on the <code class="docutils literal"><span class="pre">DOMContentLoaded</span></code> event rather than the page’s
<code class="docutils literal"><span class="pre">onload</span></code> event, so processing of mathematics can start earlier)</li>
</ol>
<ol class="arabic simple" start="10">
<li>Set <code class="docutils literal"><span class="pre">MathJax.isReady</span></code> to <code class="docutils literal"><span class="pre">true</span></code></li>
</ol>
<ol class="arabic simple" start="11">
<li>Perform the typesetting pass (preprocessors and processors)<ul>
<li>Post the <code class="docutils literal"><span class="pre">Begin</span> <span class="pre">Typeset</span></code> startup signal</li>
<li>Post the <code class="docutils literal"><span class="pre">Begin</span> <span class="pre">PreProcess</span></code> hub signal</li>
<li>Run the registered preprocessors</li>
<li>Post the <code class="docutils literal"><span class="pre">End</span> <span class="pre">PreProcess</span></code> hub signal</li>
<li>Clear the hub signal history</li>
<li>Post the <code class="docutils literal"><span class="pre">Begin</span> <span class="pre">Process</span></code> hub signal</li>
<li>Process the math script elements on the page<ul>
<li>There are a number of Hub signals generated during math
processing, including a signal that a <code class="docutils literal"><span class="pre">Math</span></code> action is
starting (with a parameter indicating what action that is),
<code class="docutils literal"><span class="pre">Begin</span></code> and <code class="docutils literal"><span class="pre">End</span> <span class="pre">Math</span> <span class="pre">Input</span></code> messages, and <code class="docutils literal"><span class="pre">Begin</span></code> and
<code class="docutils literal"><span class="pre">End</span> <span class="pre">Math</span> <span class="pre">Output</span></code> signals.</li>
<li>Each new math element generates a <code class="docutils literal"><span class="pre">New</span> <span class="pre">Math</span></code> hub signal
with the math element’s ID</li>
</ul>
</li>
<li>Post the <code class="docutils literal"><span class="pre">End</span> <span class="pre">Process</span></code> hub signal</li>
<li>Post the <code class="docutils literal"><span class="pre">End</span> <span class="pre">Typeset</span></code> startup signal</li>
</ul>
</li>
</ol>
<ol class="arabic simple" start="12">
<li>Jump to the location specified in the URL’s hash reference, if
any.</li>
</ol>
<ol class="arabic simple" start="13">
<li>Initiate timers to load the zoom and menu code, if it hasn’t
already been loading in the configuration (so it will be ready
when the user needs it).</li>
</ol>
<ol class="arabic simple" start="14">
<li>Post the <code class="docutils literal"><span class="pre">End</span></code> startup signal</li>
</ol>
<p>The loading of the jax and extensions in steps 6 and 7 are now done in
parallel, rather than sequentially.  That is, all the jax and extensions
are requested simultaneously, so they load concurrently.  That means they
can load in any order, and that the begin and end signals for the jax and
extensions can be intermixed.  (In general, you will get <cite>Begin Jax</cite>
followed by <cite>Begin Extensions</cite>, but the order of <cite>End Jax</cite> and <cite>End
Extensions</cite> will depend on the files being loaded.)  Both 6 and 7 must
complete, however, before 8 will be performed.</p>
<p>See the <a class="reference external" href="https://github.com/mathjax/MathJax/tree/master/test/sample-signals.html">test/sample-signals.html</a> file
to see the signals in action.</p>
</div>


           </div>
           <div class="articleComments">
            
           </div>
          </div>
          <footer>
  
    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
      
        <a href="synchronize.html" class="btn btn-neutral float-right" title="Synchronizing your code with MathJax" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
      
      
        <a href="model.html" class="btn btn-neutral" title="The MathJax Processing Model" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
      
    </div>
  

  <hr/>

  <div role="contentinfo">
    <p>
        &copy; Copyright 2017 The MathJax Consortium.

    </p>
  </div>
  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 

</footer>

        </div>
      </div>

    </section>

  </div>
  


  

    <script type="text/javascript">
        var DOCUMENTATION_OPTIONS = {
            URL_ROOT:'../',
            VERSION:'2.7',
            COLLAPSE_INDEX:false,
            FILE_SUFFIX:'.html',
            HAS_SOURCE:  true,
            SOURCELINK_SUFFIX: '.txt'
        };
    </script>
      <script type="text/javascript" src="../_static/jquery.js"></script>
      <script type="text/javascript" src="../_static/underscore.js"></script>
      <script type="text/javascript" src="../_static/doctools.js"></script>

  

  
  
    <script type="text/javascript" src="../_static/js/theme.js"></script>
  

  
  
  <script type="text/javascript">
      jQuery(function () {
          SphinxRtdTheme.StickyNav.enable();
      });
  </script>
   

</body>
</html>