2017の5日目です。4日目はabenoriさんでした。6日目はtrueroadさんです。長めの文書となりました。ご興味のある部分をお読みください。2017-12-09)投稿ののち,いくつかの大変有益なコメントを頂戴いたしました。本稿の内容は,初心者がひとまず自分なりに実践したことの紹介であり,必ずしも最善のものではないことをご留意の上,お読みください。詳細は記事の最後に載せています。自己紹介と本稿の趣旨を述べました。数学科教員志望の方へ本題を逸れて,数学科教員志望の方へ向けてのLaTeXへのお誘いです。本稿の他の部分は一般向けに書いております。お手軽「自分専用パッケージ」のすすめ長いプリアンブルをコンパクトにまとめる「自分専用パッケージ」の効用を,私自身のプリアンブルを例にとりお伝えします。(1)本稿の主題です。お手軽「自分専用パッケージ」を実際に作り,短いプリアンブルになった.texファイルをコンパイルしてみましょう。基本的な部分のみを解説しています。(2)保守性や今後の使いやすさを考えて手を加え,「自分専用パッケージ」をワンランク上のものにしましょう。深淵への誘い完成度向上を目指したり,好みの組版結果を追求したりしているうちに,楽しくなってきます。謝辞このページにご来訪いただきありがとうございます。Ghostと申します。高等学校で数学科教諭をしており,講義資料作成にあたってLaTeXを楽しく利用しています。LaTeXを楽しみはじめたのはごく最近で,まだ詳しいことは理解しておらず,これから勉強しようと思っています。本稿では,LaTeXを快適に使うための手軽なカスタマイズを紹介いたします。実作業時間は10分程度で済むかと存じます。LaTeXからは離れているものの,今使っているソフトウェアの仕上がりに不満がある方としました。LaTeXを用いた中身のある文書を作った経験は前提としますが,それ以上のことは前提としません。TeX入手法などの記事をお読みください。知識不足のため,不適切であったり冗長であったりする内容が含まれるかもしれません。ご指摘いただけましたら,随時修正いたします。上級者の方におかれましては,初心者が学んでゆく様子をご覧いただき,「それならこんなことでも記事にしておこうか」と思っていただければ恐悦至極に存じます。Contents数学科教員志望の方へ数学科教員志望の方は,本題に入る前に,よろしければ少しだけ現在の状況と願いをお聞きください。私は,数学の授業をするにあたって講義資料が必要な場合にLaTeXを用いています。個人的には,少し手をかければ綺麗な出力が得られるため,とても満足しています。残念なことに,同僚に聞いてみてもLaTeXユーザは少数派(2017年度の職場環境では私のみ)です。大学時代は使ったがそれ以後はまったく,という声が多いように感じます。Wordがよく使われています。いずれのソフトウェアも,講義資料を作成するにあたって十分な機能を備えており,操作は直観的です。出力の細かな部分はソフトウェアの仕様に合わせねばならず,こうしたい,ああしたい,といった欲求にはあまり応えてくれませんし,自分好みの表記を実現するには毎回の手間が大きくなります。一方でLaTeXは,WYSIWYGなソフトウェアではないため,初めに少々の勉強や準備を要することは確かです。一度自分好みの設定を作り上げてしまえば,以後は手軽に高品質な出力が得られます。工夫すれば文書の保守性も高いものとなります(たとえば,gfngfnさんの解説記事があります)。企業の今後の動向に左右されないことも強みといえるでしょう。このように同僚にLaTeXを表現力やマクロの手軽さを宣伝したことはあるのですが,どうにもハードルが高く見えるようです。先に挙げた2つのソフトウェアには,いわゆる「問題データ集」が販売されており,そのために使っているという意見もありました。寡聞にして,高校数学向けの.texファイルを集約したウェブサイトをあまり存じ上げません。LaTeXを用いて高校数学の講義資料を作成する仲間が増え,互いのファイルを公開し利用しあう文化が生まれれば,有意義であろうと考えています。入試問題や問題集においては著作権の問題がありますが,オリジナルの講義資料や練習問題の交流を図ることができれば,負担を軽減しつつ,質の良い問題を知る機会になるでしょう。そこで,現在大学の講義でLaTeXを使っていたり,論文執筆のためにLaTeXを使っている数学科教員志望のみなさんには,教員になられてからもLaTeXと仲良くしていただければ,そして講義資料や作成された問題をWWW上で公開していただければ,と願っています。Contentsお手軽「自分専用パッケージ」のすすめここからが本題です。自分自身の成長過程を下敷きに,お手軽「自分専用パッケージ」の有用性を述べます。LaTeXを用いて文書を作成するにあたって,必要なパッケージや,よく使う命令をプリアンブル(\begin{document}の前)に記述することとなります。}\setlength{\textheight}{\paperheight}\setlength{\topmargin}{4.6truemm}\addtolength{\topmargin}{-\headheight}\addtolength{\topmargin}{-\headsep}\addtolength{\textheight}{-60truemm}\setlength{\textwidth}{\paperwidth}\setlength{\oddsidemargin}{-0.4truemm}\setlength{\evensidemargin}{-0.4truemm}\addtolength{\textwidth}{-50truemm}\pagestyle{fancy}\lhead{タイトル}%\chead{\title}\rhead{\thepage{}/{}\pageref{LastPage}}\cfoot{}とこんな具合でした(実際にはコメント行あり)。パッケージの読み込み・定理環境のカスタマイズ・余白の設定などをしています。自分なりに理解して書いた部分と検索して得られたものをコピーした部分が入り交じり,それなりの長さです。これを,LaTeX文書を書くたびに毎回コピーアンドペーストしていました。現在は,当時よりもはるかに使用しているパッケージも増え,独自の命令も増えているにもかかわらず,プリアンブルは\documentclass[11pt,b5j,twoside,fleqn,papersize,dvipdfmx,uplatex]{jsarticle}\usepackage{jphsbase20171205}\usepackage{jphshand20171205}\jphstitle{タイトル}のみです。プリアンブルが長いと,.texファイルが読みづらくなるばかりか,置換などを行う場合にも思わぬ箇所に影響が及びます。この短いプリアンブルを実現してくれるのが「自分専用パッケージ」です。「自分専用パッケージ」とは,もともと書いていたプリアンブルを単純に外部の.styファイルにそのまま押し付けたものです。それだけですが,プリアンブルはとてもシンプルになります。WWW上で公開されている殆どのパッケージは,何らかの新たな機能を提供するためのものですから,パッケージを作るというと難しく聞こえたかもしれません。本稿における「自分専用パッケージ」は,LaTeXの文書を作成することのできた人であれば,誰にでも作れます。Wikiにも解説がありますが,この記事は新たな機能を提供するパッケージを想定しているように思われます。今回はそうではなく,ただプリアンブルを短くする目的のみですので,極めて単純です。プリアンブルが長くなってしまった.texファイルを開きます。「名前をつけて保存」します。その際,ファイル名を「mypreamble20171205.sty」とします(名前は自由ですが,日付を入れる意味は後程述べます)。拡張子が.styになってくれない場合,生成された「mypreamble20171205.sty.tex」から「.tex」を削除し,拡張子を.styに変更してください。TeXWorksでは,保存形式のプルダウンメニューから,「スタイルファイル(*.sty)」を選ぶことができます。「mypreamble20171205.sty」を開き,1行目すなわち\documentclass[...]{...}と,\begin{document}以降の行(\begin{document}を含む)をすべて削除し,上書き保存します。,\title,\author,\dateを使用している場合は,その部分も消してください。これで「自分専用パッケージ」は完成です。,「自分専用パッケージ」を使ってみましょう。先程の.texファイル(心配ならばコピー)を開きます。1行目すなわち\documentclass[...]{...}を残して,2行目から\begin{document}の直前までを削除します。,\title,\author,\dateを使用している場合は,その部分は消さずに残してください。要するに,先程消した部分と残した部分を逆にします。2行目に\usepackage{mypreamble20171205}と書き加えます。「mypreamble20171205.sty」を.texファイルと同じフォルダに置き,コンパイルしてみてください。これまでと同じ出力が得られたことでしょう。このままでは,毎度.texファイルと同じフォルダに「mypreamble20171205.sty」を置き続けなければなりません。最後に,TeXがよく分かる場所に「mypreamble20171205.sty」を置き,それを使ってもらうことにしましょう。Wikiの解説が参考になります。2017)の例を挙げておきます。環境により異なりますのでご注意ください。Liveを更新したときに引き継いでくれません)。mypreambleという名前のフォルダを作ります。mypreambleフォルダの中に「mypreamble20171205.sty」を置きます。10の場合,スタートメニュを右クリックすると出てきます)。コマンドプロンプトにmktexlsrと打ち込みenterキーを押します。待つとDone.と表示されます。これで,以後プリアンブルには\documentclass[...]{...}\usepackage{mypreamble20171205}のみ(と必要に応じて\title,\author,\date)を書けば済むこととなり,長いプリアンブルからは解放されました。(2)さて,私はしばらくの間,直前で述べたような「自分専用パッケージ」で満足していました。講義資料の体裁をより自分好みにしようと奮闘するうち,「自分専用パッケージ」の完成度がアレであることに気付きはじめました。結局,使う中で不満な点を見つけては勉強(検索ないし試行錯誤)し,また次に使うときに......を繰り返し,「自分専用パッケージ」は成長してゆきます。個人的な好みや使いたいマクロの内容は省き,一般的に起きるであろう問題に絞って振り返ると,パッケージの基本的な体裁を成していなかった。Wikiの解説を読みながら,「自分専用パッケージ」の1行目に\ProvidesPackage{...}[...]\NeedsTeXFormat{pLaTeX2e}と書き入れてみた。内部で使用するためのマクロ名が短く,衝突の危険があった。@を使いつつ名前空間の分離に努めるとよいとの記載があるが,何故か上手くいかなかったため,ひとまず長いマクロ名としてみた。20180618)何故解決したのか最早思い出せませんが,現在は@を使い名前空間を分離しています。他のパッケージで置き換えたために使っていなかったパッケージを読み込み続けていたことに気付き,削除した。使いたい2つのパッケージが衝突した。回避しようと試みたが成功しなかった。一方は講義資料のため,一方は試験のために使う目的であったことから,講義資料用と試験用のパッケージを分離した。タイプが楽になるよう,マクロ名に中途半端な略称を用いていたが,思い出しづらくなった。結局,タイプする時間の差は1秒程度に過ぎないため,分かりやすいマクロ名に変更した。頻繁に使用するマクロに限り,略称を残した。(私はこの段階で既に「自分専用パッケージ」の公開をしていたため,マクロ名は暫定的に併存させている。)といった修正を繰り返しています。ここで,組版結果に影響を与えるような修正を加えたり,マクロ名を変更したりすると,過去の文書をコンパイルできなくなって(または仕上がりが変わって)しまいます。そこで,修正した.styファイルには新しく「mypreamble20171206.sty」と名前を付けておくと混乱が防げます(TeXの分かる場所に置き,mktexlsrしておきましょう)。新たな機能を提供するパッケージでは,大がかりな修正を安易に行うと混乱を招く可能性がありますが,「自分専用パッケージ」なのですから,気楽に考えましょう。パッケージをアレな完成度から素敵な完成度にするにはまだまだ遠い道程に思われます。私の「自分専用パッケージ」(jphsmathパッケージ)には色々とアレな点が残っています。致命的な点だけでも依存パッケージが多すぎる。独自の命令と\RequirePackageの海は分離して,柔軟性を持たせたい。不明な条件下で別行建て数式の余白が短くなる。暫定的にその場合の余白を埋めるマクロを定義しておいたが,本質的には解決していない。\absなどの衝突の危険性が高いマクロ名が残っている。中途半端に略したマクロ名が残っている。LaTeXコードを高い保守性の下で記述する例)が,不完全である。保守性に欠けた部分が残っている(微分の\(d\)など)。\mathchoiceの闇に魅入られている。細かな修正点は枚挙に暇がありません。それでも,完璧でないからと足踏みしていても仕方がありません。応急処置を施しながら使い,今後も少しずつ手を入れて,より良いものにしたいと考えています。これ以上のことは本稿の趣旨を外れますので立ち入りません。WWW上の各種情報や,既にある有名なパッケージの中身を眺めて勉強することになるでしょう。興味の湧いた方がいらしたら,互いに頑張りましょう。Contents深淵への誘い「自分専用パッケージ」の完成度向上を目指したり,好みの組版結果を追求したりしているうちに,楽しくなってきます。.texファイル作成の手間が少なく済むようにマクロを工夫したり,保守性を高めたり,既存のパッケージにはないマクロを色々と組み込んだりしはじめます。実装しようとしてはエラー,検索,試行錯誤......を繰り返すうちに,少しずつ理解できる部分が増えてゆきます。なると,私にとっては講義資料を作るための作業であったはずの「自分専用パッケージ」が,趣味の様相を呈してきます。組版結果はもちろん,内部の書き方にもこだわりはじめます。誰か一人でも役に立てば,という気持ちが湧きはじめ,「自分専用パッケージ」だったもの(jphsmathパッケージ)を公開してしまうようになります。おいてよく使いそうな体裁をまとめたものです。もとが「自分専用パッケージ」ですから,依存しているスタイルファイルが極めて多く,褒められたものではありませんが,高校数学の講義資料をLaTeXで作る仲間を増やしたい気持ちで公開しています。現在はまだ程度の低いものですが,少しずつ改善してゆきたいと考えています。最終的にどの点に着地するかは人それぞれですが,兎も角お手軽「自分専用パッケージ」を利用して,快適なLaTeXライフをお過ごしください。2017に参加してみようという好奇心によって書きあげました。「とっておき」という言葉の意味については考えないこととします。重点テーマは「TeXでつくるアレ」ですが,「TeXでつくるアレな完成度のパッケージ(ただし,自分使いならこれくらいでもいいのではないか)」で回収とさせてください。主宰のzr_tex8r氏に深く感謝申しあげます。公開されている多数の記事に(許可も得ず)リンクをしています。有益な記事を公開なさっているみなさまに,厚くお礼申しあげます。本稿をお読みいただきましたみなさま,誠にありがとうございました。2017-12-09)投稿ののち,いくつかの大変有益なコメントを頂戴いたしました。具体的にはワトソン(@wtsnjp)氏のツイートワトソン氏「パッケージ制作のすゝめ」hohei(@hohei3108)氏のツイート(1)hohei(@hohei3108)氏のツイート(2)などをご参照ください。これらをもとに,自作パッケージを改めて作り直してみようと考えています。基本的な表記の体裁に関する部分とemathに依存した図形描画の部分を分割する。依存パッケージが多い部分を切り離し,読み込むか否かを選択可能にする。体裁が異なるごとに新たな名称のマクロを用意していたが,代わりにスイッチで切り替える方式を導入する。バージョン管理について学んだうえで,適切な方式を選択する。2018-06-18)2018-/02-26版より,パッケージの分割とスイッチによる切り替えを試みています。imaginarywisdom.net。