我正在使用Markdown with Liquid标签为Jekyll生成的网站标记一些代码,并希望包含一些内联(在段落中)并具有彩色语法(使用Pygments)的代码,但是它似乎不起作用。
标记
Lorem ipsum dolor {% highlight javascript %} var sit = "amet"; {% endhighlight %} consectetur adipiscing elit.
结果
<p>Lorem ipsum dolor <div class='highlight'><pre><code class='javascript'> <span class='kd'>var</span> <span class='nx'>sit</span> <span class='o'>=</span> <span class='s2'>"amet"</span><span class='p'>;</span></code></pre></div> consectetur adipiscing elit.</p>
我非常希望突出显示的文字不会包含在<div class='highlight'>
中,或至少让它成为<span class='highlight'>
。
使用{% highlight javascript nowrap %}
不起作用suggested elsewhere。 (也许这是我的设置问题 - 这是Ruby 2.0,Jekyll 0.12.1,pygments.rb 0.3.7?)
我想host this page on GitHub,这意味着我不能依赖插件。糟糕,对吧?
附录:行编号(即{% highlight javascript linenos %}
)似乎也不起作用。曼
答案 0 :(得分:4)
最简单的方法是使用Github Flavored Markdown并使用默认的内联代码。
在您的_config.yml
文件中,将您的降价更改为redcarpet。您现在已准备好使用GFM。
markdown: redcarpet
现在您可以关注所有GitHub Markdown了。要执行内联代码,请执行以下操作:
Here is some `inline code` in the middle of sencence
答案 1 :(得分:2)
您可以将CSS类添加到您在帖子中放置的任何对象。
如果您定义这样的CSS条目:
.inlined { display:inline; }
然后,您可以将此类添加到生成的<div>
中:
Lorem ipsum dolor
{% highlight javascript %}var sit="amet"; {% endhighlight %}{: .inlined }
consectetur adipiscing elit.
这适用于所有类型的对象(表格,图像等)。我现在无法测试它,但我认为这将解决问题。
测试时,请查看输出HTML。然后,您会发现<div>
现在已设置class=inlined
属性。
答案 2 :(得分:0)
.highlight div有什么问题?它放在那里使语法高亮易于主题。 要将包装器更改为跨度,我的赌注是您必须更改Jekyll配置。
只有拥有多行代码段时才会显示行号。
答案 3 :(得分:0)
如果您包含以下两个功能(并调用它们):
var inlineElements = function() {
var inlinedElements = document.getElementsByClassName('inlined');
inlinedElements = Array.prototype.concat.apply([], inlinedElements); // copy
for (var i = 0; i < inlinedElements.length; i++) {
var div = inlinedElements[i];
var span = document.createElement('span');
span.innerHTML = div.children[0].innerHTML;
var previous = div.previousElementSibling;
var paragraph;
if (previous.tagName.toLowerCase() === 'p') {
paragraph = previous;
} else {
paragraph = document.createElement('p');
div.parentNode.insertBefore(paragraph, div);
}
div.remove();
paragraph.innerHTML += ' ' + span.innerHTML + ' ';
paragraph.classList.add('highlight');
paragraph.classList.add('inlined');
if (div.classList.contains('connectNext')) {
paragraph.classList.add('connectNext');
}
}
}
var connectElements = function() {
while (true) {
var connectNextElements = document.getElementsByClassName('connectNext');
if (connectNextElements.length == 0) break;
var prefix = connectNextElements[0];
var next = prefix.nextElementSibling;
prefix.innerHTML += ' ' + next.innerHTML;
next.remove();
if (!next.classList.contains('connectNext')) {
prefix.classList.remove('connectNext');
}
}
}
inlineElements();
connectElements();
您可以在Markdown中使用.inline和.connectNext:
{% highlight objective-c %}
[[NSObject alloc] init];
{% endhighlight %} {: .inlined .connectNext }
vs.
{% highlight java %}
new Object();
{% endhighlight %} {: .inlined }
.connectNext
将确保代码块后面的文字也在同一<p>
中内联。