大きなアスタリスク* \bigast の作り方
数学記号や文字を,\bigplus や \sum と同じように使いたいときがある.
日本語で解説しているページが見つからなかったので,備忘録として残すことにした.
英語のページはこちら.
How to create my own math operator with limits? - TeX - LaTeX Stack Exchange
ソース
\usepackage{graphicx} \usepackage{calc} \newcommand{\bigast}{ \mathop{ \vphantom{\bigoplus} \mathchoice {\vcenter{\hbox{\resizebox{\widthof{$\displaystyle\bigoplus$}}{!}{$\ast$}}}} {\vcenter{\hbox{\resizebox{\widthof{$\bigoplus$}}{!}{$\ast$}}}} {\vcenter{\hbox{\resizebox{\widthof{$\scriptstyle\oplus$}}{!}{$\ast$}}}} {\vcenter{\hbox{\resizebox{\widthof{$\scriptscriptstyle\oplus$}}{!}{$\ast$}}}} }\displaylimits }
とやっとけば,\bigast で \ast が \bigoplus のように出力されます.
※私のPCだと,pdflatex だと上手くいかず dvi を経由しないといけないようです.
命令文の雑な解説
外側から順にいく.
\mathop{ }\displaylimits
余白調節系.{ }内を math operator として出すやつ.今回は \bigoplus と同じようなものを作りたいから,\mathop を使った.\otimes みたいなのを出すなら,\mathbin とかを使う.詳しくは
LaTeX 数式の縦/横の調整(Kodama's tips page)
を参照.後ろについている \displaylimits は添え字の付き方を指定している.他にも,\limits と \nolimits があるぞ!
(例えば,\sum と \int はディスプレイでの添え字の付き方が違う)
\vphantom{ }
余白調節系.{ }内の文字と同じ高さの空白を作る.幅は無視される.
\mathchoice{ }{ }{ }{ }
実のところ,これが面白くて今回記事を書いた.場所ごとに出力を指定できる.\mathchoice{ディスプレイ}{テキスト}{スクリプト}{スクリプトのスクリプト}
の順番なので,それぞれに \bigoplus と同じように \ast を出すように命令を書く.例えば,
\newcommand{\hoge}{\mathchoice{a}{b}{c}{d}}
とすれば,場所によって,\hoge でa,b,c,dがそれぞれ出力される.
\vcenter{\hbox{ }}
正直よくわかってない.\vcenterは{ }内の垂直方向の中心が中心になるように出力してくれる,が内側に \hbox を入れないと 水平方向の余白がおかしくなる.例えば,
$\vcenter{\hbox{$\frac{a}{\frac{b}{c}}$}}=\frac{a}{\frac{b}{c}}$
とやると伝わるはず.
\resizebox{ }{ }{ }
graphicx.sty を使用.大きさを変える. \resizebox{幅}{高さ}{出力したいもの} の順.幅もしくは高さを指定したくないとき(片方決まれば残りも決まる)は ! を指定する.
\widthof{ }
calc.sty を使用.{ }内の幅.calc.styを使いたくない場合は,直接○○ptとかcmとかやれば良さそう.
日本語で proof 環境を使うときのアレコレ
日本語でTeXを使うと,面倒なことが多々ある.
amsthm を使うと,proof 環境が使えるわけだけど,
\textit{Proof.} で表示される部分を,\textbf{(証明) }にしてえな
と思う人もいると思う.
\renewcommand{\proofname}{(証明)}
という命令で,
Proof.
が
(証明).
に置き換わる訳だけど,
イタリック体とピリオドが残ってしまう.
proof 環境のもう少し深く潜る必要がある訳だ.
一応,次のやつで解決した.
\usepackage{amsthm} \makeatletter \renewenvironment{proof}[1][\proofname]{\par \normalfont \topsep6\p@\@plus6\p@ \trivlist \item[\hskip\labelsep{\bfseries #1}\@addpunct{\bfseries}]\ignorespaces }{% \popQED\endtrivlist\@endpefalse } \renewcommand{\proofname}{(証明)} \makeatother
TeXの論文校正で color.sty を使うと,最後に消すのが面倒だ
タイトルの通りです.マクロが満たすべきは次の条件:
- 「置換」で消せる,色を変えられる
- 数式モードでも大丈夫
- 他の命令とケンカしない
いつも困ることは,最後の}を消すのが面倒なこと.
そこで,順番を逆にした.
\usepackage{color} \newcommand\mycolor[2]{\textcolor{#2}{#1}}
消すときは,
- \mycolor{
- }{red}
の2つを検索すればよいです.
itemize 環境における余白の調節
TeXで書類を書くとき,いつもスペースが足りなくて困ったりする.
申請者のための itemize 環境周辺のテンプレ
% \vspace{-0.5\baselineskip} %3. 上の余白 { \setlength{\leftmargini}{27pt} %1. 左の余白 \begin{itemize} \setlength{\itemsep}{5pt} %2. ブロック間の余白 \setlength{\parskip}{0pt} %4. 段落間余白. \setlength{\itemindent}{0pt} %5. 最初のインデント \setlength{\labelsep}{5pt} %6. item と文字の間 \item[hogehoge] \item \end{itemize} } % \vspace{-0.5\baselineskip} %3. 下の余白
いい加減な説明をいくつか書く.
(※ 単位を pt でやってるけど,もっと適切なのがあるかも.)
\item で生成される item に続く文章を「ブロック」と呼ぶことにする.
- \leftmargini で「左余白」を調節する.
- マイナス値も可能.
- この値でブロック丸ごと動くため,まずこれを設定する.左余白を節約できるので重宝する.
- { } で囲むことで,\leftmargini の影響を{ }の中だけにするため.各 itemize ごとに余白を調節することが出来る.
- \itemsep をいじると「ブロック間の余白」が動く.
- 上下のスペース確保に使う.
- ブロック間の余白 = \itemsep + \parskip ?.
- 最初と最後の \vspace で 「itemize の上下の余白」を調節する.
- マイナス値で余白を節約できる.
- \parskip をいじると,「ブロック内での段落間の余白」が変わる.
- 上に書いたように「ブロック間の余白」にも影響が出る.使ったことなし.
- \itemindent を大きくすると,各ブロックの最初の indent が変わる.
- 大きくすれば,文字が右に移動し,item は文字に付いていく.
- item が大きくてはみ出すときに使うかもしれない.
- item は右寄せなので,大きな item と小さな item があるときは注意.
- \labelskip をいじると,各ブロックの最初の「item と 文字の間の余白」が変わる.ここを大きくすると item が(!)左に動く.
とりあえずこれで自分は不便はしてない.1~4の調整で普通は事足りるのではないだろうか.
余談ですが,itemize 環境では \item[hogehoge] とすると,hogehoge を item に出来ますね.
WinShell の初期設定と inverse search のメモ
エディタは WinShell が好きなのだけれど,日本語の文字化けとかが
いろいろと面倒で,パソコンを変える度に一苦労するので記事にしておく.
ちなみに,WinShell は現在非推奨らしいです.
日本語を使うときは,UTF-8は文字化けするので,Shift-JIS を使う.
pdflatex を実行して,ランタイムエラー?が起きるときは,dvipdfmx を使うとよい.
つまり,tex -> dvi -> pdf という伝統(?)の2ステップコンパイルにする.
pdflatex
exeファイル C:\w32tex\bin\dvipdfmx.exe (もちろん人による)
コマンドライン "%s.dvi"
ビュアーは SumatraPDF が良い.
開いたままでも上書きできるし,ダブルクリックするとソースファイルに飛べる(inverse search)
SumatraPDF は賢いので勝手に逆順検索の設定をしてくれるが,ダブルクリックしても
ソースに飛べないことがある.
四苦八苦したところ,synctex ファイルがないのが問題ということが判明した.
synctex ファイルは,大雑把にいうと,pdf ファイルと tex ファイルを繋ぐ橋のようなもので,
作成するには,コマンドラインをいじればよい.
今回は,pdflatex のパートでは,dvi -> pdf を行っているので,latex のパートで
synctex ファイルを作ってもらうことにした.
コマンドライン -src-specials -interaction=nonstopmode -synctex=-1 "%s.tex"
(そのうちもう少し校正するかも)