我的博客托管在Blogger上,我经常用C / c# / Java / XML等语言发布代码片段,但我发现这些代码片段“支离破碎”。

是否有任何网站,我可以用来事先解析代码片段,整理格式,将XML“<”转换为“&lt;”等。

在这个领域有很多关于SO的问题,但我找不到任何直接解决这个问题的问题。

编辑:对于@Rich答案,网站声明“要在您的网站上显示格式化的代码,您需要获得此CSS样式表,并在页面的<head>部分中添加对它的引用”。这就是问题所在——你不能在博客AFAIK上这样做。


当前回答

我使用了一个相当低技术含量的解决方案。我使用这个在线语法高亮工具格式化代码,然后将其粘贴到博客中

其他回答

实际上,我已经使用(还有什么;-))Vim:它有一个2html“插件”。请看这里的医生。

所以当我编辑我的代码时,我只是把它转换成HTML,然后把结果粘贴到Blogger的HTML编辑器中。

注意:它不是那么漂亮的HTML(嵌入css会更好),但它只是工作。

哦:它有多种语言的语法文件,这使它非常有用。

这里有一个网站,它将格式化你的代码并输出html,它甚至包括用于语法着色的内联样式。也许不能满足你所有的需求,但这是一个好的开始。我相信他已经提供了来源,如果你想扩展它:

使用SyntaxHighlighter可以很容易地做到这一点。我在我的博客上有一步一步地说明如何在Blogger中设置SyntaxHighlighter。SyntaxHighlighter非常容易使用。它可以让你以原始形式发布片段,然后将它们包装在pre块中,如:

<pre name="code" class="brush: erlang"><![CDATA[
-module(trim).

-export([string_strip_right/1, reverse_tl_reverse/1, bench/0]).

bench() -> [nbench(N) || N <- [1,1000,1000000]].

nbench(N) -> {N, bench(["a" || _ <- lists:seq(1,N)])}.

bench(String) ->
    {{string_strip_right,
    lists:sum([
        element(1, timer:tc(trim, string_strip_right, [String]))
        || _ <- lists:seq(1,1000)])},
    {reverse_tl_reverse,
    lists:sum([
        element(1, timer:tc(trim, reverse_tl_reverse, [String]))
        || _ <- lists:seq(1,1000)])}}.

string_strip_right(String) -> string:strip(String, right, $\n).

reverse_tl_reverse(String) ->
    lists:reverse(tl(lists:reverse(String))).
]]></pre>

只需将笔刷名称更改为“python”或“java”或“javascript”,并粘贴您选择的代码。CDATA标记让您可以在其中放入几乎任何代码,而不用担心实体转义或其他代码博客的典型烦恼。

Emacs的具体答案:就博客而言,它允许内联css。基于javascript的荧光笔的问题是,你必须接受它们的配色方案,或者实现你自己的配色方案。但是,像我一样,如果您喜欢自己的emacs配色方案,那么您还有更好的选择。我已经黑了“htmlize”。El”包为emacs添加以下四个功能…

blog-htmlize-buffer blog-htmlize-region blog-htmlize-buffer-with-linum blog-htmlize-region-with-linum

这些函数将在emacs中的新缓冲区中输出可复制粘贴的html(内联样式),您可以直接在您的博客文章中使用它。输出看起来与您在emacs中看到的代码完全相同(包括配色方案)。

这里是我博客的链接,在那里你可以找到如何使用“blog-htmlize”的详细信息。El "和emacs。这也消除了html编码的“小于”和“大于”符号。由于emacs负责所有的高亮显示和样式化,您不必担心js库是否支持代码片段的语言,也不必干预blogger中的模板代码。

你可以在这里找到elisp文件(将文件保存为blog-htmlize.el)

1. 首先,备份你的博客模板 2. 然后打开你的博客模板(在编辑HTML模式下),复制</b:skin>标签之前的所有链接中的css 3.在</head>标签前粘贴以下代码

<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shCore.js' type='text/javascript'></script>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushCpp.js' type='text/javascript'></script>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushCSharp.js' type='text/javascript'></script>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushCss.js' type='text/javascript'></script>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushDelphi.js' type='text/javascript'></script>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushJava.js' type='text/javascript'></script>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushJScript.js' type='text/javascript'></script>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushPhp.js' type='text/javascript'></script>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushPython.js' type='text/javascript'></script>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushRuby.js' type='text/javascript'></script>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushSql.js' type='text/javascript'></script>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushVb.js' type='text/javascript'></script>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushXml.js' type='text/javascript'></script>

4. 将以下代码粘贴在</body>标记之前。

<script language='javascript'>
dp.SyntaxHighlighter.BloggerMode();
dp.SyntaxHighlighter.HighlightAll('code');
</script>

5. 保存博客模板。 6. 现在语法高亮已经可以使用了,你可以使用<pre></pre>标签。

<pre name="code">
...Your html-escaped code goes here...
</pre>

<pre name="code" class="php">
    echo "I like PHP";
</pre>

7. 你可以在这里转义你的代码。 8. 下面是<class>属性支持的语言列表。