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
Copyright (C) 2006-2021 John MacFarlane. Web:  https://pandoc.org
This is free software; see the source for copying conditions. There is no
warranty, not even for merchantability or fitness for a particular purpose.


On Jan 28, 2021, at 12:10, John MacFarlane <jgm-TVLZxgkOlNX2fBVCVOL8/A@public.gmane.org> wrote:


Pandoc's latex reader doesn't know about the algorithm
environment. What package defines it?

With the latest pandoc release, we get this output with
pandoc -f latex -t html --mathjax on your input:

<div class="algorithm">
<p><span class="math inline">\(x &gt; 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 use
pandoc -f latex+raw_tex --lua-filter handle_algorithm.lua

You'd have to write handle_algorithm.lua, but what it would do
is find raw latex blocks with algorithm environments and convert
them 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. That
gets you almost all the way there, except for the newlines and
whitespace, if they're significant in this environment.

For the newlines, you could add a filter that intercepts
SoftBreak.



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.

--
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/0F730DD9-8029-462F-A65E-AD3E618118E4%40gmail.com.