2017年6月21日水曜日

tikzで行列の積を表現してみる

行列の積の成分計算を表す図をtikzで作成してみました。元ネタは佐武線形代数です。
画像は次の通り。
LaTeXのコードは次のようになりました。
行列の外の括弧を表現するのにdecorations.pathreplacingライブラリを,
行列を上部で揃えるのにpositioningライブラリを使っています.
色付けはbackgroundsライブラリを使い,scope環境にon background layerオプションを付けて文字の背後に色を付けるようにしました.

\documentclass[a4paper,dvipdfmx,uplatex]{jsarticle}

\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{decorations.pathreplacing}
\usetikzlibrary{matrix,backgrounds,fit,positioning}

\begin{document}
\begin{equation*}
\begin{tikzpicture}[every left delimiter/.style={xshift=1ex},every right delimiter/.style={xshift=-1ex}]
%
\matrix(A)[matrix of math nodes,nodes in empty cells,
 ampersand replacement=\&,
 left delimiter={[},right delimiter={]},
 inner sep=0.8ex,
 ]
 {
 \phantom{b_{11}}\&\hphantom{\dotsb}\&\phantom{\dotsb}\&a_{1j}\&\phantom{b_{1n}}\\
 \phantom{a_{11}}\&\&\&a_{2j}\&\phantom{a_{1n}}\\
 \phantom{\mathstrut}\&\&\&\phantom{\mathstrut}\&\\
 \phantom{\mathstrut}\&\&\&\phantom{\mathstrut}\&\\ 
 \phantom{a_{11}}\&\&\&a_{mj}\&\phantom{a_{1n}}\\
 };
 \draw[line width=1pt,line cap=round,dash pattern=on 0pt off 4\pgflinewidth](A-3-4.north)--(A-4-4.south);
 \draw[decorate,decoration={brace,amplitude=5}]
($(A-1-1.north west)+(-0.5ex,1.5ex)$)--($(A-1-5.north east)+(0.5ex,1.5ex)$)
 node[midway,yshift=2.5ex]{$n$};
 \draw[decorate,decoration={brace,mirror,amplitude=5}]
($(A-1-1.north west)+(-1.8ex,0.2ex)$)--($(A-5-1.south west)+(-1.8ex,-0.2ex)$)
 node[midway,xshift=-2.5ex]{$m$};
 \begin{scope}[on background layer]
 \fill[gray!40,rounded corners](A-1-4.north west) rectangle (A-5-4.south east);
 \end{scope} 

 \matrix(B)[matrix of math nodes,nodes in empty cells,
 ampersand replacement=\&,left delimiter={[},right delimiter={]},inner sep=0.8ex,
 left=0.8cm of A.north west,
 anchor=north east]
 {
 \phantom{b_{11}}\&\&\&\&\phantom{b_{11}}\\
 b_{h1}\&b_{h2}\&\vphantom{b_{h1}}\phantom{\dotsb}\&\phantom{\dotsb}\vphantom{b_{h1}}\&b_{h m}\\
 \phantom{b_{11}}\&\&\&\&\\
 \phantom{b_{11}}\&\&\&\&\\
 };
 \node[inner sep=0pt,fit=(B-2-3)(B-2-4)](fit1){};
 \node[baseline=(fit1.base)]at (fit1){$\dotsb\dotsb$};
 \draw[decorate,decoration={brace,amplitude=5}]
($(B-1-1.north west)+(-0.5ex,1.5ex)$)--($(B-1-5.north east)+(0.5ex,1.5ex)$)
 node[midway,yshift=2.5ex]{$m$};
 \draw[decorate,decoration={brace,mirror,amplitude=5}]
($(B-1-1.north west)+(-1.8ex,0.2ex)$)--($(B-4-1.south west)+(-1.8ex,-0.2ex)$)
 node[midway,xshift=-2.5ex]{$l$};
 \begin{scope}[on background layer]
 \fill[gray!40,rounded corners](B-2-1.south west) rectangle (B-2-5.north east);
 \end{scope} 

