niszetの日記

細かい情報を載せていくブログ

Lua

(Pandoc) docx -> md への逆変換のメモ(4回目)

コード周りは一旦これでおしまい。 さて、前回はテンプレートファイルに"Source Code R"のようなスタイルを追加し、CodeBlockはその外側にこのスタイルを持ったDivを配置することで、生成されたdocxの見た目に影響なく、元となった言語情報を保存することを…

(Pandoc) docx -> md への逆変換のメモ(3回目)

まずはdocxにする際に細工をする。 さて、前回の考察の結果として、docx生成時にCodeBlockの言語情報が失われているので再生しようがないため、docx生成時になんとか情報を残す方法を考えねばならぬことがわかりました。 やろうと思えば色々とデータをdocxフ…

(Pandoc) docx -> md への逆変換のメモ(2回目)

CodeBlockまわりが面倒くさい… さて、前回の続きです。CodeBlock周りの扱いをどうにかしないといけないのですが…長くなりそうなので複数回にまたがる予定です。 前回の記事にも訂正を入れましたが、docxからMarkdownに変換する際、スタイルがSource Codeにな…

(Pandoc) VSCode向けにPandocのLuaフィルタ用のsnippetを作ってみた

VSCodeのExtensionってお手軽に作れますね… VSCodeの使いこなしが足りないと思ってちょっと最近 C&R出版のこの本を読んで使い方を学んでいます。 www.c-r.com これの最後に自作の拡張を登録するというのがあったのでやってみました。ひとまず自分がまだわか…

(Pandoc) Pandoc 2.9.2 時点でLua filter側からPandocの実行時のオプション等は拾えない (メモ)

備忘録です 昨日数時間かけてLuaフィルタ中で使用できる各種モジュール、ログを生成してみるとか色々やってみましたが、現時点Pandoc 2.9.2 ではLuaフィルタの内部からPandocの実行時のオプション、引数その他を得る方法はなさそうです。 いくつかの情報、例…

(Pandoc) Luaフィルタを書くときはコンストラクタの定義順に気を付ける(メモ)

Luaフィルタのマニュアルではわかりづらいのですが… 前回の記事でLuaのフィルタを書いていて実際に自分がハマったのでメモ。 Luaフィルタのマニュアルには各要素(BlockとかInlineとかのアレ。適切な訳語わからず)について、「Lua type reference」と「Modu…

(Pandoc) CodeをSpanに置き換えてスタイルをあてるLua filter

ただし、custom-styleがない場合はそのまま出力する。 Codeに対してもattributeをあてられるので、idとかclassとかattributesをつけられるので、こんな感じで、標準入力からpandocに送ってみる。今回使うのはcustom-styleのみだけども、idとかで処理を追加す…

(Pandoc)画像のファイルパスを絶対パスにする(仮)

Pandoc 2.7.4になったらもう少し色々出来る…。 Rのslackで書いたやつです。単純に相対パスで書かれたものを絶対パスに書き直すだけであれば、下記のようなLua filterでいけます。ただし、windows環境だとC:\は/はじまりじゃないので/がついてしまいますね。p…

RStudio同梱のPandocでタスクリストが出来ない件

復活させてもらおうかしらん? Pandocはバージョン2.6からtask_listsオプションが使えます。 pandoc.org それ以前はnozmaさんの記事のようにLua filterを使用して対応していました。 qiita.com なのですが、本家で対応できたからいいよねということで?Lua f…

(Pandoc) MetaBlockの不思議な挙動。

このIssueはPandocの理解度upに参考になる…かも。 このIssue、現時点でopenなのですが、初見だとなかなか面白い挙動なので見ておくと良いです。 github.com これを、以下のようにplain2をつくって渡してあげるとmb1とmb2は同じになります。1度でも参照して…

(Pandoc) pandoc.utils.normalize_date あるいはparseTimeMの話

Luaモジュールと見せかけてほとんどHaskell pandoc.utils.normalize_dateという関数がある。これは日付っぽい文字列を受け取って、日付の形に返してくれる。 こいつの仕様がよくわからなかったので調べた。関数自体はLua filterのページのここに書いてある。…

(Pandoc) 句読点を修正するためのLua filter

とてもシンプル 文中のCodeやCodeBlockは対象外にすると決めてしまえば、以下のシンプルなコードで対応できます。 function Str(e) text = e.text text = string.gsub(text, '.', '。') text = string.gsub(text, ',', '、') return(pandoc.Str(text)) end…

pandoc-discussでPandocのLua filterの質問に回答した

Pandocにも質問用のメーリングリストがある ここね。 groups.google.com PandocのGitHubのIssueはBug reportやFeature requestをする場であって、個別の、書き方がわからない系の質問をする場所ではないので、困ったら↑のメーリングリストに書いてみましょう…

PandocのLuaフィルタ内で使用可能なLuaのライブラリとか(メモ)

自分向けメモ ひとまず適当なLuaフィルタを書く。下記みたいに。1回回ればよいのでDocでいいんじゃないかな。 function Doc(e) for k,v in pairs(pandoc.pandoc) do print(k) end end これを任意のファイルを入力に、出力を任意の形式にして--lua-filterで先…

Pandoc 2.7.2 に同梱されているLuaのバージョンの確認

簡単に書けるものなら色々作れそう。 さて、PandocのLuaフィルタについて少しずつ調べているのですが、簡単なものであればもう書けそうなので順次書いていく。 たとえば以下のような関数を作ってLuaフィルタとして使用する。 function Str(elem) if elem.tex…

PandocのLuaフィルターを書いてみる

Luaの文法がまだ覚えきれていないのでまずはそっちを固めるべき ひとまず、公式のマニュアルを読んだ。 pandoc.org 例はココにあるらしいが、まだ読んでいない。 github.com また、通常のフィルターも少しだけ目を通したが、フィルタの実行環境を持っていな…

Programming in Lua Forth edition 2章

Lua

いきなりeight queenのコードが出てきた。 なんかほとんど説明なくeight queenのコードが出てきたので早速写経して動作を確認した。1発完動はなく、1文字typoがありましたが。 関数の定義や呼び出しなどなど色々な要素が詰まったコードなので、もう少し文法…

Programming in Lua Forth editionを購入した

Lua

Luaはいろんなところに使われているんだな。 ということで、重い腰を上げてLuaを勉強しようと思う。あまりLuaについての書籍は発行されておらず、特に和書はない。少し前のであればあるのだが、まぁ新しいものが良かろうということで(といってもこれも数年…