转换为 HTML 时为复选框写入 Ascii

Write Ascii for Check Box when Converting to HTML

我正在写信给 HTML,然后复制文本并粘贴到 MS Teams 中。所以,我希望复选框是 ASCII 而不是 HTML 输入。

我在 Windows 上使用 pandoc 版本 2.10

这就是我认为我应该做的。但是好像不行:

echo - [ ] Yep | pandoc --ascii -f MARKDOWN -t HTML

以上是用终端cmder完成的。我像下面这样用 Powershell 7 尝试了它,它仍然给出了不正确的结果:

echo "- [ ] Yep" | pandoc --ascii -f MARKDOWN -t HTML

Returns:

<ul class="task-list">
<li><input type="checkbox" disabled="" />
Yep</li>
</ul>

但我期待:

<ul class="task-list">
<li>☐ Yep</li>
</ul>

经过反复试验,您需要对命令进行一些更改:

echo "\- &#9744 Yep" | pandoc -f markdown -t HTML | % {$_.replace("&amp;","&")}
  1. &#9744 是 ☐
  2. 的 HTML 实体代码
  3. pandoc 默认将 & 格式设置为 &amp;,因此您需要使用 powershell 的替换 % {$_.replace("&amp;","&")}.
  4. 在输出中替换它

这应该给出 <p>- &#9744 Yep</p>,即 HTML.

中的“- ☐ Yep”(不带引号)

你可以在这里看到演示:https://jsfiddle.net/Fermicide/4jsnoya3/1/

如果想直接复制到剪贴板,可以将输出通过管道传输到Set-Cipboard:

echo "\- &#9744 Yep" | pandoc -f markdown -t HTML | % {$_.replace("&amp;","&")} | Set-Clipboard

如您所见,以下输入在输出到 HTML 时呈现一个复选框:

- [ ] Yep

这是由于 pandoc 的 task_list extension,您可以按如下方式关闭它:

pandoc -f markdown-task_lists

将输出:

<ul>
  <li>[ ] Yep</li>
</ul

但是,您似乎期望的是复选框 unicode 字符,您可以这样做,例如generic raw attribute:

- `&#9744;`{=html} Yep

使用 Lua filter 的解决方案:

-- file: unicode-checkbox.lua
function Str (s)
  if s.text == '☐' then
    return pandoc.RawInline('html', s.text)
  end
end

与命令一起使用

echo "- [ ] Yep" | pandoc --lua-filter=unicode-checkbox.lua -f MARKDOWN -t HTML