Hatena::ブログ(Diary)

アセトアミノフェンの気ままな日常

2015-07-14

バッド・ノウハウなのかどうか

昨日の件で最後に「バッドノウハウ」という言葉を使ったが、僕にとってのこの用語の定義をはっきりさせておきたい。

僕のいう「正しい方法」は説明書に則った方法で、バッドノウハウ」は説明書に書かれていない使いかたである。したがって、「正しい」「バッドノウハウ」は主観的なものではなく、「説明書に書かれているかどうか*1」が基準であり、僕の趣味とは無関係なものである。一方、説明書に反する(もしくは書かれていない)使いかたをする人がいれば、それはその人の趣味である。

念を押すが、「本来 viewport= に指定すべき値を bb= に与える」や「本来ビッグポイント (bp) 単位で指定すべき値をピクセル (px) 単位で指定する」のはバッドノウハウであり、とりわけ後者が正しかった試しは一度もない。僕は、ある人が「自分の環境で(たとえなんとなくであっても)期待通りになるから、それでよい」と考えていたり、あるいは「その方が自分に合っているから、それでよい」と思っているのであれば、たとえその方法がバッドノウハウであったとしてもかまわないと思っている。個人がどんな方法を使うかは趣味の範囲だからである。僕が問題視しているのは、「そのバッドノウハウがなんとなくうまくいくからといって、他人に勧める(あるいは間違った理解を助長する行為をする)こと」である。もっと罪が重いのは、「その方法がバッドノウハウだと認識していながら他人に勧める(助長する)こと」であり、昨日の件はその典型である。

もちろん、僕のようにそれらの方法をバッドノウハウだと主張する集団を一種の流儀だと言ってしまうこともできる。もっというと僕が「自分が正義だ」と主張したいかのように見えるのかもしれない。しかしまったくそうではなく、実際にいろいろな方法を比べてみると、いま TeX Forum や TeX Wiki で説明されている方法がいちばん楽だし、お勧めできるというのが事実なのである。バッドノウハウが偶然うまくいくこともあるが、必ず正攻法でうまくいく方法が存在し(もし仮に存在しないとすれば、それはプログラムのバグである)、単にそれを知らないだけという場合が多すぎて、それこそが今、余計な問題を引き起こす温床になってしまっていることに気づいていないのではなかろうか。

個人がどうするかという流儀は自由であるが、新規ユーザにとって BoundingBox などという概念自体、理解する必要をなくしたい(あるいは、extractbb を使いさえすれば毎回期待通りかつ仕様どおりになることを保証したい)というのが現在の TeX 周辺の開発者の思惑だと推測している。だからこそ、TeX Live 2015 で extractbb の自動実行が標準で許可されたのだと思っていて、実際、extractbb の自動実行の下で \usepackage[dvipdfmx]{graphicx} と \includegraphics を使えば、bb= などいうオプションを指定することなく正常に画像が埋め込める。まさにそれは「extractbb が dvipdfmx そのものだから」で、これは(将来のことはわからないがきっと)変わることがないだろう。現状でユーザに BoundingBox なるものを意識させない唯一の方法が、いまの TeX Live の標準である「extractbb 自動実行設定された状態で、shell-escape = restricted (restricted \write18 enabled.) で LaTeX 処理」だと思う。この方法をいま TeX Forum などで推奨しているのに、いまだに「bb= を明示的に書くべきだ」「bb= につけるのは簡単に分かるピクセル単位でも良いよね?」などという主張がまかり通るのは、一般ユーザやこれから LaTeX に入門する人に対して優しくないと思う*2

Twitter で某 QA などの議論を茶化すだけの人には絶対に言われたくない。答える身になってみろ、TeX ディストリビューションの開発がいまなぜ特定の方向に進められているのか考えてほしい、というのが本音である。本来間違った用法を使うかどうか決めるのは各人の趣味の自由だが、事実を十分伝えずにその用法を他人に勧めるのはいかがなものか。いま問うているのはそこである。

*1:僕が言う方法が説明書どおりかどうか確認したいならば、次回の記事を参照されたし。

*2:毎回 bb= を正しく指定する(あるいは .xbb を事前に作る)なら止めはしないし、実際にその方が若干タイプセットが早くなるという事実はある。そういうわけで、「extractbb 自動実行」と同様に「bb= 指定または .xbb 事前生成」も一理ある。しかし、このほかの方法(bb に本来の viewport を付けるなど)は仕様書に書かれていないので趣味にすぎない。bb= にピクセルを指定するのが楽だから好きだというのであれば止めはしないが、仕様書に書かれていないことなのでどうなるかは知ったこっちゃない。各人の趣味でやってくれ、という感じである。もちろん、extractbb の自動実行を好むというのは趣味のうちに入らないと思っている。それは現在の仕様の範囲内だから、本来それに従うのが当然である。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

Connection: close