Я хочу сделать такую таблицу, но у меня все еще есть некоторые проблемы:
- невозможно поместить текст в центр поля
- не может ли
\flushleft
название таблицы - не может
itemize
в таблице
Помоги мне!
Вот мой ЛАТЕКС
\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
параметра columntype, в качестве аргумента которого указывается ширина столбца.
Я использовал tabularx
таблицу, чтобы указать оставшуюся доступную ширину столбца Description
, используя X
columntype.
Оба метода 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
предложенный Кристианом, в зависимости от типа столбцов таблицы вам может понадобиться тот или иной)
не могу \flushleft заголовок таблицы
\captionsetup{justification=raggedright, singlelinecheck=off}
не могу детализировать в таблице
Использовать \parbox
. По сути, это то же самое, что использовать p
столбец, но вы можете использовать его и в других типах столбцов.
Сниженная МПЭ:
\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}