Skip to content →

Tag: markdown

latexrender plugin for wordpress under tiger

Promises and pie-crusts are made to be broken, a wiser man once
said. Still, promises have a much longer life-span and sometimes their
real content becomes redundant over time.

A year ago, I
promised
to document how I got the
LaTeXRender Plugin for WordPress
working under OS X. The procedure
consisted of some trial-and-error operations, installing non-standard
versions of software and hardcoding certain directories throughout
certain files…

Not something I was looking forward
to when I decided to upgrade this WordPress blog but,
surprisingly, things went pretty smoothly this time (Mac-technology
has improved a lot). So, please don’t worry too much about this
post
and follow the (late) instructions below.

First
things first : I will assume you have the ‘generic’ LaTeX
running under Tiger (10.4),that is, use the i-Installer to download BOTH
LaTeX and Imagemagick! Further, in order to get WordPress up and
running, have the standard
MySQL 4.0 package
installed for 10.3 (not version
4.1…) and don’t use the generic Mac-PHP version, but
instead download Marc
Liyanage’s PHP5 package
which has plenty of additional
packages installed (notably, GDlib and MCRYPT which comes in handy if
you want to fight spam-comments using BotCheck).

\r
\n

Download wp-
latexrender.zip
and follow the instructions given to the letter
(there is one undocumented extra directory you have to fill in at the
start of the latexrender-plugin.php file). There is
just one additional thing to do. Find in the
class.latexrender.php file the line starting
with

// convert dvi file to postscript using
  dvips

and include the following lines just before it
:

// begin of workaround // extending the PATH
  environmental variable Soldpath =
  getenv(“PATH”); Swhere_imagemagick_is =
  “/usr/local/bin”; if (Soldpath) { Swhere_imagemagick_is .=
  “:Soldpath”;} putenv(“PATH=Swhere_imagemagick_is”); //
  end of workaround 

activate the plugin and it
should work! Still, there are three things you may want to change. In
the latex.php file uncomment the indicated lines as
you will be using htmlArea to input your posts. In addition, if you
have the MarkDown-plugin enabled, it is best to append additional
lines such as

 Slatex_formula =
  str_replace(“_”,”_”,Slatex_formula);     Slatex_formula
  =
  str_replace(“_”,”_”,Slatex_formula); 

(
between the first ” ” should be the beginning and end
em-tag respectively) or underscores will be interpreted as em-tags.
If you run into additional similar problems, the procedure is to
comment-out the line

 
  unlink(Sthis->_tmp_dir.”/”.Sthis->_tmp_filename.”.tex”); 
  

