アドカレにエントリーでもしないと,わざわざブログ書いたりしないよねー,な毎日を送っておりました。実際いまアドカレの記事に追われていると言う謎の執筆環境にあります。
ところで私のサイトは,コードや数式を入れることがたまにあります。
サイトはWordpressで運用しているんですが,コードや数式が含まれるような奴は基本,RStudioで書いているのです。
RStudioのRmdで書いて,それをアップロードするのもRのコード。パッケージRWordPressを使えば,Rmdをうまくknitしてアップしてくれちゃう。
使い方はこんな感じ。
library(RWordPress) library(knitr) options(WordPressLogin = c(yourID = 'your pass'), WordPressURL = ...your URL.../wp/xmlrpc.php') options(encoding = 'UTF-8') knit2wp("temp.Rmd", title = 'temp', action="editPost", postid=12345, publish=FALSE)
ライブラリを読み込んで,オプションでIDとパス,アップするサイトのURLを入れて,knit2wp関数であげる,と。actionをnewPostにすると新規投稿,編集の場合はpostidオプションをつけてaction=”editPost”にする,いきなり公開すると間違いがあるかもしれないのでpublish=FALSEにしていっかいサイトで確認。
こんな感じで運用してました。
が,Rmdでrやstanのチャンクのところが文字化けしたり,数式が化けたりすることがあるんです。しかも下手にこのやり方でエントリーした記事をいじると,(非常に込み入ったタグを吐き出すようで)エントリー記事が一文字も表示されないこととかよくあるw
なので,その辺を修正する方法ないかなー,とおもってたら,ありました。
こちらがそれ。
これをみると,XMLにしてから書き直したりしているのね。これで”< -“とかもうまく表示されるようになりました。
もうひとつ。数式の問題ですが,プラグインでTeX記法をつかって数式を入れられるようにしてあるので,これに対応するコードを追記しました。
(これを素のコードままアップするとプラグインが仕事しちゃったりするので,対応が面倒だから図にします)
これを通すと数式がただの$$で囲まれたものになるので,うまくいく・・・はずです。要は吐き出すHTMLのキーワードを正規表現で検出してきて書き換えるだけだからね。これで書いた記事
newPost( list( description=knit2wp.com.md('20171211.html'), title='最強のM-1漫才師は誰だ', categories=c('stan',"R")), publish=FALSE ) は近日公開。お楽しみにー。