Permalink
Browse files

Support the "\[..\]" and "$$..$$" Org LaTeX fragment syntax too

  • Loading branch information...
1 parent 8da68a6 commit 62efc8e0b397e61c44c0d00d2091391ffed40a60 @kaushalmodi committed Jul 31, 2017
Showing with 62 additions and 12 deletions.
  1. +28 −5 example-site/content-org/all-posts.org
  2. +29 −5 example-site/content/posts/equation-latex-frag.md
  3. +5 −2 ox-blackfriday.el
@@ -690,22 +690,45 @@ This gets both categories =catA= and =catB=.
:EXPORT_FILE_NAME: equation-latex-frag
:EXPORT_DATE: 2017-07-31
:END:
-Wrap the equations between =\(= and =\)=.
+- Inline equations are wrapped between =\(= and =\)=.
+ - =$= wrapping also works, but it is not preferred as it comes with
+ restrictions like "there should be no whitespace between the
+ equation and the =$= delimiters".
+
+ So =$ a=b $= will not work (it will look like: $ a=b $), but
+ =$a=b$= will work (it will look like: $a=b$).
+
+ On the other hand, both =\(a=b\)= (it will look like: \(a=b\)) and
+ =\( a=b \)= (it will look like: \( a=b \)) will work.
+- One-per-line equations are wrapped between =\[= and =\]= or =$$=
+ delimiters.
For example, below in Org:
#+BEGIN_SRC text
LaTeX formatted equation: \( E = -J \sum_{i=1}^N s_i s_{i+1} \)
#+END_SRC
-will look like this in Hugo rendered HTML (don't see this in Markdown,
-see what it looks after Hugo has processed it).
+will look like this in Hugo rendered HTML:
LaTeX formatted equation: \( E = -J \sum_{i=1}^N s_i s_{i+1 }\)
-Here's another example similar to one in [[http://orgmode.org/manual/LaTeX-fragments.html][(org) LaTeX fragments]].
+(Don't see this in Markdown, see what it looks after Hugo has
+processed it.)
+
+Here's another example, taken from [[http://orgmode.org/manual/LaTeX-fragments.html][(org) LaTeX fragments]].
+Below in Org:
+#+BEGIN_EXAMPLE
If $a^2=b$ and \( b=2 \), then the solution must be either
-$a=+\sqrt{2}$ or \(a=-\sqrt{2}\).
+$$ a=+\sqrt{2} $$ or \[ a=-\sqrt{2} \]
+#+END_EXAMPLE
+
+renders to:
+
+If $a^2=b$ and \( b=2 \), then the solution must be either
+$$ a=+\sqrt{2} $$ or \[ a=-\sqrt{2} \]
+
+(Note that the last two equations show up on their own lines.)
* TODO Pre-Draft State
:PROPERTIES:
:EXPORT_FILE_NAME: draft-state-todo
@@ -5,20 +5,44 @@ tags = ["equations"]
draft = false
+++
-Wrap the equations between `\(` and `\)`.
+- Inline equations are wrapped between `\(` and `\)`.
+ - `$` wrapping also works, but it is not preferred as it comes with
+ restrictions like "there should be no whitespace between the
+ equation and the `$` delimiters".
+
+ So `$ a=b $` will not work (it will look like: $ a=b $), but
+ `$a=b$` will work (it will look like: \\(a=b\\)).
+
+ On the other hand, both `\(a=b\)` (it will look like: \\(a=b\\)) and
+ `\( a=b \)` (it will look like: \\( a=b \\)) will work.
+- One-per-line equations are wrapped between `\[` and `\]` or `$$`
+ delimiters.
For example, below in Org:
```text
LaTeX formatted equation: \( E = -J \sum_{i=1}^N s_i s_{i+1} \)
```
-will look like this in Hugo rendered HTML (don't see this in Markdown,
-see what it looks after Hugo has processed it).
+will look like this in Hugo rendered HTML:
LaTeX formatted equation: \\( E = -J \sum\_{i=1}^N s\_i s\_{i+1 }\\)
-Here's another example similar to one in [(org) LaTeX fragments](http://orgmode.org/manual/LaTeX-fragments.html).
+(Don't see this in Markdown, see what it looks after Hugo has
+processed it.)
+
+Here's another example, taken from [(org) LaTeX fragments](http://orgmode.org/manual/LaTeX-fragments.html).
+
+Below in Org:
+
+```text
+If $a^2=b$ and \( b=2 \), then the solution must be either
+$$ a=+\sqrt{2} $$ or \[ a=-\sqrt{2} \]
+```
+
+renders to:
If \\(a^2=b\\) and \\( b=2 \\), then the solution must be either
-\\(a=+\sqrt{2}\\) or \\(a=-\sqrt{2}\\).
+\\[ a=+\sqrt{2} \\] or \\[ a=-\sqrt{2} \\]
+
+(Note that the last two equations show up on their own lines.)
View
@@ -109,8 +109,11 @@ INFO is a plist holding contextual information."
((memq processing-type '(t mathjax))
(let* ((frag (org-html-format-latex latex-frag 'mathjax info))
;; https://gohugo.io/content-management/formats#solution
- (frag (replace-regexp-in-string "\\(\\\\[()]\\)" "\\\\\\1" frag)) ;\( -> \\(, \) -> \\)
- (frag (replace-regexp-in-string "_" "\\\\_" frag))) ;_ -> \_
+ (frag (replace-regexp-in-string "_" "\\\\_" frag)) ;_ -> \_
+ ;; Need to escape the backslash in "\(", "\)", .. to
+ ;; make Blackfriday happy. So \( -> \\(, \) -> \\),
+ ;; \[ -> \\[ and \] -> \\].
+ (frag (replace-regexp-in-string "\\(\\\\[]()[]\\)" "\\\\\\1" frag)))
frag))
((assq processing-type org-preview-latex-process-alist)
(let ((formula-link

0 comments on commit 62efc8e

Please sign in to comment.