ラベル ソースコード の投稿を表示しています。 すべての投稿を表示
ラベル ソースコード の投稿を表示しています。 すべての投稿を表示

BloggerにSyntaxHighlighterを導入する!

SyntaxHighlighter v3は導入できなかったが、最新のSyntaxHighlighter v4を導入できたので、その方法を紹介したいと思う.
SyntaxHighlighterを導入できずに諦めている人にぜひ読んでもらい、私と同じ喜びを感じてほしいと思う.

導入する!



その0


Git Bash(Windowsの場合)Node.js(LTSのほうが良い?)をインストールする.

その1


Git Bushを起動して、syntaxhighlighterを保存するローカルディレクトリに移動し、以下のコードを続けて入力する.
$ git clone https://github.com/syntaxhighlighter/syntaxhighlighter.git
$ cd syntaxhighlighter
$ npm install

次のような感じ




その2


続いて、以下のコードを入力する.
ko-ika@PC MINGW64 ~/Blogger/syntaxhighlighter (master)
$ ./node_modules/gulp/bin/gulp.js setup-project

そのまま通れば(その3へ)問題ないが、次のエラーが出るかもしれない.(私の場合はこうなった.)
[hh:mm:ss] TypeError: loadReposFromCache(...).error is not a function

この時は、 /syntaxhighlighter/build/setup-project.js を開いて、39行の error catch に変える.
つまり、39行目を次のようにして上書き保存する.
const loadRepos = () => loadReposFromCache().catch(loadReposFromGitHub).then(R.map(R.pick(['clone_url', 'name'])));

そして、Git Bashで、その2の初めのコードを再び入力する(うまくいくはず).

無事成功すると、 /syntaxhighlighter/repos/ 下に新たなファイルフォルダーがダウンロードされる.



その3


次に、 ./node_modules/gulp/bin/gulp.js build を使う.

この時に、 --brushes --theme を指定する.


--brushes


Xという言語をハイライトさせたいのなら、 --brushes=X という風にする.

コンマで区切ることで複数指定することもできる: --brushes=X,Y

どの言語が対応しているかは、 /syntaxhighlighter/repos/ 下にある brush-X という名前のフォルダーを探せばわかる(Xには、具体的な言語が入る、javascriptとか).

また、 --brushes=all とすれば、 /syntaxhighlighter/repos/ 下にある言語すべてをハイライトできる.


--theme


Xというテーマを使いたかったら、 --theme=X という風に指定する。

使用できるテーマは、以下のサイトに載ってる(多分).


次のサイトは、画像もあって役に立つ.


/syntaxhighlighter/repos/ 下にあるフォルダー theme-X を探してもらえば、対応しているテーマが分かる.

使用例


例えば、javascriptとcssをハイライトさせたくて、テーマはdefaultにしたい場合、Git Bashに次のように入力する.
ko-ika@PC MINGW64 ~/Blogger/syntaxhighlighter (master)
$ ./node_modules/gulp/bin/gulp.js build --brushes=javascript,css --theme=default

これが通れば問題ないので、その6まで行ってほしいが、次のエラーが出るかもしれない. 多分出る.
[hh:mm:ss] TypeError: Promise.props is not a function


その4


/syntaxhighlighter/build/bundle.js を開いて、33行目の 'songbird' 'bluebird' に変えて、上書き保存する.
  const Promise = require('bluebird');

そして、再び ./node_modules/gulp/bin/gulp.js build --brushes=javascript,css --theme=defaultを走らせる.


上の画像のように、次のようなエラーが発生すると思う(もし、うまくいったらその6まで飛んでもらいたい).
ERROR in ./src/core.js
Module not found: Error: Cannot resolve module 'brush-javascript' in C:\Users\ko-ika\Blogger\syntaxhighlighter\src
 @ ./src/core.js 241:14-41


その5


上のエラー中の、Module not found: Error: Cannot resolve module 後の2つの'で囲まれたファイルフォルダーを手動でインストールする.
ko-ika@PC MINGW64 ~/Blogger/syntaxhighlighter (master)
$ npm install folder-name

上の例では、以下のようにする.
ko-ika@PC MINGW64 ~/Blogger/syntaxhighlighter (master)
$ npm install brush-javascript

ko-ika@PC MINGW64 ~/Blogger/syntaxhighlighter (master)
$ npm install brush-css

