Ah, excellent. The additional div makes a big difference in processing.
I realized I over-simplified my example. It's actually:
\begin{algorithm}
\caption{...}
\label{alg:my_alg}
\begin{algorithmic}
...statements...
\end{algorithmic}
\end{algorithm}
"algorithm" is just a float like "figure" or "table", and "algorithmic" actually defines the commands "\Require", etc. pandoc now makes divs for both algorithm and algorithmic, but still loses the commands, as you've mentioned.
I've just been using a bash/sed script to pre-process the latex document before processing with pandoc which seems to work well for now.
Thanks for the update!
-Bernie
------------------
for reference, I'm now using:
------------------
$ pandoc --version
pandoc 2.11.4
Compiled with pandoc-types 1.22, texmath 0.12.1, skylighting 0.10.2,
citeproc 0.3.0.5, ipynb 0.1.0.1
User data directory: /Users/bernardroesler/.local/share/pandoc or /Users/bernardroesler/.pandoc
This is free software; see the source for copying conditions. There is no
warranty, not even for merchantability or fitness for a particular purpose.
Pandoc's latex reader doesn't know about the algorithmenvironment. What package defines it?With the latest pandoc release, we get this output withpandoc -f latex -t html --mathjax on your input:<div class="algorithm"><p><span class="math inline">\(x > 0\)</span>. <span class="math inline">\(x \gets x^2\)</span> <span class="math inline">\(x\)</span></p></div>Better, though we lose the line breaks and we lose \Require, etc.If you want to handle this properly, one option would be to usepandoc -f latex+raw_tex --lua-filter handle_algorithm.luaYou'd have to write handle_algorithm.lua, but what it would dois find raw latex blocks with algorithm environments and convertthem to some form that works in your Jekyll blog.You might also try this approach:Add macro definitions to your latex:\renewcommand{\Require}{1]{Require #1}and so on for \State and \Procedure.Then pandoc will parse them and you'll get better output. Thatgets you almost all the way there, except for the newlines andwhitespace, if they're significant in this environment.For the newlines, you could add a filter that interceptsSoftBreak.Bernie Roesler <bernard.roesler-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> writes:Hi all,
Is there a *reverse* of this solution? I'm trying to go from LaTeX to
markdown/html for posting to a Jekyll blog, but pandoc parses out much of
the algorithm/algorithmic environments, and does not put the contents in a
div like it does for theorems/proofs.
With the input:
\begin{algorithm}
\Require $x > 0$.
\Procedure{SquareX}{$x$}
\State $x \gets x^2$
\State \Return $x$
\EndProcedure
\end{algorithm}
Currently the output is:
$x > 0$. $x \gets x^2$ $x$
I'd like to have to something like:
<div class="algorithm">
<span class="Require">$x > 0$</span>
<span class="Procedure">SquareX</span>($x$)
<span class="State">$x \gets x^2$</span>
<span class="State" class="Return">$x$</span>
<span class="EndProcedure"></span>
</div>
or something to that effect to allow formatting of the individual elements.
See also my StackOverflow question
<https://stackoverflow.com/questions/65930404/pandoc-latex-to-markdown-do-not-parse-environment>
and Jekyll Talk discussion
<https://talk.jekyllrb.com/t/kramdown-latex-usepackage-algorithm-pseudocode/2861/7?u=broesler>
.
I can do my own wrangling and add a verbatim environment before running it
through pandoc and then parse that chunk of the markdown file afterwards,
but I was curious if there was a more elegant solution to dealing with
unknown environments.
Thanks,
Bernie
On Sunday, January 24, 2021 at 2:51:02 PM UTC-5 chris....@gmail.com wrote:
Thanks! Exactly what i needed to know.
-Chris
On Sun, Jan 24, 2021, 11:58 AM John MacFarlane <j...@berkeley.edu> wrote:
You need a filter, but it would be a simple one.
Something like
function latex(s)
return pandoc.RawBlock('latex', s)
end
function Div(el)
if el.classes[1] == 'solution' then
return { latex('\begin{solution}'), el.content,
latex('\end{solution}') }
end
end
Chris Diaz <chris....@gmail.com> writes:
Hello,
I'm looking for advice on how to produce HTML and LaTeX from Markdown
using
fenced divs (or something else) to apply custom styles to specific
portions
of the document.
For example, I'm hoping to write something like this:
::: solution
Solution text here.
:::
in order to produce this when HTML is the output (already works):
<div class="solution">
Solution text here.
</div>
and this when LaTeX/PDF is the output:
\begin{solution}
Solution text here.
\end{solution}
This idea comes from Bookdown's
<https://bookdown.org/yihui/bookdown/custom-blocks.html> Custom Blocks
feature, but I'm wondering if there's a way to do this with Pandoc, or
if
this would require a Lua filter.
Thanks,
Chris
--
You received this message because you are subscribed to the Google
Groups "pandoc-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to pandoc-discus...@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/pandoc-discuss/8ba84992-d792-4333-aae0-560147ef79d4n%40googlegroups.com
.
--
You received this message because you are subscribed to the Google Groups "pandoc-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
To view this discussion on the web visit https://groups.google.com/d/msgid/pandoc-discuss/e6363602-852a-45a1-a199-81553da1966bn%40googlegroups.com.