0

マークダウンのトリプル バッククォートは としてレンダリングされ<pre><code class="...">...</code></pre>ます。すなわち、

# in markdown
```java

```

# render as 
<pre>
<code class="java">
...
</code>
</pre>

# my expecting result (for Google code prettify):
<pre class="prettyprint linenums lang-java">
...
</pre>

私の現在の解決策は、次のコードを追加することですが、機能しません。

<script src="https://google-code-prettify.googlecode.com/svn/loader/run_prettify.js?skin=son-of-obsidian></script>

 <script type="text/javascript">
 jQuery(document).ready(function () {
     $('pre code').each(function() {
         var code = $(this).html();
         var lang = $(this).attr('class');
         if (lang) {
             $(this).parent().attr('class', 'prettyprint linenums lang-'+lang).html(code);
         }
     });
     prettyPrint();
 });
 </script>

を削除するにはどうすればよい<code class="...">...</code>ですか?


SyntaxHighlighter を使用して+ + (SyntaxHighlighter に基づく)<pre class="brush: java">...</pre>でコード ブロックを強調表示しました。WordPressWindows Live WriterPreCode

現在、私はマークダウンに目を向けています。マークダウンにコードブロックを挿入するには、使用します

```java
code here
```

# OR

<pre class="brush: java">
code here
</pre>

<pre></pre>SyntaxHighlighter では、内部のすべての左山括弧がエスケープされた HTML エントリである必要があるため、どちらも機能しません。

そのため、Google code prettify をインストールしましたが、上記の問題 (互換性がありません) が発生します。

4

2 に答える 2

1

以下を試してみて、これがうまくいくかどうか教えてください。

$('pre').each(function() {
     var el = $(this).find('code');
     var code = el.html();
     var lang = el.attr('class');
     if (lang) {
         $(this).addClass('prettyprint linenums lang-' + lang).html(code);
     }
 });

JSFiddleデモ

于 2016-01-21T15:27:26.707 に答える
1

元のコード オブジェクトを pre 要素から削除するのを忘れているため、コードが複製されています。$(this).remove();古いコード オブジェクトを削除するには、を呼び出す必要があります。

于 2016-01-21T15:38:44.403 に答える