1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- # -*- coding: utf-8 -*-
- """
- Latex Plugin For Pelican
- ========================
- This plugin allows you to write mathematical equations in your articles using Latex.
- It uses the MathJax Latex JavaScript library to render latex that is embedded in
- between `$..$` for inline math and `$$..$$` for displayed math. It also allows for
- writing equations in by using `\begin{equation}`...`\end{equation}`.
- """
- from pelican import signals
- # Reference about dynamic loading of MathJax can be found at http://docs.mathjax.org/en/latest/dynamic.html
- # The https cdn address can be found at http://www.mathjax.org/resources/faqs/#problem-https
- latexScript = """
- <script type= "text/javascript">
- var s = document.createElement('script');
- s.type = 'text/javascript';
- s.src = 'https:' == document.location.protocol ? 'https://c328740.ssl.cf1.rackcdn.com/mathjax/latest/MathJax.js' : 'http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML';
- s[(window.opera ? "innerHTML" : "text")] =
- "MathJax.Hub.Config({" +
- " config: ['MMLorHTML.js']," +
- " jax: ['input/TeX','input/MathML','output/HTML-CSS','output/NativeMML']," +
- " TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'], equationNumbers: { autoNumber: 'AMS' } }," +
- " extensions: ['tex2jax.js','mml2jax.js','MathMenu.js','MathZoom.js']," +
- " tex2jax: { " +
- " inlineMath: [ [\'$\',\'$\'] ], " +
- " displayMath: [ [\'$$\',\'$$\'] ]," +
- " processEscapes: true }, " +
- " 'HTML-CSS': { " +
- " styles: { '.MathJax .mo, .MathJax .mi': {color: 'black ! important'}} " +
- " } " +
- "}); ";
- (document.body || document.getElementsByTagName('head')[0]).appendChild(s);
- </script>
- """
- def addLatex(gen, metadata):
- """
- The registered handler for the latex plugin. It will add
- the latex script to the article metadata
- """
- if 'LATEX' in gen.settings.keys() and gen.settings['LATEX'] == 'article':
- if 'latex' in metadata.keys():
- metadata['latex'] = latexScript
- else:
- metadata['latex'] = latexScript
- def register():
- """
- Plugin registration
- """
- signals.article_generator_context.connect(addLatex)
- signals.page_generator_context.connect(addLatex)
|