Willst du so einen Tisch bauen

Willst du so einen Tisch bauen

Ich möchte eine Tabelle wie diese erstellen, habe aber immer noch einige Probleme:

  1. Der Text kann nicht in die Mitte des Felds gesetzt werden
  2. kann \flushleftder Tabellentitel nicht
  3. kann nicht itemizein der Tabelle

Bildbeschreibung hier eingeben

Hilf mir!

Hier ist mein 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}

Antwort1

Die verticalZentrierung kann über den Spaltentyp erfolgen m, der als Argument die Breite der Spalte hat.

Ich habe mithilfe des Spaltentyps eine tabularxTabelle verwendet, um die restliche verfügbare Breite für die DescriptionSpalte bereitzustellen X.

Sowohl pals auch Xermöglichen das Umbrechen längerer Zeilen als auch Aufzählungs- oder Itemize-Umgebungen.

Auf die senkrechten Striche habe ich bewusst verzichtet, da sie die Lesbarkeit nicht verbessern.

\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}

Bildbeschreibung hier eingeben

Antwort2

Der Text kann nicht in die Mitte des Felds gesetzt werden

Ich schlage das tabularyPaket vor (oder tabularxdas von Christian vorgeschlagene, je nach Spaltentyp der Tabelle möchten Sie vielleicht das eine oder das andere)

Der Tabellentitel kann nicht nach links verschoben werden.

\captionsetup{justification=raggedright, singlelinecheck=off}

kann nicht in der Tabelle aufschlüsseln

Verwenden Sie eine \parbox. Dies ist im Wesentlichen dasselbe wie die Verwendung einer pSpalte, Sie können es aber auch in anderen Spaltentypen verwenden.

Ein reduzierter MWE:

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}

verwandte Informationen