時々必要になるが、その時には多分忘れているであろう知識を書き残しておく。自分が見て方針を思い出すためのメモなので基本的に解説はしないし、ここに書いてあるコードは厳密であるとは限らない。
目次
datatool に於いて指定した key に対応する value を得る
usepackage の罠
\usepackage{}
で指定するパッケージ名は datatool
である。ユーザ・ガイドには datatool-fp
や datatool-pgfmath
が紹介されているが、これは失敗する。
本題
対象となる CSV ファイルの内容:
header name, display number
機能概要, 1.1.1
‘header name’ が「機能概要」である行の列 ‘display number’ の値を \tempValue
に格納する例:
\DTLloaddb{example_db}{example_db.csv}
\DTLgetvalueforkey{\tempValue}{display number}{example_db}{header name}{機能概要}
result: \tempValue
ヘッダに含まれるスペースの罠
CSV のヘッダにスペースが含まれるとき、\DTLgetvalueforkey
に失敗する可能性が高い。失敗すると “Missing number, treated as zero.” というエラーが出る。\DTLgetvalueforkey
の引数で半角スペースを含むものを “” で囲むと “” まで含めてヘッダとして解釈されてしまう。結局、ヘッダに半角スペースを含めないのが無難である。
bytefield の使用例
キャプション,色付きビット・フィールド
上の例を生成したコードの主要な部分
\usepackage[x11names]{xcolor}
% bytefield hack
% 1. [Combining color, bitboxes* and base alignment](https://tex.stackexchange.com/questions/371175/combining-color-bitboxes-and-base-alignment)
% 2. [](https://www.latex4technics.com/?note=3c6du2)
\newcommand{\colorbitbox}[3]{%
\rlap{\bitbox{#2}{\color{#1}\rule{\width}{\height}}}%
\bitbox{#2}{#3}%
}
\begin{document}
\begin{table}[H]
\centering
\caption{\small データ構造}
\footnotesize
\begin{bytefield}[bitwidth=6em,bitheight=3ex]{8}
\bitheader[endianness=little]{0-7} \\
\wordbox{1}{A[7:0]} \\
\\
\bitheader[endianness=little,lsb=8]{8-15} \\
\wordbox{1}{A[15:8]} \\
\\
\bitheader[endianness=little,lsb=16]{16-23} \\
\wordbox{1}{B[7:0]} \\
\\
\bitheader[endianness=little,lsb=24]{24-31} \\
\wordbox{1}{B[15:8]} \\
\\
\bitheader[endianness=little,lsb=32]{32-39} \\
\bitbox{2}{B[17:16]} & \bitbox{3}{\escapeUnderscore{opt}} & \bitbox{1}{\escapeUnderscore{enable}} & \colorbitbox{Snow2}{2}{reserved (always 0)}
\end{bytefield}
\end{table}
\end{document}