2008/03/20

程式碼編排

本文介紹 Pygments 的程式碼編排服務,這個 Web 服務可以將程式碼轉換為 HTML 格式,然後再將 HTML 貼至 Blogger 中,即可在 Blogger 中顯示編排及美化後的程式碼。

另外有一個 JavaScript 寫的 SyntaxHighlier 程式庫可以使用 JavaScript 來編排程式碼,但是 Blogger 沒辦法上傳 .js 檔,而且不支援 ActionScript 代碼轉換。

Pygments 支援一般常見的程式碼轉換,只要不太過於冷門的都有支援, Pygement 是 Python 寫的 OpenSource 程式庫。

在首頁中有一個介面,有幾個欄位是必填的,首先輸入 Code Description, 然後選取程式語言(Language), 之後把程式碼貼上,按 Hightlight 按鈕即會輸出 HTML。

然後觀看此頁的原始碼,將以下這段截取下來,貼至 Bloger 文章裡。

最後把程式碼的樣式貼至 Blogger 的樣版裡,如果想改變程式碼的顏色可以改 pygments_style.css 裡的內容。
http://pygments.org/media/pygments_style.css


<style type='text/css'>
.syntax { background: #111111; color: #ffffff }

.syntax .c { color: #008800; font-style: italic; background-color: #0f140f } /* Comment */

.syntax .err { color: #ffffff } /* Error */
.syntax .g { color: #ffffff } /* Generic */

.syntax .k { color: #fb660a; font-weight: bold } /* Keyword */

.syntax .l { color: #ffffff } /* Literal */
.syntax .n { color: #ffffff } /* Name */

.syntax .o { color: #ffffff } /* Operator */
.syntax .x { color: #ffffff } /* Other */

.syntax .p { color: #ffffff } /* Punctuation */
.syntax .cm { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Multiline */

.syntax .cp { color: #ff0007; font-weight: bold; font-style: italic; background-color: #0f140f } /* Comment.Preproc */

.syntax .c1 { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Single */

.syntax .cs { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Special */

.syntax .gd { color: #ffffff } /* Generic.Deleted */
.syntax .ge { color: #ffffff } /* Generic.Emph */

.syntax .gr { color: #ffffff } /* Generic.Error */
.syntax .gh { color: #ffffff; font-weight: bold } /* Generic.Heading */

.syntax .gi { color: #ffffff } /* Generic.Inserted */
.syntax .go { color: #444444; background-color: #222222 } /* Generic.Output */

.syntax .gp { color: #ffffff } /* Generic.Prompt */
.syntax .gs { color: #ffffff } /* Generic.Strong */

.syntax .gu { color: #ffffff; font-weight: bold } /* Generic.Subheading */

.syntax .gt { color: #ffffff } /* Generic.Traceback */
.syntax .kc { color: #fb660a; font-weight: bold } /* Keyword.Constant */

.syntax .kd { color: #fb660a; font-weight: bold } /* Keyword.Declaration */

.syntax .kp { color: #fb660a } /* Keyword.Pseudo */
.syntax .kr { color: #fb660a; font-weight: bold } /* Keyword.Reserved */

.syntax .kt { color: #cdcaa9; font-weight: bold } /* Keyword.Type */

.syntax .ld { color: #ffffff } /* Literal.Date */
.syntax .m { color: #0086f7; font-weight: bold } /* Literal.Number */

.syntax .s { color: #0086d2 } /* Literal.String */
.syntax .na { color: #ff0086; font-weight: bold } /* Name.Attribute */

.syntax .nb { color: #ffffff } /* Name.Builtin */
.syntax .nc { color: #ffffff } /* Name.Class */

.syntax .no { color: #0086d2 } /* Name.Constant */
.syntax .nd { color: #ffffff } /* Name.Decorator */

.syntax .ni { color: #ffffff } /* Name.Entity */
.syntax .ne { color: #ffffff } /* Name.Exception */

.syntax .nf { color: #ff0086; font-weight: bold } /* Name.Function */

.syntax .nl { color: #ffffff } /* Name.Label */
.syntax .nn { color: #ffffff } /* Name.Namespace */

.syntax .nx { color: #ffffff } /* Name.Other */
.syntax .py { color: #ffffff } /* Name.Property */

.syntax .nt { color: #fb660a; font-weight: bold } /* Name.Tag */

.syntax .nv { color: #fb660a } /* Name.Variable */
.syntax .ow { color: #ffffff } /* Operator.Word */

.syntax .w { color: #888888 } /* Text.Whitespace */
.syntax .mf { color: #0086f7; font-weight: bold } /* Literal.Number.Float */

.syntax .mh { color: #0086f7; font-weight: bold } /* Literal.Number.Hex */

.syntax .mi { color: #0086f7; font-weight: bold } /* Literal.Number.Integer */

.syntax .mo { color: #0086f7; font-weight: bold } /* Literal.Number.Oct */

.syntax .sb { color: #0086d2 } /* Literal.String.Backtick */
.syntax .sc { color: #0086d2 } /* Literal.String.Char */

.syntax .sd { color: #0086d2 } /* Literal.String.Doc */
.syntax .s2 { color: #0086d2 } /* Literal.String.Double */

.syntax .se { color: #0086d2 } /* Literal.String.Escape */
.syntax .sh { color: #0086d2 } /* Literal.String.Heredoc */

.syntax .si { color: #0086d2 } /* Literal.String.Interpol */
.syntax .sx { color: #0086d2 } /* Literal.String.Other */

.syntax .sr { color: #0086d2 } /* Literal.String.Regex */
.syntax .s1 { color: #0086d2 } /* Literal.String.Single */

.syntax .ss { color: #0086d2 } /* Literal.String.Symbol */
.syntax .bp { color: #ffffff } /* Name.Builtin.Pseudo */

.syntax .vc { color: #fb660a } /* Name.Variable.Class */
.syntax .vg { color: #fb660a } /* Name.Variable.Global */

.syntax .vi { color: #fb660a } /* Name.Variable.Instance */
.syntax .il { color: #0086f7; font-weight: bold } /* Literal.Number.Integer.Long */

</style>


0 pushs: