2017-05-07

Blogger Markdown Pandoc Windows

Bloggerの記事をMarkdownで記述してPandocでHTML変換する。Git2.7.4をWindowsXPにインストール

Blogger https://www.blogger.com/ というGoogle運営の無料ブログでMarkdownを使う方法はある。ローカル環境でMarkdownで執筆し、ローカル環境でMarkdown→HTML変換して、そのHTMLをBloggerの記事欄に入力すればいいのだ。Markdown→HTML変換にはPandocコマンドを使うため、bashの動作するターミナルがほしい。PortableGitを導入するとbash環境が手に入る。

WindowsXPにGit 2.xはインストールできないか調査したところ、Git 2.7.4まではインストールできた。

PortableGit 2.xでgit-bash.exeを実行できるか

新しめのPortableGit 2.x をWindowsXPで実行すると、E:\PortableGit2\git-bash.exe 起動したとき「ProcedurePoint CancelSynchronousIo (Vista以降のAPI) が kernel32.dllに見つからない」と出て動作しない。 git-bash.exeではなくgit-cmd.exe 起動なら

E:\PortableGit2>git --version
    git version 2.10.2.windows.1
E:\PortableGit2>ls
    'ls' は、内部コマンドまたは外部コマンド、
    操作可能なプログラムまたはバッチ ファイルとして認識されていません。

gitだけは動作するがlsとかが使えない。bashシェルが使えないと個人的には使いにくいので、git-bash.exe が動作するバージョンを求めて探索。

PortableGit2.xの過去バージョンを調査

https://github.com/git-for-windows/git/releases をさかのぼり、WindowsXPでgit-bash.exeが動作するPortableGit2.xを探す。ちなみにMSYS2のもととなるCygwinは2.5.2(2016-06)がXP対応の最終版で2.6.0test(2016-07)からXP非対応なのだが関係あるだろうか?

PortableGit-2.10.2-32-bit.7z.exe (2016-11)
→「ProcedurePoint CancelSynchronousIo (Vista以降のAPI) が kernel32.dllに見つからない」と出て動作しない。
PortableGit-2.9.3.2-32-bit.7z.exe (2016-08)
→「ProcedurePoint RtlGetNtVersionNumbers がntdll.dllに見つからない」というエラーでWindows2000では動作しない。
PortableGit-2.9.3-32-bit.7z.exe (2016-07)
→ProcedurePoint RtlGetNtVersionNumbers ntdll.dll
PortableGit-2.8.4-32-bit.7z.exe (2016-06)
→ProcedurePoint RtlGetNtVersionNumbers ntdll.dll
PortableGit-2.8.2-32-bit.7z.exe (2016-05)
→ProcedurePoint RtlGetNtVersionNumbers ntdll.dll
PortableGit-2.8.1-32-bit.7z.exe (2016-04)
→ProcedurePoint RtlGetNtVersionNumbers ntdll.dll
PortableGit-2.8.0-32-bit.7z.exe (2016-03)
→ProcedurePoint RtlGetNtVersionNumbers ntdll.dll
PortableGit-2.7.4-32-bit.7z.exe (2016-03, git2.7の最終版)
→動作する。
PortableGit-2.6.4-32-bit.7z.exe (git2.6の最終版)
→動作する。
PortableGit-2.5.0-32-bit.7z.exe (previewではない正式な、最初のバージョン)
→動作する。

PortableGit 2.7.4インストール

C:\home\bin\PortableGit2 に2.7.4をインストール。 git-bash.exeは動作している。

Administrator@win2000 MINGW32 /$ pwd
/

Administrator@win2000 MINGW32 /$ echo $HOME
/c/Documents and Settings/Administrator

Administrator@win2000 MINGW32 /$ echo $PATH
/c/Documents and Settings/Administrator/bin:/mingw32/bin:/usr/local/bin:/usr/bin:/bin:/mingw32/bin:/usr/bin:/c/Documents and Settings/Administrator/bin:/c/WINNT/system32:/c/WINNT:/c/WINNT/System32/Wbem:/usr/bin/vendor_perl:/usr/bin/core_perl

フォルダーを新規作成。

  • C:\home\bin\PortableGit2\home
  • C:\home\bin\Pandoc

ファイルを新規作成。 C:\home\bin\PortableGit2\bash.bat

bash.bat

@echo off
set HOME=C:\home\bin\PortableGit2\home
set PATH=%PATH%;C:\home\bin\Pandoc
start C:\home\bin\PortableGit2\git-bash.exe

このbatのショートカットアイコンをデスクトップに置く。[右クリック→プロパティ]で[実行時の大きさ] を「最小化」にする。[アイコンの変更] で C:\home\bin\PortableGit2\git-bash.exe を指定する。

Administrator@win2000 MINGW32 ~$ pwd
/home

Administrator@win2000 MINGW32 ~$ echo $HOME
/home

vimは起動した。makeコマンドとかwgetコマンドは存在しない。

Pandoc

このページで使用させていただいている Blogger https://www.blogger.com/ というGoogle運営の無料ブログは、Markdownでの記事執筆は未サポートで、HTMLで記事執筆せねばならない。しかしMarkdownを使う方法はある。

ローカル環境でMarkdownで執筆し、ローカル環境でMarkdown→HTML変換して、そのHTMLをBloggerの記事欄に入力すればいいのだ。

「Markdown→HTML変換ツール」として便利なのがPandocだ。利点として

  • GitHub Flavored Markdownのソースコードタグの記述を使える。
  • ソースコードのSyntax Highlight可能。
  • PHP Markdown ExtraのHTMLのdefinitionタグ (<dl>, <dt>, <dd> タグ)の記述をサポート。GitHub Flavored Markdownの範囲を超えて使っていいのか疑問もあるが自分で<dl>とかタグ入力するよりラクだし見やすいので使っていこう。
  • Windows2000/XPでも使えるバイナリーを提供。Linuxでも使用可能。

のような特徴がある。

導入方法

https://github.com/jgm/pandoc/releases/latest でwindows版 pandoc-1.19.2.1-windows.msi を取得。インストールする必要はないので http://pandoc.org/installing.html を参考にexeを取り出す。 [start-ファイル指定して実行-cmd]

C:\Users\star>mkdir "%TEMP%\pandoc"
C:\Users\star>r:
R:\>dir *msi
2017/04/18  22:35        22,293,504 pandoc-1.19.2.1-windows.msi
R:\>start /WAIT msiexec.exe /a pandoc-1.19.2.1-windows.msi /qn targetdir="%TEMP%\pandoc"
R:\>echo %TEMP%
C:\Users\star\AppData\Local\Temp

すると C:\Users\star\AppData\Local\Temp\pandoc\Pandoc にファイルあり。このexeを、先ほどのbash.batでPATH通した C:\home\bin\Pandoc に配置。

Administrator@WIN2000 /e/Pandoc$ pandoc ../README.md -o README.html

で変換を確認した。

出力するHTMLに <html><head>..</body></html>のようなheader/footerもHTMLに含めるには -s が必要。しかし今回はBloggerの記事入力欄に転記するHTMLなのでheader/footerは なしでよい。

--self-contained とするとHTMLに画像埋め込みが可能。 http://sky-y.github.io/site-pandoc-jp/users-guide/ これもいつか役に立ちそうだ。

ちなみにBloggerでソースコードのSyntax HighlightのCSS指定するには [Blogger - Theme - Customize - Advanced - AddCSS] に以下のCSSを追加した。 https://stackoverflow.com/questions/41039084/pandoc-and-source-code-highlighting-disable-embedded-styles-when-exporting-to-h

wget

wgetは「wget windows」検索して http://gnuwin32.sourceforge.net/packages/wget.htm でBinariesを取得。bin/wget.exeを配置してPATH通す。→動作しない。Dependenciesも取得・展開し、bin/*.dllC:\home\bin\Pandocに配置すれば動作した。

C:\home\bin\Pandocとは別にフォルダーを用意したほうがいいかもだが面倒なのでまとめて配置。

nkf

文字コード変換ツール nkf は http://www.vector.co.jp/soft/dl/win95/util/se295331.html で取得して、vc2005\win32(98,Me,NT,2000,XP,Vista,7)ISO-2022-JP\にあるnkf.exeC:\home\bin\Pandocに配置。

ヘルプを見る

MINGW32 /z/home/Dropbox/tmp/blogspot$ nkf --help | less

BOMつきUTF-8.txtをBOMなしUTF-8.txtにする (input: W8, output:w80)

[/r/201705]$ nkf -W8 -w80 test1.txt > test2.txt

表示設定

PortableGit2.xはMSYS2ベースなので、ターミナルはminttyが使われている。フォント設定を変更できる。ウィンドウ左上を右クリック→Option。[Text-Font] RictyDiscordに変更。

lsすると、ディレクトリー(フォルダー)名が青くて、背景色の黒に近く、視認が難しい。minttyでは個別の色変更はできないようだ。lsしたとき色を使わないようにする。

Administrator@win2000 MINGW32 /$ alias
alias ll='ls -l'
alias ls='ls -F --color=auto --show-control-chars'
Administrator@win2000 MINGW32 /$ vi ~/.bashrc
alias ls='ls -F --show-control-chars'

いったんexitでminttyを終了する。bash.batのショートカットアイコンをダブルクリックでmintty起動。 Warningが出て、~/.bash_profile を自動作成してくれた。

0 件のコメント:

コメントを投稿

人気記事