そして、 ./node_modules/gulp/bin/gulp.js buildを走らせる.

特にエラーは出ないで、終了すると思う.

もし、うまくいかなかったら、次も試してみる.
npm install opts-parser
npm install syntaxhighlighter-match
npm install syntaxhighlighter-html-renderer
npm install syntaxhighlighter-regex


その6


syntaxhighlighter/dist ディレクトリ下にいくつかのファイルが生成されているが、その中の、 syntaxhighlighter.js theme.css を各自のサーバーにアップロードする。

あとは、ブログのHTMLをいじるだけ(ここから先は、こちらの記事のその2と似ている).

Boggerのトップページのサイドメニューの「レイアウト」をクリックし、「HTML編集」ボタンを押す.


</head>タグの上に以下のコードを挿入する.

<script src='[path]/syntaxhighlighter.js' type='text/javascript'/>
<link href='[path]/theme.css' rel='stylesheet' type='text/css'/>

コード中の[path]は、syntaxhighlighter.jsと、theme.cssをアップロードしたフォルダー名を指定する. 同じフォルダーでなくてもよい. 例えば、https://foo.com/styles/theme.csshttps://foo.com/scripts/syntaxhighlighter.jsなど.


そして、「テーマを保存」ボタンを押すだけ.


使用方法・注意点


使い方は、基本的に前のバージョンのSyntaxHighlighterとかわらないっぽいので、他のサイトを見てもらいたい.

一つだけ注意することは、この方法で導入したハイライターにはデフォルトでツールバーが表示されないことだ.


参考にしたサイト






Bloggerにcode prettifyを導入する

自分のブログにソースコードをきれいに埋め込みたくなった.そこで、"SyntaxHighLighter"を導入しようとしたが、どうやっても導入できなかった(自分の能力不足). 他のソースコードを表示するスクリプトを調べてみると、Googleが開発した"code pretifer"というものにたどり着いた. 導入してみると簡単にできたので、皆さんにもその導入方法を紹介したいと思う.

方法その1


導入する


Boggerのトップページのサイドメニューの「レイアウト」をクリックし、「HTML編集」ボタンを押す.



HTML内で、</head>タグを探し、そのすぐ上に以下のコードを挿入する.

<script src='https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js'></script>

HTMLの上側にある「テーマを保存」ボタンを押す.



これでOK.

実際につかう


記事を作成する際は、HTMLの方がよい.



表示させたいソースコードを、<pre class="prettyprint linenums">...<pre>の中に入れる(基本は、<pre class="prettyprint">...<pre>だが、これにすると、さすがに不格好でだれも使わないと思ったので、linenumsクラスも用いた. ).入力の際は、<&lt;に変えないと、うまく表示されないので注意.
プレビューで確認するとちゃんと出力されていることがわかる.



テーマの変更


テーマの変更もできる. 以下の中から選べる.



CGIパラメータの"skin"を指定することでテーマを変更できる. 例えば、"Doxy"にしたいときには、「導入する」で挿入したコードを次のようにすればよい.

<script src='https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js?skin=doxy'></script>

他のテーマでも大文字を小文字にすればよいはず(試してない).

方法その2


導入する


まず、必要なファイルを以下のサイトからダウンロードする.



右上の「Clone of download」ボタンを押し、メニューの中の「Download Zip」ボタンを押すとダウンロードが開始される.



.zipファイルを解凍したら、"loader"フォルダーに入っている"prettify.css"、及び、"prettify.js"を外部サーバーにアップロードする(Bloggerには無理なので、Googleドライブや、GitHub等. GitHubについては、「Github Pagesでウェブサイトを構築する方法」が役に立った).

次に、方法その1と同様に、HTMLを編集する. まず、</head>タグの上に以下のコードを挿入する.

<link href='[path]/prittyfy.css' rel='stylesheet' type='text/css'/>
<script src='[path]/prettify.js' type='text/javascript'/>

コード中の[path]は、"prettify.css"と、"prettify.js"をアップロードしたフォルダー名を指定する. 同じフォルダーでなくてもよい. 例えば、"https://hogehoge.com/styles/prettify.css"、"https://hogehoge.com/scripts/prettify.js"など. さらに、<body>タグ内を編集して、次のようにする.

<body ... onload='PR.prettyPrint()'>
...はすでに書かれている内容. 次の写真を見るとわかりやすいと思う.



