`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\addlinespacebooktabs

哦,摆脱所有垂直规则也是你应该非常熟悉的事情。相信我,那些垂直线不会被错过。

在此处输入图片描述

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

相关内容