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)
とすると,次の画像のように

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