\matrix(BA)[matrix of math nodes,nodes in empty cells,
 ampersand replacement=\&,
 left delimiter={[},right delimiter={]},
 inner sep=0.8ex,
right=1.4cm of A.north east,
anchor=north west
]
 {
 \phantom{b_{11}}\&\phantom{\dotsb}\&\phantom{\dotsb}\&\phantom{b_{hj}}\&\phantom{b_{11}}\\
 \phantom{c_{11}}\&\phantom{c_{11}}\&\&\node[fill=gray!40,rounded corners]{c _{hj}};\&\phantom{c_{11}}\\
 \phantom{b_{11}}\&\&\&\phantom{c_{11}}\&\\
 \phantom{b_{11}}\&\&\&\phantom{b_{11}}\&\phantom{b_{11}}\\
 };
 \draw[decorate,decoration={brace,amplitude=5}]
($(BA-1-1.north west)+(-0.5ex,1.5ex)$)--($(BA-1-5.north east)+(0.5ex,1.5ex)$)
 node[midway,yshift=2.5ex]{$n$};
 \draw[decorate,decoration={brace,mirror,amplitude=5}]
($(BA-1-1.north west)+(-1.8ex,0.2ex)$)--($(BA-4-1.south west)+(-1.8ex,-0.2ex)$)
 node[midway,xshift=-2.5ex]{$l$};
\begin{scope}[on background layer]
 \draw[line width=1pt,line cap=round,dash pattern=on 0 pt off 4\pgflinewidth]
(BA-1-4.north)--(BA-4-4.south) (BA-2-1.west)--(BA-2-5.east);
\end{scope}
\node at($(A.east)+(10pt,15pt)$){$=$};
\node[below=0.5cm of A](A2){$A$};
\node(B2)at(B |- A2){$B$};
\node(BA2)at(BA |- A2){$BA$};
\draw[line width=1pt,line cap=round,dash pattern=on 0 pt off 4\pgflinewidth](B)--(B2) (A)--(A2) (BA)--(BA2);
\end{tikzpicture}
\end{equation*}
\end{document}

2017年5月23日火曜日

latexの箇条書きに全角文字を使う2

enumitem.styのenumerate環境については,こちらで箇条書きの番号に全角文字を使うことが可能になりました.

今度は箇条書きを横に並べる場合に同様のことができないか模索してみます.
今回はtasks.styとこのパッケージが依存しているcntformats.styを利用してみました.
この2つのパッケージは同じ作者によるものです.
ソースは次の通りです.

\documentclass[lualatex,a4paper,10pt,ja=standard]{bxjsarticle}


\makeatletter
\def\@kkana#1{%
  \ifcase#1\or ア\or イ\or ウ\or エ\or オ\or カ\or キ\or ク\or ケ\or コ\or
  サ\or シ\or ス\or セ\or ソ\or タ\or チ\or ツ\or テ\or ト\or
  ナ\or ニ\or ヌ\or ネ\or ノ\or ハ\or ヒ\or フ\or ヘ\or ホ\else\@ctrerr\fi}
\makeatother


\usepackage{tasks} %箇条書きを横に並べる
\makeatletter
\NewPatternFormat{kk}{\@kkana}
\makeatother
\NewTasks[counter-format=tsk[kk]]{mytasks}[\item](1)


\begin{document}

\begin{mytasks}(3)
\item first
\item second
\item third
\item forth
\item fifth
\end{mytasks}

\end{document}

