
답변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
기울어진 라벨의 회전을 처리하도록 정의했습니다 .\rotatebox[origin=br]{-60}
오른쪽 하단 모서리를 기준으로 라벨을 -60도 회전하는 데 사용됩니다 . 라벨이 상자 왼쪽 밖으로 튀어나오도록 왼쪽에 무한 수축성을 갖춘 넓은\hbox
내부 에 배치됩니다 .1em
- 나는 패키지 에서
\LEFTcircle
및 를 반복해서 입력하고 싶지 않았기 때문에 단일 인수(이 경우 0, 1 또는 2)를 취하고 적절한 기호를 생성하는 것을 정의했습니다. (각주에 따르면 아마도 그것을 대신 불렀어야했을 것입니다.)\CIRCLE
wasysym
\feature
\property
- 테이블의 주요 부분은 3개의 그룹으로 그룹화되고 그 자체는 3개씩 2개 또는 3개의 그룹으로 그룹화됩니다. 패키지를 사용하여 열 사이에 공간이 없는 3개의 중앙 열에 해당하는
array
새로운 열 유형(그룹용)을 만들었습니다G
. 나는 또한\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
를 추가했습니다. 노트를 중앙에 두지 않는 것이 더 좋을 것 같습니다. Scheme
귀하의 예에서 어떤 이유로 든 약간 들여 쓰기되었습니다. 저는 그 말의 의미를 이해하지 못했기 때문에 그렇게 하지 않았습니다. 추가\quad
(또는 다른 수평 간격 명령)를 사용하면 이를 재현할 수 있습니다.- 이 테이블을 생성하는 경우 "예제" 열을 왼쪽 정렬로 조판합니다.
-
해당 열의 을 로 바꾸None
거나 그냥 비워 둘 수도 있습니다. 아마도-
메인 열의 를 엔 대시(en dash)로 바꿀 수도 있습니다 . 그냥 그게 더 나은 것 같아요. 편리하게도 테이블 노트를 포함하여 모든 곳에서 변경하려면 in-
으로 만 교체하면 됩니다 .--
\feature
일부 메타코멘트.
- 개별 기호를 찾으려면 문서를 살펴봐야 합니다
symbols-a4
(실행texdoc symbols-a4
). - 일반적으로 TeX SX에 특정 이미지를 재현하도록 요청하는 것은 잘 작동하지 않습니다. (저는 이전에 사용해 본 적이 없는 것에 대해 알고 싶어서 직접
threeparttable
시도해 보았습니다.) 시도한 내용을 보여주고 막힌 특정 요소에 대해 묻는 최소한의 예를 게시하는 것이 가장 효과적입니다. 예: "표 셀의 텍스트를 어떻게 회전하나요?"