저런 테이블을 만들고 싶다

저런 테이블을 만들고 싶다

이런 테이블을 만들고 싶지만 여전히 몇 가지 문제가 있습니다.

  1. 상자 중앙에 텍스트를 넣을 수 없습니다
  2. \flushleft테이블 제목을 알 수 없나요?
  3. itemize테이블에는 못 들어가

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

도와주세요!

여기 내 LATEX이 있습니다.

\documentclass[12pt,fleqn]{book}

\usepackage[top=3cm,bottom=3cm,left=3.75cm,right=2.25cm,headsep=10pt,a4paper]{geometry} % Page margins

\usepackage{graphicx} % Required for including pictures
\graphicspath{{Pictures/}} % Specifies the directory where pictures are stored

\usepackage{lipsum} % Inserts dummy text

\usepackage{tikz} % Required for drawing custom shapes

\usepackage[english]{babel} % English language/hyphenation

\usepackage{enumitem} % Customize lists
\setlist{nolistsep} % Reduce spacing between bullet points and numbered lists

\usepackage{booktabs} % Required for nicer horizontal rules in tables

\usepackage{xcolor} % Required for specifying colors by name

\usepackage{array}
\usepackage{caption}
\usepackage{float}

\begin{document}

\newcommand{\tabitem}{~~\llap{\textbullet}~~}

