“longtable”中的對齊

“longtable”中的對齊
\documentclass[12pt] {article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{multirow}
\usepackage{multicol}
\usepackage{longtable}

\begin{document}
    \begin{longtable}{|c|c|c|}
    \hline
    \pmb{Operation} & \pmb{Codes}   & \pmb{Output}\\\hline
    \endhead
    \multirow{3}{*}{Transpose}  &{\fontfamily{qcr}\selectfont A=Matrix([[1,2,3],[3,2,1],[1,1,5]])}  & \multirow{3}{*}{$\left(
    \begin{matrix}
        1 &2 &3\\
        3 &2 &1\\
        1 &1 &5
    \end{matrix}
    \right)$}\\

    & {\fontfamily{qcr}\selectfont B=A.transpose()} &\\
    & {\fontfamily{qcr}\selectfont show(B)} &\\\hline
    \multirow{2}{*}{Determinant}    &{\fontfamily{qcr}\selectfont A=Matrix([[1,2,3],[3,2,1],[1,1,5]])}  & \multirow{2}{*}{-16}\\
    & {\fontfamily{qcr}\selectfont A.det()} &   \\\hline 
    
    \multirow{3}{*}{Adjoint}    &{\fontfamily{qcr}\selectfont A=Matrix([[1,2,3],[3,2,1],[1,1,5]])}  & \multirow{3}{*}{$\left(
        \begin{matrix}
            1 &2 &3\\
            3 &2 &1\\
            1 &1 &5
        \end{matrix}
        \right)$}\\
    & {\fontfamily{qcr}\selectfont B=A.adjugate()}  &\\
    &{\fontfamily{qcr}\selectfont show(B)}  &\\\hline
\end{longtable}
\end{document}

透過我的編碼可以看出

  1. 在第三列(輸出列)中,然後括號觸及頂部和底部水平線
  2. 同樣在中間列中,線條也沒有左對齊。我該如何解決這些問題?

答案1

這是一個不需要所有這些\fontfamily{qcr}\selectfont指令的解決方案。

在此輸入影像描述

\documentclass[12pt]{article}
\usepackage{geometry}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{multirow}
%%%\usepackage{multicol} % not needed
\usepackage{longtable}

% new:
\usepackage{array,courier}

\begin{document}
\begin{longtable}{| l | >{\ttfamily}l | c |}
    
\hline
\textbf{Operation} & \multicolumn{1}{c|}{\textbf{Codes}}  & \textbf{Output}\\
\hline
\endhead
    
% body of table:
    \multirow{3}{*}{Transpose}  & 
    A=Matrix([[1,2,3],[3,2,1],[1,1,5]])  & 
    \multirow{3}{*}{\small $
        \begin{pmatrix}
            1 &2 &3\\
            3 &2 &1\\
            1 &1 &5
        \end{pmatrix}
        $} \\

    & B=A.transpose() & \\
    & show(B) & \\
    \hline
    \multirow{2}{*}{Determinant}    &
    A=Matrix([[1,2,3],[3,2,1],[1,1,5]])  & 
    \multirow{2}{*}{$-16$}\\
    & A.det() & \\
    \hline  
    \multirow{3}{*}{Adjoint}    &
    A=Matrix([[1,2,3],[3,2,1],[1,1,5]])  & 
    \multirow{3}{*}{\small $
        \begin{pmatrix}
            1 &2 &3\\
            3 &2 &1\\
            1 &1 &5
        \end{pmatrix}
        $} \\
    & B=A.adjugate()  & \\
    & show(B)  & \\
\hline
\end{longtable}
\end{document}

附錄解決OP的後續查詢:LaTeX提供的兩個主要巨集用於在類似表格的結構中繪製水平線 -\hline\cline- 並不是特別複雜。特別是,由\hline和繪製的線條之間的間距\cline以及線條上方/下方的材料通常嚴重不足。您自己也遇到過這種情況,不是嗎?

現在,人們可以嘗試一種「創可貼方法」來解決這個問題,透過手動在各行上方或下方插入一些垂直空白填充。我想建議您考慮做一些非常不同的事情:加載書本標籤打包並學習使用其使用者級巨集:\toprule\midrule\bottomrule\cmidrule\addlinespace。空白在形成視覺分隔方面與黑線一樣有效。使用套件的巨集的一個令人高興的副作用booktabs是,幾乎沒有必要考慮參與您在後續評論中提到的那種視覺格式。

噢,去掉所有的垂直規則也是你應該非常熟悉的事情。相信我,那些垂直線不會被錯過。

在此輸入影像描述

\documentclass[12pt]{article}
\usepackage{geometry}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{multirow}
%%%\usepackage{multicol} % not needed
\usepackage{longtable}

% new:
\usepackage{array,courier,booktabs}

\begin{document}
\begin{longtable}{@{} l >{\ttfamily}l c @{}}
    
    \toprule
    \textbf{Operation} & 
    \multicolumn{1}{c}{\textbf{Codes}} & 
    \textbf{Output}\\
    \midrule
    \endhead

    \bottomrule 
    \endlastfoot
    
% body of table:
    \multirow{3}{*}{Transpose} & 
    A=Matrix([[1,2,3],[3,2,1],[1,1,5]]) & 
    \multirow{3}{*}{$
    \begin{pmatrix}
        1 &2 &3\\
        3 &2 &1\\
        1 &1 &5
    \end{pmatrix}$} \\
   
  & B=A.transpose() &\\
  & show(B) & \\
    \addlinespace
    
    \multirow{2}{*}{Determinant} &
    A=Matrix([[1,2,3],[3,2,1],[1,1,5]]) & 
    \multirow{2}{*}{$-16$}\\
  & A.det() & \\
    \addlinespace 
    
    \multirow{3}{*}{Adjoint} &
    A=Matrix([[1,2,3],[3,2,1],[1,1,5]]) & 
    \multirow{3}{*}{$
    \begin{pmatrix}
        1 &2 &3\\
        3 &2 &1\\
        1 &1 &5
    \end{pmatrix}$}\\
  & B=A.adjugate() & \\
  & show(B) & \\

\end{longtable}
\end{document}

相關內容