mirror of
https://github.com/ankitects/anki.git
synced 2025-09-19 14:32:22 -04:00
latex improvements
- move latex preamble into a deck var and include amsmath by default - include the pre/postamble in the hash, so changes to the preamble result in newly generated images
This commit is contained in:
parent
b0f300bb74
commit
70eb44bce2
2 changed files with 16 additions and 13 deletions
10
anki/deck.py
10
anki/deck.py
|
@ -164,7 +164,7 @@ class Deck(object):
|
|||
self.lastSessionStart = 0
|
||||
self.queueLimit = 200
|
||||
# if most recent deck var not defined, make sure defaults are set
|
||||
if not self.s.scalar("select 1 from deckVars where key = 'mediaURL'"):
|
||||
if not self.s.scalar("select 1 from deckVars where key = 'latexPost'"):
|
||||
self.setVarDefault("suspendLeeches", True)
|
||||
self.setVarDefault("leechFails", 16)
|
||||
self.setVarDefault("perDay", True)
|
||||
|
@ -174,6 +174,14 @@ class Deck(object):
|
|||
self.setVarDefault("revInactive", self.suspended)
|
||||
self.setVarDefault("newSpacing", 60)
|
||||
self.setVarDefault("mediaURL", "")
|
||||
self.setVarDefault("latexPre", (
|
||||
"\\documentclass[12pt]{article}\n"
|
||||
"\\special{papersize=3in,5in}"
|
||||
"\\usepackage[utf8]{inputenc}"
|
||||
"\\usepackage{amssymb,amsmath}"
|
||||
"\\pagestyle{empty}\n"
|
||||
"\\begin{document}"))
|
||||
self.setVarDefault("latexPost", "\\end{document}")
|
||||
self.updateCutoff()
|
||||
self.setupStandardScheduler()
|
||||
|
||||
|
|
|
@ -13,12 +13,6 @@ from anki.utils import genID, checksum, call
|
|||
from anki.hooks import addHook
|
||||
from htmlentitydefs import entitydefs
|
||||
|
||||
latexPreamble = ("\\documentclass[12pt]{article}\n"
|
||||
"\\special{papersize=3in,5in}"
|
||||
"\\usepackage[utf8]{inputenc}"
|
||||
"\\pagestyle{empty}\n"
|
||||
"\\begin{document}")
|
||||
latexPostamble = "\\end{document}"
|
||||
latexDviPngCmd = ["dvipng", "-D", "200", "-T", "tight"]
|
||||
|
||||
regexps = {
|
||||
|
@ -61,22 +55,23 @@ def latexImgFile(deck, latexCode):
|
|||
key = checksum(latexCode)
|
||||
return "latex-%s.png" % key
|
||||
|
||||
def mungeLatex(latex):
|
||||
"Convert entities, fix newlines, and convert to utf8."
|
||||
def mungeLatex(deck, latex):
|
||||
"Convert entities, fix newlines, convert to utf8, and wrap pre/postamble."
|
||||
for match in re.compile("&([a-z]+);", re.IGNORECASE).finditer(latex):
|
||||
if match.group(1) in entitydefs:
|
||||
latex = latex.replace(match.group(), entitydefs[match.group(1)])
|
||||
latex = re.sub("<br( /)?>", "\n", latex)
|
||||
latex = latex.encode("utf-8")
|
||||
latex = (deck.getVar("latexPre") + "\n" +
|
||||
latex + "\n" +
|
||||
deck.getVar("latexPost"))
|
||||
return latex
|
||||
|
||||
def buildImg(deck, latex):
|
||||
log = open(os.path.join(tmpdir, "latex_log.txt"), "w+")
|
||||
texpath = os.path.join(tmpdir, "tmp.tex")
|
||||
texfile = file(texpath, "w")
|
||||
texfile.write(latexPreamble + "\n")
|
||||
texfile.write(latex + "\n")
|
||||
texfile.write(latexPostamble + "\n")
|
||||
texfile.write(latex)
|
||||
texfile.close()
|
||||
# make sure we have a valid mediaDir
|
||||
mdir = deck.mediaDir(create=True)
|
||||
|
@ -125,7 +120,7 @@ def imageForLatex(deck, latex, build=True):
|
|||
|
||||
def imgLink(deck, latex, build=True):
|
||||
"Parse LATEX and return a HTML image representing the output."
|
||||
latex = mungeLatex(latex)
|
||||
latex = mungeLatex(deck, latex)
|
||||
(ok, img) = imageForLatex(deck, latex, build)
|
||||
if ok:
|
||||
return '<img src="%s">' % img
|
||||
|
|
Loading…
Reference in a new issue