Open Live Writer を使ってBloggerの記事にソースコードを表示する
Blogerへの記事投稿には Open Live Writer(以下、OLW) を使用しています。
ソースコードに最適化して表示できるようにするOLW用のプラグインが出てこないので、他の方法をとることにしました。
bloggerのテンプレートにWeb上で提供されているSyntaxHighlighterのスクリプトを埋め込めばできそうです。記事の中でソースコードとして表示したいテキストをSyntaxHighlighterのスクリプトで囲む感じです。
なお、Bloggerのhttpsリダイレクトを有効にしている場合、SyntaxHighlighterを使用することはできないようです。
準備
テンプレートにSyntaxHighlighterのスクリプトを埋め込みます。
Bloggerのデザイン → テンプレート → HTMLの編集
の順でテンプレートの編集モードを開きます。
テンプレートの<head>~</head>の間にJavaScriptとCSSを参照するための設定をいれます。
上記では1行目はコアスプリプトなで必須。JavaScript、vb、c#、PowerShell、PlaneText、SQL、XMLに対応させたいので、2~8行目これらを指定しています。指定していない言語を後のソースコードの埋め込みで指定するとエラーになります。
対応言語は下記を参照。
- SyntaxHighlighter - Bundled Brushes
http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/
9行目のshCore.cssはコアCSSなので必須、10行目は好みのデザインに合わせて選びます。ここでは「RDark」を選んでいます。
デザインの選択肢は下記を参照。
- SyntaxHighlighter - Themes
http://alexgorbatchev.com/SyntaxHighlighter/manual/themes/
同様に</body>の直前に
を入れます。
上記では画面右上に?(SyntaxHighlighterのWebサイトへのリンク)を表示させないようにしています。
記事へのソースコードの埋め込み
記事のソース編集で「ソースコードの内容」のところにソースコードを貼り付けます。「<」以降がタグと認識されてもOKな場合。
ソースコードの内容
「<」以降がタグと認識されては困る場合はこちら。こちらはOLWの編集画面に貼り付けたソースが表示されませんし、下書き状態のプレビューでも表示されません。公開しないと表示されません。
実際の表示対応言語はvbとしています。
Protected Sub ListViewJukeBox_PreRender(sender As Object, e As System.EventArgs) Handles ListViewJukeBox.PreRender
GenerateJS()
Dim DisplayResolution As String = Request.Cookies("UserSettings")("DisplayResolution")
If DisplayResolution IsNot Nothing Then
Dim intPageSize As Integer
Dim DP1 As DataPager = ListViewJukeBox.FindControl("DataPager1")
Dim DP2 As DataPager = ListViewJukeBox.FindControl("DataPager2")
If DP1 IsNot Nothing And DP2 IsNot Nothing Then
Dim pagerField As New NumericPagerField()
Dim NextPreviousPagerField As New NextPreviousPagerField()
NextPreviousPagerField.ButtonType = ButtonType.Button
NextPreviousPagerField.ShowFirstPageButton = True
NextPreviousPagerField.ShowLastPageButton = True
NextPreviousPagerField.ButtonCssClass = "Pager"
Select Case DisplayResolution
Case "Full-HD"
intPageSize = 36
ListViewJukeBox.GroupItemCount = 12
pagerField.ButtonCount = 80
Case "HD"
intPageSize = 16
ListViewJukeBox.GroupItemCount = 8
pagerField.ButtonCount = 50
Case Else
intPageSize = 36
ListViewJukeBox.GroupItemCount = 12
pagerField.ButtonCount = 80
End Select
DP1.PageSize = intPageSize
DP1.Fields.Clear()
DP1.Fields.Add(NextPreviousPagerField)
DP1.Fields.Add(pagerField)
DP2.PageSize = intPageSize
DP2.Fields.Clear()
DP2.Fields.Add(NextPreviousPagerField)
DP2.Fields.Add(pagerField)
End If
End If
End Sub
(Open Live Writerでの編集画面)
参考にしたところ
- ソースコードの表示には SyntaxHighlighter: blogger - Trip to the World
http://www.makotoiwasaki.com/2015/11/syntaxhighlighter-blogger.html - ソースコードをハイライトするSyntaxHighlighter3.0を使いこなす | DevAchieve
http://wada811.blogspot.com/2012/02/syntaxhighlighter30.html
コメント
コメントを投稿