%%% FOR TABLE
\newcommand{\signaldes}[3]
{#1 & #2 & #3 \\ \hline}

\newcommand{\groupsignal}[1]
{
    %\begin{centering}
    %#1 \\ \hline
    \multicolumn{3}{|c|}{\bfseries{#1}} \\ \hline
    %\end{centering}
}   

\newenvironment{signaltable}[1]
    {%\ttabbox[\FBwidth]{}{%
        %\captionsetup{justification=raggedleft,singlelinecheck=off}
        \captionof{table}{Signal Description Table #1} \label{tab:title}
    \begin{tabular}%{>{\bfseries}c c c}%
        {|l | l | p{8cm} |} %>{\bfseries}: in đậm 
        \specialrule{2pt}{1pt}{1pt}
        \bfseries{Signal} & \bfseries{Source} & \bfseries{Description} \\
        \specialrule{2pt}{1pt}{1pt} 
        %\bfseries{#1} & #2 & #3. \\
        %\hline
    %}
    }
    {   
    \end{tabular}}

\section*{SECTION1}
\lipsum[1]

\section*{SECTION2}
\begin{signaltable}{Bus AXI}
  \signaldes{s\_axi\_lite\_aclk}{SLAVER}{AXI DMA AXI4-Lite Clock. Must be less than or equal to axi\_sg\_aclk for asynchronous mode.(C\_PRMRY\_IS\_ACLK\_ASYNC=1).}
  \signaldes{m\_axi\_sg\_aclk}{MASTER}{AXI DMA Scatter Gather Clock. Scatter Gather clock must be less than or equal to the slowest of m\_axi\_mm2s\_aclk or m\_axi\_s2mm\_aclk for asynchronous mode.(C\_PRMRY\_IS\_ACLK\_ASYNC=1).}
  \signaldes{m\_axi\_mm2s\_aclk}{MASTER}{AXI DMA MM2S Primary Clock}
  \signaldes{m\_axi\_s2mm\_aclk}{MASTER}{AXI DMA S2MM Primary Clock}
  \groupsignal{AXI4 Lite Interface Signals}
  \signaldes{s\_axi\_lite\_awvalid}{SLAVER}{AXI4-Lite Write Address Channel Write Address Valid.
    \textbullet\ 1 = Write address is valid.\\
    \textbullet\ 0 = Write address is not valid.}
  \signaldes{s\_axi\_lite\_awready}{SLAVER}{AXI4-Lite Write Address Channel Write Address Ready. Indicates DMA ready to accept the write address.\\
    \tabitem 1 = Ready to accept address.\\
    \tabitem 0 = Not ready to accept address.}
\end{signaltable}

\end{document}

답변1

컬럼의 너비를 인수로 갖는 컬럼 유형을 사용하여 센터링 vertical을 얻을 수 있습니다 .m

나는 열 유형을 사용하여 열에 tabularx사용 가능한 나머지 너비를 제공하기 위해 테이블을 사용했습니다 .DescriptionX

둘 다 긴 줄을 줄 바꿈할 뿐만 아니라 열거 또는 항목별 환경도 허용합니다 p.X

수직선은 가독성이 좋지 않기 때문에 일부러 생략했습니다.

\documentclass{book}
\usepackage{tabularx}

\usepackage[top=3cm,bottom=3cm,left=3.75cm,right=2.25cm,headsep=10pt,a4paper]{geometry}
\usepackage{booktabs}
\usepackage{array}

\newlength{\smallcolumnwidth}
\setlength{\smallcolumnwidth}{1.2cm}
\begin{document}
\sffamily
\noindent\begin{tabularx}{\linewidth}{*{4}{p{\smallcolumnwidth}}X}
\toprule[1.5pt]
\multicolumn{1}{m{\smallcolumnwidth}}{\textbf{Signal Name}} & \multicolumn{1}{m{\smallcolumnwidth}}{\textbf{Interface}} & \multicolumn{1}{m{\smallcolumnwidth}}{\textbf{Signal Type}} & \multicolumn{1}{m{\smallcolumnwidth}}{\textbf{Init Status}} &  \textbf{Description} \tabularnewline
\midrule[1pt]
foo & foo & foo & foo & A longer longer longer text that is most likely wrapped around \tabularnewline

\midrule
foo & foo & foo & foo & Another longer text that is most likely wrapped around again \tabularnewline
\midrule
foo & foo & foo & foo & A longer text that is not wrapped around \tabularnewline
\midrule
\multicolumn{5}{m{\dimexpr\linewidth-2\tabcolsep}}{\centering \textbf{AXI4-Lite Interface Signals}} \tabularnewline
\midrule
  foo & foo & foo & foo & foo 
  \begin{itemize}
  \item foo
  \item another foo
  \end{itemize} \tabularnewline
\bottomrule
\end{tabularx}
\end{document}

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

답변2

상자 중앙에 텍스트를 넣을 수 없습니다

나는 tabulary패키지를 제안합니다(또는 tabularx원하는 테이블 열 유형에 따라 Christian이 제안함).

테이블 제목을 \flushleft할 수 없습니다.

\captionsetup{justification=raggedright, singlelinecheck=off}

테이블에 항목화할 수 없습니다.

.\parbox​ 컬럼 을 사용하는 방법은 기본적으로 동일 p하지만 다른 컬럼 유형에도 사용할 수 있습니다.

감소된 MWE:

음

\documentclass[12pt,fleqn,a4paper]{book}
\usepackage{booktabs} % Required for nicer horizontal rules in tables
\usepackage{caption}
\captionsetup{justification=raggedright, singlelinecheck=off}
\usepackage{tabulary}
\begin{document}
\begin{table}
\caption{Signal Description Table Bus AXI}  
\begin{tabulary}{\linewidth}{llccLL}
\toprule
s\_axi\_lite\_aclk &
SLAVER & 
I & & AXI DMA AXI4-Lite Clock. Must be less than or equal to axi\_sg\_aclk for asynchronous mode. (C\_PRMRY\_IS\_ACLK\_ASYNC=1) \\
\midrule
\multicolumn{5}{c}{\bfseries AXI4 Lite Interface Signals}\\
\midrule
 s\_axi\_lite\_awvalid & 
 SLAVER & 
 O & 0 & 
 AXI4-Lite Write Address Channel Write Address Valid. 
%\parbox{\linewidth}{
\begin{itemize}
\item 1 = Write address is valid.
\item 0 = Write address is not valid.   
\end{itemize}
%}
\tabularnewline\bottomrule 
\end{tabulary}
\end{table}
\end{document}

관련 정보