The pelican latex plugin
This commit is contained in:
72
latex/Readme.md
Normal file
72
latex/Readme.md
Normal file
@@ -0,0 +1,72 @@
|
||||
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}`.
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
To enable, ensure that `latex.py` is put somewhere that is accessible.
|
||||
Then use as follows by adding the following to your settings.py:
|
||||
|
||||
PLUGINS = ["latex"]
|
||||
|
||||
Be careful: Not loading the plugin is easy to do, and difficult to detect. To
|
||||
make life easier, find where pelican is installed, and then copy the plugin
|
||||
there. An easy way to find where pelican is installed is to verbose list the
|
||||
available themes by typing `pelican-themes -l -v`.
|
||||
|
||||
Once the pelican folder is found, copy `latex.py` to the `plugins` folder. Then
|
||||
add to settings.py like this:
|
||||
|
||||
PLUGINS = ["pelican.plugins.latex"]
|
||||
|
||||
Now all that is left to do is to embed the following to your template file
|
||||
between the `<head>` parameters (for the NotMyIdea template, this file is base.html)
|
||||
|
||||
{% if article and article.latex %}
|
||||
{{ article.latex }}
|
||||
{% endif %}
|
||||
|
||||
Usage
|
||||
-----
|
||||
Latex will be embedded in every article. If however you want latex only for
|
||||
selected articles, then in settings.py, add
|
||||
|
||||
LATEX = 'article'
|
||||
|
||||
And in each article, add the metadata key `latex:`. For example, with the above
|
||||
settings, creating an article that I want to render latex math, I would just
|
||||
include 'Latex' as part of the metadata without any value:
|
||||
|
||||
Date: 1 sep 2012
|
||||
Status: draft
|
||||
Latex:
|
||||
|
||||
Latex Examples
|
||||
--------------
|
||||
###Inline
|
||||
Latex between `$`..`$`, for example, `$`x^2`$`, will be rendered inline
|
||||
with respect to the current html block.
|
||||
|
||||
###Displayed Math
|
||||
Latex between `$$`..`$$`, for example, `$$`x^2`$$`, will be rendered centered in a
|
||||
new paragraph.
|
||||
|
||||
###Equations
|
||||
Latex between `\begin` and `\end`, for example, `begin{equation}` x^2 `\end{equation}`,
|
||||
will be rendered centered in a new paragraph with a right justified equation number
|
||||
at the top of the paragraph. This equation number can be referenced in the document.
|
||||
To do this, use a `label` inside of the equation format and then refer to that label
|
||||
using `ref`. For example: `begin{equation}` `\label{eq}` X^2 `\end{equation}`. Now
|
||||
refer to that equation number by `$`\ref{eq}`$`.
|
||||
|
||||
Template And Article Examples
|
||||
-----------------------------
|
||||
To see an example of this plugin in action, look at
|
||||
[this article](http://doctrina.org/How-RSA-Works-With-Examples.html). To see how
|
||||
this plugin works with a template, look at
|
||||
[this template](https://github.com/barrysteyn/pelican_theme-personal_blog).
|
||||
112
latex/latex.py
Normal file
112
latex/latex.py
Normal file
@@ -0,0 +1,112 @@
|
||||
# -*- 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}`.
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
To enable, ensure that `latex.py` is put somewhere that is accessible.
|
||||
Then use as follows by adding the following to your settings.py:
|
||||
|
||||
PLUGINS = ["latex"]
|
||||
|
||||
Be careful: Not loading the plugin is easy to do, and difficult to detect. To
|
||||
make life easier, find where pelican is installed, and then copy the plugin
|
||||
there. An easy way to find where pelican is installed is to verbose list the
|
||||
available themes by typing `pelican-themes -l -v`.
|
||||
|
||||
Once the pelican folder is found, copy `latex.py` to the `plugins` folder. Then
|
||||
add to settings.py like this:
|
||||
|
||||
PLUGINS = ["pelican.plugins.latex"]
|
||||
|
||||
Now all that is left to do is to embed the following to your template file
|
||||
between the `<head>` parameters (for the NotMyIdea template, this file is base.html)
|
||||
|
||||
{% if article and article.latex %}
|
||||
{{ article.latex }}
|
||||
{% endif %}
|
||||
|
||||
Usage
|
||||
-----
|
||||
Latex will be embedded in every article. If however you want latex only for
|
||||
selected articles, then in settings.py, add
|
||||
|
||||
LATEX = 'article'
|
||||
|
||||
And in each article, add the metadata key `latex:`. For example, with the above
|
||||
settings, creating an article that I want to render latex math, I would just
|
||||
include 'Latex' as part of the metadata without any value:
|
||||
|
||||
Date: 1 sep 2012
|
||||
Status: draft
|
||||
Latex:
|
||||
|
||||
Latex Examples
|
||||
--------------
|
||||
###Inline
|
||||
Latex between `$`..`$`, for example, `$`x^2`$`, will be rendered inline
|
||||
with respect to the current html block.
|
||||
|
||||
###Displayed Math
|
||||
Latex between `$$`..`$$`, for example, `$$`x^2`$$`, will be rendered centered in a
|
||||
new paragraph.
|
||||
|
||||
###Equations
|
||||
Latex between `\begin` and `\end`, for example, `begin{equation}` x^2 `\end{equation}`,
|
||||
will be rendered centered in a new paragraph with a right justified equation number
|
||||
at the top of the paragraph. This equation number can be referenced in the document.
|
||||
To do this, use a `label` inside of the equation format and then refer to that label
|
||||
using `ref`. For example: `begin{equation}` `\label{eq}` X^2 `\end{equation}`. Now
|
||||
refer to that equation number by `$`\ref{eq}`$`.
|
||||
|
||||
Template And Article Examples
|
||||
-----------------------------
|
||||
To see an example of this plugin in action, look at
|
||||
[this article](http://doctrina.org/How-RSA-Works-With-Examples.html). To see how
|
||||
this plugin works with a template, look at
|
||||
[this template](https://github.com/barrysteyn/pelican_theme-personal_blog).
|
||||
"""
|
||||
|
||||
from pelican import signals
|
||||
|
||||
latexScript = """
|
||||
<script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type= "text/javascript">
|
||||
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"}}
|
||||
}
|
||||
});
|
||||
</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_generate_context.connect(addLatex)
|
||||
Reference in New Issue
Block a user