near the end of class.latexrender.php , look in the
tmp directory for the TeX-file, detect the problem and add similar
lines to the ones above to solve it. Another useful thing to do
is to add TeX-packages in the class.latexrender.php file. My own
version has the following predefined symbols and loaded
packages

 function wrap_formula(Slatex_formula) { 
  Sstring  =
  “\\documentclass[“.Sthis->_font_size.”pt]{“.Sthis->_latexclass
  .”}\\n”;  Sstring .=
  “\\usepackage[latin1]{inputenc}\\n”;  Sstring .=
  “\\usepackage{amsmath}\\n”;  Sstring .=
  “\\usepackage{amsfonts}\\n”;  Sstring .=
  “\\usepackage{amssymb}\\n”;  Sstring .=
  “\\usepackage{xy}\\n”;  Sstring .=
  “\\xyoption{all}\\n”;  Sstring .=
  “\\\\newcommand{\\vtx}[1]{*+[o][F-]{Scriptscriptstyle
  #1}}\\n”;  Sstring .= “\\\\newcommand{\\mathbb{C}c}{\\Bbbk}\\n”; 
  Sstring .= “\\\\newcommand{\\mathbb{C}}{\\mathbb{C}}\\n”;  Sstring .=
  “\\\\newcommand{\\mathbb{Q}}{\\mathbb{Q}}\\n”;  Sstring .=
  “\\\\newcommand{\\mathbb{Z}}{\\mathbb{Z}}\\n”;  Sstring .=
  “\\\\newcommand{\\mathbb{N}}{\\mathbb{N}}\\n”;  Sstring .=
  “\\\\newcommand{\\mathbf}[1]{{\\\\text{\\em \\usefont{OT1}{cmtt}{m}{n}
  #1}}}\\n”;  Sstring .= “\\pagestyle{empty}\\n”;  Sstring
  .= “\\begin{document}\\n”;  Sstring .=
  “S”.Slatex_formula.”S\\n”;  Sstring .=
  “\\end{document}\\n”;          return Sstring;     }  
  

which, among other things, allow all commenters to add
quiver-pictures using xymatrix and vtx to depict vertices. Oh yes, you
can allow comments to include LaTeX-code by uncommenting the
line

  // add_filter(‘comment_text’,
  ‘addlatex’); 

in the latexrender-plugin.php
file (but before you do make sure you have spam under control, such as
with BotCheck mentioned above). That’s all for now. If you want
to use TeX in a comment, make sure to put the code between tags [ tex
] and [ /tex ] (omitting the extra spaces). If you want me to add
other LaTeX-packages, leave a comment.

Leave a Comment

markLaTeXdown

Clearly,
an extended version of Markdown
including LaTeX-commands would be useful for mathematicians and surely
I’m not the first to think about this. In fact, I found a somewhat
pompous text New adventures
if hifi text
by someone claiming to have done precisely that (though
he doesn’t give much details nor post a version of his altered program).

Still, it is pretty clear how to convert a _Markdown+LaTeX_
textfile to plain LaTeX (at least for regex-lovers
). Modify the _Markdown.pl_ script so that the Markdown markup is
translated not to HTML-tags but to LaTeX-commands.

More
interesting material can be found in a thread on _Markdown and
Mathematics_ starting with this post. In it, they search for a good way to include
LaTeX-mathematical commands in a MarkDown text. In fact, this is part of
a more general quest for a good _escape character_ in Markdown to
create _Markdown plus something_ versions. They opt for
{{ and }} rather than the usual
$ signs.

I think the alternatives [
tex ]
and [ /tex ] are slightly better because
then you could feed the text to a functional WordPress installation with the
LaTeXRender
plugin installed and copy the relevant part from the HTML-source of
the resulting post to get a HTML-version of the mathematical text with
all LaTeX-code converted to pictures. Clearly, typing the suggested tags
is somewhat cumbersome so I would type them using the
{{ and }} proposal (one
{ is not enough because a lot a LaTeX code uses single
curly brackets) and then do a global replace to get the
LaTeXRender-tags.

Even more interesting would be to have a
version of the html2txt.py script for LaTeX, that is,
converting a LaTeX-file to Markdown + LaTeXcode which would give an easy
way to convert your existing papers to HTML if you feed the LaTeXRender
plugin with all the required newcommands and packages.

Leave a Comment

markdown2use

Here some
possible uses of Markdown and the
HumaneText Service.
As an example, let us take the
noncommutative geometry & algebra page
maintained by Paul Smith.

If you copy the source of this page to BBEdit and use the
html2txt.py script in the #! menu (see
this post)
you get a nicely readable Markdown-file which strips the page of all its
layout and which is easy to modify, for example to include author and
URL at the start, remove some additional empty lines, make relative URLs
absolute and so on.

Applying the Markdown.pl
script to it one gets a nice RetroCool version
of the page. For starters, this gives a way to make your own collection
of websites you like in a uniform layout (of course, later on you can
add your own CSS to them).

More important is that the
Markdown-version (see here for
the text-file) is extremely readable and allows to _mine_ all
links easily (as you can see all links contained in the HTML-page are
referenced together at the end of the file). So, this is a quick way to
collect homepage- and email-links from link-pages.

Btw. there
are different ways to include links in a markdown text, for example I
like to write it immediately after the reference, so doing a Markdown.pl
followed by a html2txt.py doesn’t have to reproduce your original file
and fortunately you will always end up with a file having all links
referenced at the end. So, this procedure allows you to have uniformity
in a collection of markdown-files.

Equally important for me (for
later use in an intelligent database using DevonThink ) is that the Markdown file is the best way to safe the
HTML file in the database (as a RTF file) while maintaining readability
(which is important when DevonThink returns snippets of
information).

Leave a Comment