如何在 vimwiki html /smarty 文件中包含 pygments?

Posted

技术标签:

【中文标题】如何在 vimwiki html /smarty 文件中包含 pygments?【英文标题】:How to include pygments in vimwiki html /smarty file? 【发布时间】:2021-01-18 23:06:28 【问题描述】:

我正在使用 vimwiki,它允许我添加 smarty/html 模板文件以及 css。我知道如何使用 pygments 生成 css 文件,但问题是如何让 css 包含基于<pre> 标签的输入的所有类?

例如如果pre标签是这样的:

<pre class='pygments highlight'>
echom 'hello'
function! DeleteUnloadedBuffers()
for buf in getbufinfoprettyprint
    if ! buf.loaded 
    execute 'bd ' . buf.bufnr
    endif
    echom repeat('-',78)
    endfor
endfunction!
</pre>

我需要它来生成这个,以便它可以有语法高亮:

<div class="highlight"><pre><span></span><span class="k">echom</span> <span class="s1">&#39;hello&#39;</span>
<span class="k">function</span><span class="p">!</span> DeleteUnloadedBuffers<span class="p">()</span>
<span class="k">for</span> <span class="k">buf</span> <span class="k">in</span> getbufinfoprettyprint
    <span class="k">if</span> <span class="p">!</span> <span class="k">buf</span>.loaded 
    execute <span class="s1">&#39;bd &#39;</span> . <span class="k">buf</span>.bufnr
    <span class="k">endif</span>
    <span class="k">echom</span> repeat<span class="p">(</span><span class="s1">&#39;-&#39;</span><span class="p">,</span><span class="m">78</span><span class="p">)</span>
    <span class="k">endfor</span>
<span class="p">&lt;</span>/<span class="k">pre</span><span class="p">&gt;</span>
</pre></div>

我猜答案大概是……

%pygments%
<pre class='pygments highlight'>
print('foo')
</pre>

我可以编写一个 python 脚本并导入 pygments 并为 pre 标记做一个正则表达式,但这只是为了获得一些语法突出显示。目前,我一直在使用 prettyprint,它看起来是 github 上的一个废弃仓库,但它确实有效。

【问题讨论】:

【参考方案1】:

最终使用 bs4 来解决这个问题。

【讨论】:

以上是关于如何在 vimwiki html /smarty 文件中包含 pygments?的主要内容,如果未能解决你的问题,请参考以下文章

生产力工具之vimwiki 和 calendar

如何让smarty的显示函数返回一个变量

使用 Smarty 修饰符

如何在 Smarty 中定义具有随机值的变量

PHP 随笔---Smarty模板引擎 使用成熟的Smarty模板 05

smarty详细使用教程(韩顺平smarty模板技术笔记)