高版本的未知兼容问题
sli1989 opened this issue · 7 comments
在pandoc-2.7.1
和WIN10
环境中 hexo-renderer-pandoc 的0.2.4及其以上版本出现未知问题。DEMO是在pandoc-2.7.1
和hexo-renderer-pandoc@0.2.3
下生成的。
SITE'S _config.yml:
pandoc:
filters:
extra:
template:
meta:
mathEngine:
- 安装
npm install hexo-renderer-pandoc@0.2.4 --save
版本,部分渲染丢失和失效。
丢失:
源MD文件:
Pandoc is a universal document converter!对 md 扩展支持让我拜倒,例如[脚注的支持](http://pandoc.org/MANUAL.html#footnotes)部分。需要提醒的是:pandoc 渲染器对 md 的格式要求更加规范些,例如 链接需要用`< >`括号显式包含;quoteblock 每行必须跟两空格表示换行(如果后续行没有`>`标记的话)。当然,把 [Pandoc’s Markdown](http://pandoc.org/MANUAL.html#pandocs-markdown) 浏览一下是很有必要的,或者 [pdf 版本](http://pandoc.org/MANUAL.pdf)。
1. 第二种方法,使用Pandoc渲染器:
在文件`/layout/_layout.swig`中`/body`前加入:
```
<script type="text/javascript" src="/js/custom.js"></script>
```
在`/themes/next/source/js`中添加文件`custom.js`,在`custom.js`中添加
```
// 函数: html 中去掉 某 tag 最后那一次出现
var rmLastElm = function(text, selector) {
var wrapped = $("<div>" + text + "</div>");
wrapped.find(selector).last().remove();
return wrapped.html();
}
// 弹出 tip 显示 脚注
var $fRef = $(".footnoteRef");
for(let i=0; i<$fRef.length; i++) {
var sup = $fRef.children("sup")[i]; //work reliably as long as there's exactly one sup per footnotRef
// var sup = $fRef[i].children("sup"); //a classic Dom Element, so it doesn't have any children method
sup.onmouseover = function(event) {
$('.footnoteTip').remove();
var pTip = document.createElement('div');
pTip.className = 'footnoteTip'; // CSS
pTip.innerHTML = rmLastElm(document.getElementById($fRef[i].getAttribute("href").substring(1)).innerHTML,"a");
document.body.appendChild(pTip);
var posLeft = event.pageX - 180;
if (posLeft<0) posLeft = 20;
var posTop = event.pageY + 20;
var od = $('.footnoteTip');
var oH = od.outerHeight();
var oW = od.outerWidth();
if(posTop + oH - window.pageYOffset > $(window).height()) posTop = posTop - oH -40;
if (posLeft + oW > $(window).width()) posLeft = $(window).width() - oW -20; //NexT.Mist pageXOffset=0
pTip.style.left = posLeft + 'px';
pTip.style.top = posTop + 'px';
};
sup.onmouseout = function(event) {
$('.footnoteTip').remove();
};
}
```
## 外链播放器
部分 HEXO tags 失效:
源MD文件:
## Quick Start
{% tabs First unique name %}
<!-- tab -->
**This is Tab 1.**
<!-- endtab -->
<!-- tab -->
**This is Tab 2.**
<!-- endtab -->
<!-- tab -->
**This is Tab 3.**
<!-- endtab -->
{% endtabs %}
- 安装
npm install hexo-renderer-pandoc@0.2.5 --save
或者更高版本,出现未知问题
Administrator@DESKTOP-ALEX MINGW64 /f/alex/hexo (gh-pages)
$ hexo clean && hexo g && hexo s
INFO Deleted database.
INFO Deleted public folder.
INFO Start processing
events.js:183
throw er; // Unhandled 'error' event
^
Error: write EOF
at WriteWrap.afterWrite [as oncomplete] (net.js:868:14)
pandoc 2.7.1
hexo-renderer-pandoc 0.2.4
测试环境 hexo 未安装任何除默认插件及 hexo-renderer-pandoc@0.2.4
以外的插件。
测试文件 source/_posts/test.md
```
test
```
命令 cat source/_posts/test.md | pandoc -f markdown -t html --mathjax
正确输出
<pre><code>test</code></pre>
命令 hexo g
输出(部分)
<div class="article-entry" itemprop="articleBody">
<!--0-->
</div>
其中 <!--0-->
中字符 0
前有不可见字符 uFFFC
.
进一步检验发现,hexo 从 stdin 写给 pandoc 的字符流如下
<!--0-->
猜测 hexo 从 markdown 中提取了 codeblock 后没有将其插入回去。因而也不是本插件的错误。
更详细的测试随后进行。
issue
#21
讨论的是同样的问题,并在 0.2.5 版本已经修复。因此请使用 0.25 以上版本。
我在 0.2.5 下测试以下文件
{% tabs First unique name %}
<!-- tab -->
**This is Tab 1.**
<!-- endtab -->
<!-- tab -->
**This is Tab 2.**
<!-- endtab -->
<!-- tab -->
**This is Tab 3.**
<!-- endtab -->
{% endtabs %}
收到错误 unknown block tag: tabs
。我不是特别了解 hexo tag,但是看起来它不允许使用自定义的 tag 类型。
后发现 tabs
tag 由 NexT 主题自定义于 themes\next\scripts\tags\tabs.js
中:hexo.extend.tag.register('tabs', postTabs, {ends: true});
而以下文件
```
test
```
## Quick Start
{% blockquote David Levithan, Wide Awake %}
Do not just seek happiness for yourself. Seek happiness for all. Through kindness. Through mercy.
{% endblockquote %}
正常输出:
其中 fenced code block 与 hexo tag 都正确渲染。因此我无法复现您所说的
安装 npm install hexo-renderer-pandoc@0.2.5 --save 或者更高版本,出现未知问题
可否提供完整且尽可能小的 case? 包括从 hexo init
开始, npm install ...
, 一直到 hexo g
为止的所有命令,以及站点的 _config.yml
文件。
另外可否提供完整的报错信息?看起来你截去了整个调用栈。
@huangy10 感谢您指出问题的根源以及修复的方法。随后我会对该方法进行测试。
@sli1989 关于 Tag 的问题已于 v0.3.0 中修复。若您能测试并提供反馈我们将会非常感激。
另外关于您 “安装 npm install hexo-renderer-pandoc@0.2.5 --save
或者更高版本,出现未知问题” 的问题,现在解决了吗?
@RichardYan314
emm,应该是我自己问题。pandoc同时装了两个版本,而实际起作用的是1.9版本。
后续如有问题,我再给您反馈,谢谢。