Hapus garis putih pada tabel multirow yang dicat

Nov 03 2020

Saya memiliki tabel di mana baris pertama berisi sel multirow. Multi-baris harus diwarnai abu-abu.

pertanyaan 1

Sayangnya, garis putih tipis muncul di antara banyak baris (lihat gambar di bagian akhir). Ini kodenya:

\begin{table}[H]
\renewcommand{\arraystretch}{1.5}
\rowcolors{2}{white}{gray!25}
\begin{center}
\begin{tabular}{ | c | c | c | }
 \arrayrulecolor{black} %changes color of hline
 \hline
 \rowcolor{gray!50} & {Max Power} & {Typ. Range}\\
 \rowcolor{gray!50}\multirow{-2}{*}{\textbf{Class}} & (mW)  &  (m) \\
 \hline
 \textbf{1} &  100 & 100\\
 \textbf{2} & 2.5 & 10\\
 \textbf{3} & 1 & 1\\
 \textbf{4} & 0.5 & 0.5\\
 \hline
\end{tabular}
\caption{Σύγκριση μεταξύ 2.4GHz και 5GHz}
\end{center}
\end{table}

Pertanyaan2

Selanjutnya, saya ingin menyesuaikan jarak yang ditunjukkan dengan panah merah. Saya ingin ukurannya lebih kecil, sehingga teksnya lebih dekat ke baris di atas, hanya untuk baris khusus ini.

Jawaban

3 Zarko Nov 03 2020 at 05:17

Dengan header kolom dalam \theadperintah yang ditentukan dalam makecellpaket:

\documentclass{article}

\usepackage[table]{xcolor}
\usepackage{array, makecell, multirow}
\renewcommand\theadfont{\normalsize\bfseries}

\usepackage{siunitx}


\begin{document}
    \begin{table}[ht]
    \renewcommand{\arraystretch}{1.5}
    %\arrayrulecolor{black} %changes color of hline
    \rowcolors{2}{white}{gray!25}
\centering
\begin{tabular}{ | >{\bfseries}c | c | c | }
    \hline
 \rowcolor{gray!50} 
    & \thead{Max Power\\ (mW)} & \thead{Typ. Range\\ (m)}\\
    \hline
1 &  100 & 100  \\
2 & 2.5  & 10   \\
3 & 1    & 1    \\
4 & 0.5  & 0.5  \\
    \hline
\end{tabular}
\caption{Text in Greek language \SI{2.4}{GHz} ... \SI{5}{GHz}.}
    \end{table}
\end{document}   

Catatan: tolong, selalu berikan MWE, adalah dokumen lengkap terkecil yang mereproduksi masalah. Ini harus berisi semua paket dan definisi yang diperlukan untuk menjalankan contoh, tetapi tidak lebih dari itu.

4 F.Pantigny Nov 03 2020 at 04:38

Paket nicematrixmemiliki alat untuk mengatasi masalah itu. Dengan kode berikut, garis putih tipis tidak akan muncul (mereka muncul di beberapa pemirsa PDF dengan alat-alat colortbl, yang dimuat oleh pilihan tabledari xcolor).

\documentclass{article}

\usepackage{nicematrix}

\begin{document}

\begin{table}
\centering
\renewcommand{\arraystretch}{1.5}
\begin{NiceTabular}{|>{\bfseries}c|c|c|}%
  [
    code-before = \rowcolors{2}{white}{gray!25}
                  \rowcolor{gray!50}{1,2} 
  ]
 \hline
 \Block{2-1}{Class} & Max Power & Typ. Range\\[-3mm]
                    & (mW)  &  (m) \\
 \hline
 1 &  100 & 100\\
 2 & 2.5 & 10\\
 3 & 1 & 1\\
 4 & 0.5 & 0.5\\
 \hline
\end{NiceTabular}
\end{table}

\end{document}

Namun, Anda memerlukan beberapa kompilasi (karena nicematrixmenggunakan node PGF / Tikz).

2 Bernard Nov 03 2020 at 05:15

Saya sarankan untuk menggunakan makecelldan perintah eponimnya. Dengan cara ini, Anda tidak perlu \multirowdan jarak vertikal di kepala kolom akan lebih pendek. ( Catatan : Saya harus menerjemahkan teks keterangan karena saya memiliki masalah dengan editor saya)

\documentclass{article}
\usepackage{caption, float, makecell}
\usepackage[svgnames, table]{xcolor}

\begin{document}

\begin{table}[H]
\renewcommand{\arraystretch}{1.5}
\rowcolors{2}{white}{gray!25}
\begin{center}
\begin{tabular}{ | c | c | c | }
 \arrayrulecolor{black} %changes color of hline
 \hline
 \rowcolor{gray!50}\textbf{Class} & \makecell{Max Power\\ (mW)} & \makecell{Typ. Range\\(m)}\\
 \hline
 \textbf{1} & 100 & 100\\
 \textbf{2} & 2.5 & 10\\
 \textbf{3} & 1 & 1\\
 \textbf{4} & 0.5 & 0.5\\
 \hline
\end{tabular}
\caption{Comparison between 2.4GHz and 5GHz}
\end{center}
\end{table}

\end{document}

Sunting : Untuk masalah jarak, saya sarankan untuk menghapus modifikasi \arraystretch, untuk memuat cellspacepaket dan menambahkan baris ini di awal kode tabel (jika Anda juga memuat, siunitxganti huruf Sdengan huruf C):

\setlength{\cellspacetoplimit}{4pt}
\setlength{\cellspacebottomlimit}{4pt}
\centering
\begin{tabular}{|c|Sc|Sc|}