Latex Pandoc-支持自定义输入环境
我使用单个统一的LaTeX文档创建问题集和解决方案: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?
\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传递,如果它不知道如何解析它们的话。