後は、「テーマを保存」を押して変更を適用するだけ.

テーマの変更


「方法その1」の「テーマ変更」で見たサイト(その2の最初のほうでダウンロードしたフォルダーの"styles"フォルダーに入っている.)以外に次のサイトからテーマの閲覧、ダウンロードができる.



気に入ったデザインのテーマがあったら、必要ならダウンロードして、アップロードしよう. ここでは、"Doxy"を選んだとして説明する.今までと同様に、</head>タグの上に以下のコードを挿入する.

<link href='[path]/doxy.css' rel='stylesheet' type='text/css'/>
ただし、"prettify.css"を読み込んでいる箇所は削除する(prettifyのテーマが書かれたスタイルシートは1つだけ読み込む. 次の写真を参照).



最後に、「テーマを保存」を押す. これで、うまくいくはず.

表示される行番号を増やす


使用しているテーマによっては、表示される行番号が少ない場合がある. その場合は、まず、Bloggerの「テーマ」を開いて、「カスタマイズ」ボタンを押す.


そこで、上に出てきた「Bloggerテーマデザイナー」の一番左のメニューの「上級者向け」をクリックし、隣のメニューの一番下にある「CSSを追加」を押し、さらにその隣に次のコードを書く.

li.L0, li.L1, li.L2, li.L3,
li.L5, li.L6, li.L7, li.L8 {
  list-style-type: decimal !important;
}

そして、右上の「ブログに適用」ボタンを押す.



ソースコードが横にはみ出ないようにする


使用テーマによっては、ソースコードが横にはみ出てしまう場合がある(デフォルトが当てはまる). これを解決するには、「表示される行番号を増やす」で変更したCSSに次の内容を加えればよい.

pre {
  overflow: auto;
  resize: horizontal;
}

こうすると、ソースコードが横にスライドできるようになる. もし、すでに<pre>タグを他のことに使っているなら、次のように書けばよい.

pre.my-code {
  overflow: auto;
  resize: horizontal;
}

そして、面倒だが、ソースコードを書く際に毎回次のように書く.

<pre class="prettyprint linenums; my-code">
source code...
</pre>

使い方


最後に使い方をまとめる. すでにみたが、基本的な使い方は次である.
<pre class="prettyprint">
source code...
</pre>

すでに注意したが、ソースコード内の<&lt;に変える必要がある.
また、次のように入力してもよいが、Bloggerでは、うまく表示されない?(少なくとも、私が試したときはちゃんと表示されなかった)ので、推奨しない.

<pre><code class="prettyprint">
source code...
</code></pre>

"PR.prettyPrint()"がどの言語のコードかを自動で判定してくれるが、例えば、C++で書かれたことを特定したい場合は、language-cppスタイルクラスを使えばよい(htmlの場合は、lang-htmlでいいみたい. cssも?).

<pre class="prettyprint lang-cpp">
source code...
</pre>

linenumsクラスを付け加えれば、行番号をつけることができる. さらに、例えば、linenums:50と書けば、50番目から行数を数え始めるようにできる.

<pre class="prettyprint linenums:50">
source code...
</pre>

また、あまり使わないと思うが、nocodeクラスを使うことで、コードでない文字列も入れることができる.

<pre class="prettyprint">
source code... <span class="nocode">This is not code</span> ...
</pre>

使用例


次のようにhtmlに記述する(見やすさのため3行目の<はエスケープしてない).
<pre class="prettyprint linenums:30 language-cpp">
int foo(int arg) {
   cout << "Hello World from foo!" << endl; 
      /* 
        Hello World! <span class="nocode">This is not code</span>
      */ 
   return 0;
}
</pre>

参考にしたウェブサイト

とても参考になった. 本記事の大体はこのサイトに拠っている. ソースコードを見やすくする方法で、ここに書いてないことがたくさんあるので、見るべきである.

「その1の方法」の内容(Blogger向けではない)をもう少し詳しく簡潔にまとめてある.

英語が読めるなら、上記2つのサイトを見れば十分だと思う. また、前者のサイトには、code prettifyの対応言語が載っている.

FloatingActionButtonをスクロール中に消す

NestedScrollView を下にスクロールしている間は, FloatingActionButton を表示させないようにする. 少し変えれば, RecyclerView 等の他のScrollViewにも使えそう(未確認). 下に実際の挙動を示した. 目次 ...