이와 같은 간단한 비교표를 만드는 방법은 무엇입니까?

이와 같은 간단한 비교표를 만드는 방법은 무엇입니까?

이런 비교표는 어떻게 만드나요?

여기에 이미지 설명을 입력하세요

특히 공간을 절약하는 기울어진 라벨과 원/반만 채워진 원이 있습니다. 이런 종류의 테이블은 상당히 흔해 보입니다. --- 이와 같은 테이블을 생성하기 위한 특별한 패키지가 있습니까?

그리고 이미 똑같은 종류의 테이블에 대한 질문이 있는 것 같은데, 안타깝게도 제목이 이렇게 모호해서 찾을 수 없었습니다.

답변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}&#3&%
    \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}

여기에 이미지 설명을 입력하세요

일부 의견.

  1. \rot기울어진 라벨의 회전을 처리하도록 정의했습니다 . \rotatebox[origin=br]{-60}오른쪽 하단 모서리를 기준으로 라벨을 -60도 회전하는 데 사용됩니다 . 라벨이 상자 왼쪽 밖으로 튀어나오도록 왼쪽에 무한 수축성을 갖춘 넓은 \hbox내부 에 배치됩니다 .1em
  2. 나는 패키지 에서 \LEFTcircle및 를 반복해서 입력하고 싶지 않았기 때문에 단일 인수(이 경우 0, 1 또는 2)를 취하고 적절한 기호를 생성하는 것을 정의했습니다. (각주에 따르면 아마도 그것을 대신 불렀어야했을 것입니다.)\CIRCLEwasysym\feature\property
  3. 테이블의 주요 부분은 3개의 그룹으로 그룹화되고 그 자체는 3개씩 2개 또는 3개의 그룹으로 그룹화됩니다. 패키지를 사용하여 열 사이에 공간이 없는 3개의 중앙 열에 해당하는 array새로운 열 유형(그룹용)을 만들었습니다 G. 나는 또한 \f세 자리 숫자를 사용하여 그룹에 대한 세 가지 기능(속성)을 생성하는 것을 정의했습니다. (아마도 기능 \g보다는 그룹을 고수 해야 했을 것입니다 .)\f
  4. 그룹 그룹 사이에 추가 공간을 확보하기 위해 지정자를 사용하여 array해당 열 사이에 !추가 공간을 삽입했습니다 \kern1em.
  5. 각 행은 논리적으로 10개의 부분으로 구성됩니다: 구성표, 표 참고 기호, 예제 및 3개의 7개 그룹. TeX는 최대 9개의 인수가 있는 매크로만 지원하므로 제가 만들 때 \ex(예를 들어 설명했지만 반영) , 계획과 관련된 것이 더 좋았을 것입니다) 9개의 인수를 사용합니다. 처음 3개는 구성표, 표시 및 예시에 해당합니다. 나머지 6개는 3자리 숫자가 에 전달될 것으로 예상합니다 \f. 마지막으로 10번째 중괄호 그룹은 을 사용하여 중괄호를 \@firstofone해제한 다음 에 전달됩니다 \f. 나는 그것이 일종의 해킹이라는 것을 인정하지만 사용을 \ex더 쉽게 만듭니다.
  6. threeparttable캡션, 표, 아래 표로 구성됩니다.
  7. 표 형식 자체는 매우 간단합니다. 나는 수평 규칙을 조판하기 위해 ' , , 및 booktabs'를 사용했습니다. (이것이 에 비해 훨씬 좋아 보입니다 .)\toprule\midrule\bottomrule\hline
  8. 테이블 메모는 예제의 중앙에 있습니다. 여기까지 오려면 조금 노력해야 했어요. 특히 몇 가지 \hfil를 추가했습니다. 노트를 중앙에 두지 않는 것이 더 좋을 것 같습니다.
  9. Scheme귀하의 예에서 어떤 이유로 든 약간 들여 쓰기되었습니다. 저는 그 말의 의미를 이해하지 못했기 때문에 그렇게 하지 않았습니다. 추가 \quad(또는 다른 수평 간격 명령)를 사용하면 이를 재현할 수 있습니다.
  10. 이 테이블을 생성하는 경우 "예제" 열을 왼쪽 정렬로 조판합니다. -해당 열의 을 로 바꾸 None거나 그냥 비워 둘 수도 있습니다. 아마도 -메인 열의 를 엔 대시(en dash)로 바꿀 수도 있습니다 . 그냥 그게 더 나은 것 같아요. 편리하게도 테이블 노트를 포함하여 모든 곳에서 변경하려면 in -으로 만 교체하면 됩니다 .--\feature

일부 메타코멘트.

  1. 개별 기호를 찾으려면 문서를 살펴봐야 합니다 symbols-a4(실행 texdoc symbols-a4).
  2. 일반적으로 TeX SX에 특정 이미지를 재현하도록 요청하는 것은 잘 작동하지 않습니다. (저는 이전에 사용해 본 적이 없는 것에 대해 알고 싶어서 직접 threeparttable시도해 보았습니다.) 시도한 내용을 보여주고 막힌 특정 요소에 대해 묻는 최소한의 예를 게시하는 것이 가장 효과적입니다. 예: "표 셀의 텍스트를 어떻게 회전하나요?"

관련 정보