Latex Pandoc-支持自定义输入环境

Latex Pandoc-支持自定义输入环境,latex,pandoc,latex-environment,Latex,Pandoc,Latex Environment,我使用单个统一的LaTeX文档创建问题集和解决方案: \item What is one plus one? \begin{soln} The answer is "two". \end{soln} 在LaTeX中,我使用(简化)定义此环境: 也就是说,如果已在LaTeX中定义了\solutionsfalse,它将打印: 1. What is one plus one? 1. What is one plus one?

我使用单个统一的LaTeX文档创建问题集和解决方案:

   \item What is one plus one?
      \begin{soln}
         The answer is "two".
      \end{soln}
在LaTeX中,我使用(简化)定义此环境:

也就是说,如果已在LaTeX中定义了
\solutionsfalse
,它将打印:

   1. What is one plus one?
1. What is one plus one?
    ** The answer is two ** 
如果定义了
\solutionstrue
,它将打印:

   1. What is one plus one?
1. What is one plus one?
    ** The answer is two ** 
我试图在pandoc中复制它,从latex输入生成HTML或MD文件,但我遇到了麻烦。我认为,潘多克不尊重乳胶中的任何
/if/else/fi
声明。Pandoc不支持
注释
环境,该环境也可以与
\excludecoment{soln}
一起使用。因此,我无法创建一个shim.tex文件来复制“在soln环境中忽略内容”

我想,下一个方法是在luatex中做一些pandoc可以与之对话的事情,或者使用过滤器为pandoc定义自定义环境?但是,这些系统的文档非常繁重,没有简单的方法

有人能提出解决办法吗

理想情况下,我希望运行两个不同的shell命令。命令A应该省略soln环境中的所有内容。理想情况下,命令B应将所有常规文本变为蓝色,并以黑色显示
soln
环境中的所有内容

(另外,
xcolor
包在原生pandoc中似乎也不受支持,尽管有一个过滤器对我不起作用。)

编辑

在@tarleb和@mb21的评论之后,我想我必须尝试找出过滤器是如何工作的。同样,这里的文档也很糟糕——它希望您在做任何事情之前了解一切

我试过这个:

return {
  {
    RawBlock = function(elem)
      print(elem.text)
      if starts_with('\\begin{soln}', elem.text) then        
        return pandoc.RawBlock(elem.format,"SOLN")
      else
        return elem
      end
    end,
  }
}
并与

pandoc --lua-filter ifdef.lua --mathjax -s hw01.tex -s -o hw01.html
但是print语句中的stdout上没有任何内容,并且我的文档没有改变,因此,除非传递
-f latex+raw_tex
标志,否则lua过滤器显然不会处理rawblock。但是传递这些标志意味着pandoc实际上不会处理latex中的
\include
命令,因此我的过滤器不会看到子文档

显然,答案是“不,pandoc不能支持新的latex环境”,因为它需要修改解析器。虽然
-f latex+raw_tex
可以禁用大部分解析器,但这只是意味着文档基本上没有被解析,这不是我想要的


如果我错了,请告诉我。

如果你想做这样的事情,如果你使用pandoc风格的markdown作为输入格式,使用原生的
div
元素等,你的生活会轻松得多。然后你可以使用操作元素。这很好,但输入已经编写好了,包含大量宏和特定于latex的格式。整个要点是将现有源代码转换为另一种格式,而不是从另一种格式开始。为什么过滤器不能在latex环境中工作?从其他格式转换时,过滤器绝对可以工作。请查看
pandoc-t native
,查看文档在进入筛选阶段时的外观。谢谢,@mb21,但这还不够。该命令显示,pandoc根本不解析我的
soln
环境,因此它无法让我更接近解决方案。尝试使用
pandoc-f latex+raw_tex
强制pandoc在不知道如何解析的情况下将所有命令作为raw tex传递。如果您想这样做,如果您使用pandoc风格的标记作为输入格式,使用它的原生
div
元素等,那么您的live将更加轻松。然后您可以使用操作元素。这很好,但是输入已经编写好,包含大量宏和特定于latex的格式。整个要点是将现有源代码转换为另一种格式,而不是从另一种格式开始。为什么过滤器不能在latex环境中工作?从其他格式转换时,过滤器绝对可以工作。请查看
pandoc-t native
,查看文档在进入筛选阶段时的外观。谢谢,@mb21,但这还不够。该命令显示,pandoc根本不解析我的
soln
环境,因此它无法让我更接近解决方案。尝试使用
pandoc-f latex+raw_tex
强制pandoc将所有命令作为raw tex传递,如果它不知道如何解析它们的话。