Ich möchte eine Tabelle wie diese erstellen, habe aber immer noch einige Probleme:
- Der Text kann nicht in die Mitte des Felds gesetzt werden
- kann
\flushleft
der Tabellentitel nicht - kann nicht
itemize
in der Tabelle
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 vertical
Zentrierung kann über den Spaltentyp erfolgen m
, der als Argument die Breite der Spalte hat.
Ich habe mithilfe des Spaltentyps eine tabularx
Tabelle verwendet, um die restliche verfügbare Breite für die Description
Spalte bereitzustellen X
.
Sowohl p
als auch X
ermö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}
Antwort2
Der Text kann nicht in die Mitte des Felds gesetzt werden
Ich schlage das tabulary
Paket vor (oder tabularx
das 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 p
Spalte, Sie können es aber auch in anderen Spaltentypen verwenden.
Ein reduzierter 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}