こちらをタイプセットしたのが次の画像です.
\NewTasks[option]{コマンド名}{separator}(標準の列数)はtasks.styで定義されているコマンドで,新しいtask環境を作ります.conter-format={counter specs}の部分で箇条書きのラベルを変更します.tskの文字列でtask-counterを置換するのですが,tskのオプション引数に入る文字としては,1, a, A, r, Rが用意されています.ここで1は\arabic, aは\alph, Aは\Alph, rは\roman, Rは\Romanを表しています.今回はこれら以外のカウンタ形式を用意するために,cntformats.styで定義されている\NewPatternFormat{pattern}{format}というコマンドを使っています.ここではkkという文字列で\@kkanaというフォーマットを表すように定義してあり,これをtskのオプション引数に入れることでtask環境のラベルを全角文字にしています.

counter-formatの定義で,tsk[kk]を全角丸括弧でくくってみて
\NewTasks[counter-format=(tsk[kk])]{mytasks}[\item](1)
とすると,次の画像のように

となり,ラベル位置が派手にズレてしまい上手くいきませんでした.
この方法では括弧やコンマなどをカウンタの前後に入れようとすると表示が崩れてしまいます.回避策を現在模索中です.

latexの箇条書き番号に全角文字を使う

latexのenumerate環境などの番号は通常数字やアルファベットしか使えないので,次のページ

を参考に,番号に全角文字(ア,イ,ウ,…など)が使えるようにしてみました.

enumerate環境については,最近ではenumitemパッケージの仕様が推奨されているようなので,このパッケージを利用してみます.

\documentclass[lualatex,a4paper,10pt,ja=standard]{bxjsarticle}

\makeatletter
\def\@iroha#1{%
  \ifcase#1\or い\or ろ\or は\or に\or ほ\or へ\or と\or ち\or り\or ぬ\or る\or を\or
  わ\or か\or よ\or た\or れ\or そ\or つ\or ね\or な\or ら\or む\or
  う\or ゐ\or の\or お\or く\or や\or ま\or け\or ふ\or こ\or え\or て\or 
  あ\or さ\or き\or ゆ\or め\or み\or し\or ゑ\or ひ\or も\or せ\or す\else\@ctrerr\fi}
\def\@kkana#1{%
  \ifcase#1\or ア\or イ\or ウ\or エ\or オ\or カ\or キ\or ク\or ケ\or コ\or
  サ\or シ\or ス\or セ\or ソ\or タ\or チ\or ツ\or テ\or ト\or
  ナ\or ニ\or ヌ\or ネ\or ノ\or ハ\or ヒ\or フ\or ヘ\or ホ\else\@ctrerr\fi}
\def\@hkana#1{%
  \ifcase#1\or あ\or い\or う\or え\or お\or か\or き\or く\or け\or こ\or 
  さ\or し\or す\or せ\or そ\or た\or ち\or つ\or て\or と\or 
  な\or に\or ぬ\or ね\or の\or は\or ひ\or ふ\or へ\or ほ\else\@ctrerr\fi}
\makeatother
 
\usepackage[shortlabels]{enumitem} %enumerate環境
\AddEnumerateCounter{\kkana}{\@kkana}{ア}
\SetEnumerateShortLabel{kk}{(\kkana*)}

\begin{document}

\begin{enumerate}[kk]
 \item first
 \item second
 \item third
 \item forth
 \item fifth
\end{enumerate}

\end{document}

このソースをタイプセットしてみると次のようになります.
詳しくはenumitem.styのマニュアルを参照して頂きたいのですが,\AddEnumerateCounter{コマンド名}{code}{最大幅のラベル}というコマンドでenumitemの新しいカウンターの表現を定義します.enumitemではenumerate環境ごとに番号ラベルの詳細をオプション引数にlabel=の形で記述できますが,毎回設定するのは面倒なので,\SetEnumerateShortLabel{key}{replacement}でkey部分をreplacement部分で置換できるようにします.ここではkkをオプション引数に入れておけば,これを(\kkana*)に置換するという意味です.\kkanaは上で定義したカウンターで,*はカウンターの番号で置き換えられていきます.

2017年4月23日日曜日

Paper Lions "My Number"

