答え1
以下は表の部分的な再構成です。
\documentclass{article}
\usepackage{amsmath}
\usepackage{array}
\usepackage{booktabs}
\usepackage{fullpage}
\usepackage{graphicx}
\usepackage{threeparttable}
\usepackage{wasysym}
\begin{document}
\begin{table}
\footnotesize
\newcommand*\rot[1]{\hbox to1em{\hss\rotatebox[origin=br]{-60}{#1}}}
\newcommand*\feature[1]{\ifcase#1 -\or\LEFTcircle\or\CIRCLE\fi}
\newcommand*\f[3]{\feature#1&\feature#2&\feature#3}
\makeatletter
\newcommand*\ex[9]{#1\tnote{#2}&%
\f#4&\f#5&\f#6&\f#7&\f#8&\f#9&\expandafter\f\@firstofone
}
\makeatother
\newcolumntype{G}{c@{}c@{}c}
\begin{threeparttable}
\caption{Table caption here}
\label{tab:features}
\begin{tabular}{@{}lc GG !{\kern1em} GGG !{\kern1em} GG@{}}
\toprule
Scheme & Example & \multicolumn{6}{c}{Security Features} & \multicolumn{9}{c}{Usability} & \multicolumn{6}{c}{Adoption}\\
\midrule
% rotated items
&& \rot{Network MitM Prevented}
& \rot{Operator MitM Prevented}
& \rot{Operator MitM Detected}
%
& \rot{Operator Accountability}
& \rot{Key Revocation Possible}
& \rot{Privacy Preserving}
%
& \rot{Automatic Key Initialization}
& \rot{Low Key Maintenance}
& \rot{Easy Key Discovery}
%
& \rot{Easy Key Recover}
& \rot{In-Band}
& \rot{No Shared Secrets}
%
& \rot{Alert-less Key Renewal}
& \rot{Immediate Enrollment}
& \rot{Inattentive User Resistant}
%
& \rot{Multiple Key Support}
& \rot{No Service Provider}
& \rot{No Auditing Required}
%
& \rot{No Name Squatting}
& \rot{Asynchronous}
& \rot{Scalable}\\
\midrule
\ex{Opportunistic Encryption}{\dag*}{TCPCrypt} {000}{002} {222}{222}{222} {222}{222}\\
\ex{+TOFU (Strict)}{\dag}{-} {111}{102} {222}{022}{022} {022}{222}\\
\ex{+TOFU}{\dag*}{TextSecure} {111}{102} {222}{222}{020} {022}{222}\\
\midrule
\ex{Key Fringerprint Verification}{\dag*}{Threema} {222}{212} {000}{002}{000} {022}{222}\\
\ex{+Short Auth Strings (Out-of-Band}{\dag*}{SilentText} {222}{212} {000}{002}{000} {002}{202}\\
\ex{+Short Auth Strings (In-Band/Voice/Video}{\dag*}{ZRTP}{222}{212} {000}{012}{000} {022}{202}\\
\ex{+Socialist Millionaire (SMP)}{\dag*}{OTR} {222}{212} {000}{020}{000} {022}{202}\\
\ex{+Mandatory Verification}{\dag*}{SafeSlinger} {222}{212} {000}{020}{022} {022}{202}\\
\bottomrule
\end{tabular}
\begin{tablenotes}
\item \hfil$\feature2=\text{provides property}$; $\feature1=\text{partially provides property}$;
$\text{\feature0}=\text{does not provide property}$;
\item \hfil\textsuperscript{\dag}has academic publication;
\textsuperscript{*}end-user tool available
\end{tablenotes} \end{threeparttable}
\end{table}
See~\ref{tab:features}.
\end{document}
いくつかのコメント。
\rot
斜めのラベルの回転を処理するように定義しました。これは、ラベルを右下隅を軸に -60 度回転するために使用されます。これは、左側が無限に収縮する幅広の の\rotatebox[origin=br]{-60}
内側に配置され、ラベルがボックスの左側からはみ出します。\hbox
1em
- パッケージから
\LEFTcircle
and を何度も入力したくなかったので、単一の引数 (この場合は 0、1、または 2) を受け取り、適切なシンボルを生成する which を定義しました。 (脚注に基づくと、代わりにそれを呼び出すべきだったかもしれません。)\CIRCLE
wasysym
\feature
\property
- 表の主要部分は 3 つのグループにグループ化されており、そのグループ自体が 2 つまたは 3 つの 3 つのグループにグループ化されています。
array
パッケージを使用して、列間のスペースのない中央揃えの 3 つの列に対応する新しい列タイプG
(グループ用) を作成しました。また、3 つの数字を受け取り、グループの 3 つの機能 (プロパティ) を生成する も定義しました。(おそらく、機能用ではなくグループを使用する方\f
がよいでしょう。)\g
\f
- グループのグループ間に余分なスペースを確保するために、
array
指定子を使用してそれらの列の間に!
余分なスペースを挿入しました\kern1em
。 - 各行は論理的に 10 個の部分、つまりスキーム、表の注記記号、例、および 3 つのグループ 7 つから構成されます。TeX は最大 9 個の引数を持つマクロのみをサポートしているため、
\ex
9 個の引数を取る (これは例を表すはずでしたが、よく考えてみると、スキームに関連したもののほうがよかったでしょう)を作成しました。最初の 3 つは、スキーム、マーク、および例に対応します。残りの 6 つは、 に渡される 3 桁の数字を想定しています\f
。最後に、10 番目の中括弧グループは を使用して中括弧を解除し\@firstofone
、 に渡されます\f
。これは一種のハックであることは認めますが、使用が\ex
簡単になります。 threeparttable
キャプション、表、およびその下の表注釈で構成されます。- 表形式自体は非常に簡単です。 、、 を使用して水平
booktabs
線をタイプセットしました。 (これは よりもずっと見栄えが良いです。)\toprule
\midrule
\bottomrule
\hline
- あなたの例では、表の注釈が中央に配置されています。ここでそれを実現するには、少し作業する必要がありました。特に、いくつかの
\hfil
s を追加しました。注釈を中央に配置しない方が見栄えが良いと思います。 Scheme
あなたの例では、何らかの理由でわずかにインデントされています。その意味がわからなかったので、実行しませんでした。\quad
(または他の水平方向の間隔指定コマンド) を追加すると、再現する可能性があります。- 私がこの表を作成する場合、「例」列を左揃えでタイプセットします。また、
-
その列の を に置き換えるNone
か、空白のままにしておくかもしれません。また、メインの列の を en ダッシュに置き換えるでしょう。その方が見栄えが良いと思うからです。便利なことに、表の注釈を含むすべての場所で を に置き換えるだけで-
変更できます。-
--
\feature
いくつかのメタコメント。
- 個々のシンボルを見つけるには、
symbols-a4
ドキュメント ( を実行texdoc symbols-a4
) を参照する必要があります。 - 一般的に言えば、TeX SX に特定の画像を再現するように要求しても、あまりうまくいきません。(私は、
threeparttable
これまで使用したことのないものについて知りたいと思ったので、試してみました。) 試したことを示した最小限の例を投稿し、行き詰まっている特定の要素について質問するのが最も効果的です。たとえば、「表のセル内のテキストを回転させるにはどうすればよいですか?」