3
votes

I'm using Jekyll with kramdown and pygments, it work fine for javascript or python code but When I create php like:

{% highlight php %}
header('Content-Type: application/json');

echo json_encode(array(
    'jsonrpc' => "2.0",
    'result' => $result,
    'id' => $request->id,
    'error' => null
));
{% endhighlight %}

Each line is one span with x class:

<code class="language-php" data-lang="php"><span class="x">header('Content-Type: application/json');</span>
<span class="x">echo json_encode(array(</span>
<span class="x">    'jsonrpc' =&gt; "2.0",</span>
<span class="x">    'result' =&gt; $result,</span>
<span class="x">    'id' =&gt; $request-&gt;id,</span>
<span class="x">    'error' =&gt; null</span>
<span class="x">));</span></code>

Why I don't have tokens with different classes for php code?

2
Did you try adding <?php to the beginning of the block? - Maerlyn
@Maerlyn It work, it's weird that's required. You can add answer. - jcubic

2 Answers

8
votes

If you want to forget the php opening tag at the beginning of you code block, you have to set the Pygments startinline parameter to true.

{% highlight php startinline=true %}

See Pygments documentation

2
votes

As of Aug 8, 2016, From https://github.com/jekyll/jekyll/issues/1633#issuecomment-238383509

We don't support Pygments anymore. We use Rouge.

The new syntax is as follows:

```php?start_inline=true

header('Content-Type: application/json');

echo json_encode(array(
    'jsonrpc' => "2.0",
    'result' => $result,
    'id' => $request->id,
    'error' => null
));

```