素性を全く知らないのですが,YouTubeでは800万回再生されているMVもあれば,現時点で最新のこの曲のMVの再生回数は3400回弱だったり,有名なのかそうでもないのかよくわかりません.

取り敢えず,"My Number"のMVを貼り付けておきます.


80年代的な雰囲気を持っていてかなり好きです.多分youtubeの再生回数のうち50回くらいは私が再生したものだと思います.

この曲をきっかけに「Full Color」「My Friends」「Trophies」というアルバムを買ってみました.「Full Color」「My Friends」は収録曲の質がいずれも高く,気に入っています."My Number"は「Full Color」収録曲です.同アルバムに収録されている"Believer"のMVも貼り付けておきます.

こちらは再生回数が45,000回を超えており,認知度はあるようです.

最後に,再生回数が一番多い"Travelling"のMVを貼り付けておきます.

何故これだけ飛び抜けて多いのだろう.

2017年2月3日金曜日

Bxjsclsでの数式中のテキスト行間

普段数学のノートを書くためのLaTeXのクラスファイルとしてbxjsbookを利用しています.別行立ての数式中にテキストを記述するコマンドとして\intertextがありますが,この命令で囲った部分が複数行にわたる場合,本文中とは異なることが気になっていました.


上の画像の四角く囲った部分だけ他のテキストよりも行間が狭まっています.

Bxjsclsのマニュアルを見ると,数式に入るところで\narrowbaselines というコマンドが実行され,欧文用に行間を狭くしているようなので,これが原因のようです.そこで
\intertext{hogehoge}
と記述していた部分に,行間を広げる命令っぽい\widebaselines を入れて
\intertext{\widebaselines%
hogehoge}
のように記述を変えてみました.すると次のように行間が本文のものと同じになりました.
これはこういう仕様なのでしょうか.

2017年1月31日火曜日

Dakota "Leda"

最近Algernon Cadwalladerなどの90's emo revival系の存在を知り,調べているとNiche Musicというサイトで同系列のバンドが紹介されていること,音源がCDで出回っておらず,bandcampなどのサイトでデジタル音源のみが入手可能な場合が多いことを知りました.

古い人間なので物理媒体が欲しいのですが,デジタル音源のみなら仕方ないかと,bandcampに登録して幾つか音源を買い始めています.

表題のDakotaはオランダ/アムステルダムの女性4人組バンドで上記のNiche Musicの紹介記事で知り気に入りました.bandcampでは直近の作品「Leda」についてはCDも購入できるようなので買ってみたのですが,それが本日到着しました.音自体はCDを購入するとデジタル音源が直ぐにダウンロード可能になるので,待ちくたびれることもなく便利です.


手書きのメッセージとステッカーもついてました.こういうのちょっと嬉しいですね.
このEPからの曲を貼り付けておきます.


どの曲もクォリティが高くおすすめです.

2016年11月30日水曜日

Polyvinyl plays Polyvinylが面白い

Polyvinyl recordsが創業20周年を記念して,Polyvinyl records所属のアーティストがPolyvinyl records所属アーティストの楽曲をカバーするアルバム「Polyvinyl plays Polyvinyl」が発売されています.購入はアナログ盤かmp3しかないみたいです.mp3を購入しましたが,CDが欲しいな.

soundcloudのページで全曲試聴が可能です.
特にGenerationals (feat. Sarah Quintana)がカバーしているIn Volcano, I'm Still Excited!!の楽曲"In Green"が原曲の原型を留めていないにも関わらず,全く新しい名曲に仕上がっており,衝撃的です.以下に貼り付けておきます.



原曲はこちらです.

同じ曲と認識できる人いるのでしょうか.

他にもAlohaがカバーしているBeach Slangの"Too Late To Die Young"も良いです.


原曲はこちら


さらに20周年企画として,こちらのサイトからPolyvinyl records 20th Anniversary Samplerが無料でダウンロードできるようになっていました.44曲入りです.