wtsnjp / llmk

Light LaTeX Make
https://ctan.org/pkg/llmk
MIT License
110 stars 5 forks source link

最新のmasterで`bad argument`と言われる #1

Closed marmot1123 closed 5 years ago

marmot1123 commented 5 years ago

最新のmaster (94bb391)でllmkを走らせると,

/usr/local/bin/llmk:490: bad argument #1 to 'pairs' (table expected, got string)

というエラーを吐いて動いてくれませんでした. どのコミットから失敗するのか二分探索したところ, 4bd1b9a までは成功し, 6e2c5ac から失敗しているようです. Luaが分からず,git diff してみてもいまいち分からなかったのですが, 報告させてもらいます.

実行したLaTeXファイルのllmk用コードは以下の通りです. (もう古い書き方なのかもしれませんが)

%+++
% sequence = ["latex", "latex", "latex", "dvipdf"]
%
% [programs.latex]
%   command = "platex"
%   opts = "-halt-on-error"
%   args = "%T"
%
% [programs.dvipdf]
%   command = "dvipdfmx"
%   args = "%B.dvi"
%
%+++

最初のissueでルールが分からず,横着して日本語で書いてしまいましたが, 英語の方が良かったでしょうか?そちらの方が良ければ後で時間があるときに英訳します.

wtsnjp commented 5 years ago

報告ありがとうございます.日本語でも大丈夫です.

これは確かにバグですね.原因は特定できたのですが,ユーザ入力に対する「型検査」の実装と同時に対処したいので,一時的な措置として次のように書いて llmk を実行してみてください(つまり,optsargs には必ず配列を与えるようにします.仕様的には文字列を与えても OK なので,バグが修正されればこのような注意は不要になります).

% +++
% sequence = ["latex", "dvipdf"]
%
% [programs.latex]
%   command = "platex"
%   opts = ["-halt-on-error"]
%   args = ["%T"]
%
% [programs.dvipdf]
%   command = "dvipdfmx"
%   args = ["%B.dvi"]
% +++

※本件とは直接関係ありませんが,自動収束判定が実装されたので,sequence"latex" を3回書く必要はなくなりました.

marmot1123 commented 5 years ago

配列にしたところ,無事最新のmasterでビルドが通りました. 迅速な対応ありがとうございます. これからも自分の分かる範囲で何か見つけ次第報告させてもらいます.

wtsnjp commented 5 years ago

大変遅くなりましたが,先ほどコミット d5c52d071c3f979fab8cc7a6eed35ec187124307 で予告していた「型検査」の機能を導入しました.その副産物として,元々 @marmot1123 さんが書かれていたように optsargs に(配列ではなく)文字列を与えた場合にも適切な読み替えがなされるようになったはずです.