2017年3月28日

ちょっと前につぶやいたけど暗殺教室122話読んでいたら(今更……)びっくりしたって話.舞台は期末テスト,A組一位浅野君とE組一位カルマ君の勝負の行方は,数学の最終問題に委ねられた.

右の図のように、1辺$a$の立方体が周期的に並び、その各頂点と中心に原子が位置する結晶構造を体心立法格子構造という。NaやKなど、アルカリ金属の多くは、体心立法格子構造をとる。体心立法格子構造において、ある原子$A_0$に着目したとき、空間内のすべての点のうち、他のどの原子よりも$A_0$に近い点の集合が作る領域を$D_0$とする。このとき、$D_0$の体積を求めよ。

浅野君は$D_0$の形を「支配」して体積を計算する方針.全てを支配しようとする彼にはうってつけの解法……が時間が足りずわずかに満点に及ばず.一方のカルマ君,テスト中なのに「才能」について考え出す.自分は才能があるとか言われたけど,他の人もみんなそれぞれの才能がある.とか考えているうちに一つのひらめきが.この問題だって同じ,自分だけじゃなくてみんな同じ才能=領域を持っている.自分を含む立方体を八分割すれば,各々の小さな立方体ではもう一人の相手(原子)と領域をわけあっていることになる.だから自分の領域は相手とのちょうど半分,答えは$a^3/2$!(カルマ君満点)

この回の感想(ストーリー)は「暗殺教室 122話」でググればいくらでもでてくるし,問題の解説はここが見やすかった.(というか問題文はこのページからコピペしました.)

何がびびったって,まず問題文がフルで出てきたとき.まぁでも「考えたい人は考えてね,難しそうでしょ」的なノリ(そして本編では解説なんてされない)かと思ったら解答が解説され始めた-!両方ともごまかさず解説されているし.(さすがに浅野君の細かい部分はなかったけど.)しかも両者の解答がこれまでのストーリーからの両者のキャラクターに強く関連していて,もう参りましたとしかいいようがない.どちらも普通にありそうな解答だしなぁ.

2017年3月24日

xrパッケージ

別のファイルからの引用ができるようになるパッケージです.たとえば全く関係のない(\input\includeがされているわけではない)article1.texとarticle2.texというファイルがあっても,article1.tex内の\labelをarticle2.tex内で\refすることができるようになります.

使い方

article1.texが

\documentclass{jlreq}
\begin{document}
\section{Introduction}\label{Introduction}
……
\end{document}
のようになっていたとします.この\label{Introduction}をarticle2.tex内で引用するには,次のようにします.

\documentclass{jlreq}
\usepackage{xr}
\externaldocument{article1}% article1内の\labelを取り込む
\begin{document}
article1の節\ref{Introduction}において……
\end{document}

LaTeXで処理する際には,まずarticle1.texを(十分な回数)コンパイルします.その後article2.texをコンパイルすると,引用がなされます.(article2.texのみでは駄目なことに注意.)

ただし,これだとarticle2.tex内にも\label{Introduction}があった場合はLabel `Introduction' multiply definedとなってしまいます.これを防ぐためにxrパッケージは接頭辞を付加する機能を持っています.たとえばarticle1.texからもってくる引用には1:をつけるならば

\documentclass{jlreq}
\usepackage{xr}
\externaldocument[1:]{article1}
\begin{document}
article1の節\ref{1:Introduction}において…… % Introductionの前に1:をつけて引用する
\end{document}
とします.

zref-xrパッケージ

シンプルには上のようにxrパッケージで良いのですが,これはhyperrefパッケージと使うといまいちです.hyperrefパッケージは引用先へのリンクを張りますが,上の状況でhyperrefパッケージを使ってもarticle1.tex内のIntroductionには飛んでくれません.(実際にやるととんちんかんなところへ飛んでしまいます.)また,article1でhyperrefを読み込んでいるけどarticle2では読み込んでいない,とするとバグります.これをどうにかしているxr-hyperというパッケージがありますが,更にそれがすごくなった(多分)zref-xrパッケージがあります.名前からわかるとおりzrefパッケージの一部(xrモジュール)です.

使い方はxrパッケージとよく似ています.

% article1.tex
\documentclass[dvipdfmx]{jlreq} % dvipdfmxはhyperrefのため
\usepackage{hyperref}
\begin{document}
\section{Introduction}\label{Introduction}
……
\end{document}
% article2.tex
\documentclass[dvipdfmx]{jlreq} % dvipdfmxはhyperrefのため
\usepackage{hyperref}
\usepackage{nameref} % これが\zexternaldocumentの前までに必要
\usepackage{zref-xr}
\zxrsetup{toltxlabel} % 通常のLaTeXスタイルの\refを使う(\zexternaldocumentより前におく)
\zexternaldocument*[1:]{article1} % \zのついたexternaldocumentを使う
\begin{document}
article1の節\ref{1:Introduction}において……
\end{document}

これでarticle2.pdfからarticle1.pdfに飛べるはずです.ちなみにarticle1.tex内のhyperrefの読み込みはなくても動きますが,このときはリンクがなくなります.つまり,リンクを機能させるには参照する方とされる方双方でhyperrefパッケージの読み込みが必要です.

リンク先の変更

リンク先として選ばれるファイルは,\zexternaldocumentで指定されたファイル名の拡張子を.pdfとしたものになります.これを変更するには,

\zexternaldocument*[1:]{article1}[article3.pdf]
とします.
相互参照システムについて

zrefパッケージは通常LaTeXとは独立した相互参照システムを持っていて,zref-xrパッケージでもデフォルトではその相互参照システムが使われます.これをやめてLaTeXの相互参照システム(つまり普通の\label\ref等による相互参照)を使うために,上では

  • \zexternaldocument*付きで呼び出すことで,参照される方(article1.tex内のラベル)で通常のシステムを使うことに
  • \zxrsetup{toltxlabel}により参照する方(article2.tex内)で通常のシステムを使うことに
しています.なお,デフォルト通りzrefの提供する相互参照システムを使うには,zref-userパッケージを読み込んだ上で\zlabel\zrefを使います.

% article1.tex
\documentclass{jlreq}
\usepackage{zref-user} % zref-userを読み込む
\begin{document}
\section{Introduction}\zlabel{Introduction} % labelの代わりにzlabelを使う
……
\end{document}
% article2.tex
\documentclass{jlreq}
\usepackage{zref-xr,zref-user}
\zexternaldocument[1:]{article1}
\begin{document}
article1の節\zref{1:Introduction}において…… % \zrefを使う
\end{document}

2017年3月23日

なんか変だなぁ.

\documentclass[book,oneside]{jlreq}
% 右上に見出し「\heading」の中身をだすページスタイルpagestyleを定義
\NewPageStyle{pagestyle}{odd_running_head=_heading,running_head_position=top-right}
% 扉見出し\headingを定義
\NewTobiraHeading{heading}{0}{}
\pagestyle{pagestyle}
\begin{document}
\heading{あいうえお} % 柱に「1 あいうえお」と入る(想定通り)
ああああ\clearpage
\heading*{かきくけこ} % 柱が「1 かきくけこ」になる(おかしい)
ああああ
\end{document}

2017年3月21日

jlreq.clsリリース.これで一段落だぜ→バグってる→リリース→やはりバグってるってのを三回くらい繰り返している.前回は横書きでのどを指定するとレイアウトが無茶苦茶になっていた.\textheight\textwidthを間違ったのだけど.それと縦横調整がいまいちだったのを直した.たとえば地を0にすると最終行の一番下がちょうど紙の端にこないとならないと思うのだけど,多分前回は最終行の真ん中あたりが紙の端に来てしまっていたと思う.そもそも横組みの場合は天の空きで調整すべきのようですが.

後はreference_mark=interlinearの時に注の周りの空白を調整した.この場合の合印は単に上や右においてあるだけで文章自身の組版には影響をあたえないと思っているのだけど(あってるかな?),前のだとA\footnote{注}なのでみたいな時にAとなの間に四分空きが入らなくなっていた.とりあえず\lastnodecharを使ったのだけど,単に北川君の書いていたやつをそのままなだけ.なので書いてある問題点がそのまま受け継がれます.たとえばあの\footnote{注}\'etale cohomologyとかだと空白が入らない.何も入らないよりまし程度な気分なので,駄目ならば適当に自力調整で…….

前に書いた実装していないやつはまだ大半が変わらず.見出しが縦組み偶数ページのページ末にきた場合の処理はやった,だけか.そのとき書かなかったけど,\normalsize以外のフォントサイズ変更命令でどういうサイズになるかも指定出来た方がよさそう.JLReqには4.1.3 注(1)に参考としてJIS X 4051のが紹介されている.後は文書途中での版面の変更.目次部分とかで必要になるはず.同行見出しももう少し強化した方がよいかも.\@startsectionを使う形にしているんだけど,自力で書いちゃった方が融通が利くかなぁ.

2017年3月17日

基本版面の設計にはフォントをどうするかというのも入ってくるのだけど,jlreq.clsではフォントの指定はできない.理由は単純で,やはりdviwareに依存してしまうから.といってもdvipdfmxに限定すればPXchfonがあるし,LuaTeX-jaならばfontspecがあるので,jlreq.clsでなくても指定する手段は存在する.

fontspecの方はきちんとJFMを指定しないと変わっちゃうので(気にする場合は)少し用心.横書きならばjlreq,縦書きならばjlreqvを指定すれば良い.luatexja-presetにはJFMを指定する機構がないのでそのままでは使えないのがちょっと残念.(jfm=オプションがあっても良い?)同じような話はOTFパッケージにもあって,こっちも読み込むとJFMが変わっちゃう.noreplaceオプションで変わらなくはできるけど.

2017年3月16日

昨日のは,$k = 0$の時は普通に一元生成な気がしてきた.

とか言っている間に三月が半分ほどなくなっている…….今日は法$p$の場合には放物型誘導が有限生成加群を有限生成加群には写すとは限らないことがわかった,気がする.

2017年3月14日

Bernsteinによれば,$p$進群の複素数体上の表現に対して,放物型誘導は有限生成であることを保つのだそうだ.というわけで,たとえば$G = \mathrm{GL}_n(F)$の極小放物型部分群$B = TU$および$T_n = (1 + \varpi^k\mathcal{O})^n\subset T$に対して,$\mathrm{Ind}_P^G(\text{c-Ind}_{T_k}^T1)$は有限生成ということになる.どんな生成元があるんだろう?