如何设置前导 11pt 并删除第一列的多余空格(cals.sty)

如何设置前导 11pt 并删除第一列的多余空格(cals.sty)
\documentclass{article}


\usepackage{cals}

\makeatletter
\renewcommand\cals@cs@width{0pt}
\renewcommand\cals@framecs@width{0pt}
\renewcommand\cals@rs@width{0pt}
\renewcommand\cals@framers@width{.5pt}
\renewcommand\cals@bodyrs@width{.5pt}
\makeatother

\begin{document}


{\fontsize{9}{11}\selectfont\begin{calstable}[c]
\colwidths{{38pt}{42pt}{39pt}{23pt}}
\thead{\bfseries\brow \cell{col1} \cell{col2} \cell{col3} \cell{col4}\erow\mdseries}
\brow\cell{col1}\cell{r1,col2} \cell{r1,col3} \cell{col4}\erow
\brow\cell{col1} \cell{r2,col2} \cell{r2,col3} \cell{col4}\erow
\brow\cell{\strut col1$_f^1$} \cell{\strut r3,col2$^1_5$} \cell{\strut r3,col3}\cell{\strut col4} \erow
\brow\cell{col1} \cell{r4,col2} \cell{r4,col3} \cell{col4}\erow
\brow\cell{\strut col1$5^+_5$} \cell{\strut r5,col2} \cell{\strut r5,col3} \cell{\strut col4}\erow
 \end{calstable}}


\end{document}

答案1

虽然有点晚,但永远不会太晚:

领导

我不确定 OP 所说的“将行距设置为 11 pt”是什么意思,但我将其解释为他指的是行高和深度,他已11 pt通过命令将其固定为

\fontsize{9}{11}\selectfont

为了确保所有行的高度和深度相等,您可以使用带有列的零,在其中放置首选高度的零宽度规则,即11pt。我定义了一个快捷方式\rl(规则)

\newcommand{\rl}{\rule{0pt}{11pt}}

然后我添加第五列0pt宽。

为了避免Overfull hbox最后一列出现这种情况,您必须删除左右填充(侧边距)。为此,我使用快捷键\lp\rp,我在下面进行了注释。现在,所有行都是 11 pt 加上顶部和底部填充(每个约 3.96pt)。为了确保所有单元格正确对齐,必须在\vfil单元格内部使用。单元格内容垂直居中。使用特殊钩子可以轻松对所有单元格执行此操作:\cals@AtBeginCell

\def\cals@AtBeginCell{\vfil}

侧轴承

通过在单元格开始前将左内边距重置为零,并在单元格开始后将其重置为预定义值,可以移除第一列中的侧边距。不幸的是,您必须对第一列中的所有单元格执行此操作,因为据我所知,卡路里没有对整个有效的命令柱子(没有类似的东西大批's @{})。因此,我定义了一个快捷宏,它充当开关。如果填充为零,它会将填充重置为先前的值。如果填充不为零,则该命令将填充设置为零。

\def\rp{\ifdim\cals@paddingL=0.0pt\relax    % Left padding switch (off-on)
        \cals@setpadding{Ag}                % Reset padding to standard value
\else \setlength{\cals@paddingL}{0pt}\fi}

您可以为右侧、顶部和底部填充定义类似的宏,并分别设置每个宏。我已经为右侧填充包含了一个宏。另外,请记住重置为正确值。如果您使用默认行距,则宏如上所示,如果您设置了自己的值,则必须重置为该值:

\def\rp{\ifdim\cals@paddingR=0.0pt\relax    % Right padding switch (off-on)
        \setlength{\cals@paddingR}{5.5pt}   % Reset padding to custom value
\else \setlength{\cals@paddingR}{0pt}\fi}

在这种情况下,删除填充稍微复杂一些,因为我们首先必须删除第 4 列的右侧填充,此外还要删除左侧从零宽度列 5 向右填充。

这是 MWE 和输出的图片。我将最后一列右对齐,只是为了演示如何将单元格内容推到右边缘:

\documentclass{article}
\usepackage{cals}

\makeatletter
\renewcommand\cals@cs@width{0pt}
\renewcommand\cals@framecs@width{0pt}
\renewcommand\cals@rs@width{0pt}
\renewcommand\cals@framers@width{.5pt}
\renewcommand\cals@bodyrs@width{.5pt}

\def\lp{\ifdim\cals@paddingL=0.0pt\relax    % Left padding switch (off-on)
    \cals@setpadding{Ag} 
\else \setlength{\cals@paddingL}{0pt}\fi}

\def\rp{\ifdim\cals@paddingR=0.0pt\relax    % Right padding switch (off-on)
    \cals@setpadding{Ag}
\else \setlength{\cals@paddingR}{0pt}\fi}
\makeatother

\newcommand{\rl}{\rule{0pt}{11pt}}

\begin{document}

{\fontsize{9}{11}\selectfont
\begin{calstable}[c]
\colwidths{{38pt}{42pt}{39pt}{23pt}{0pt}}
\makeatletter
\def\cals@AtBeginCell{\vfil}  % All cells vertical adjusted
%\setlength{\cals@paddingT}{5.5pt}  % In case you need own value
%\setlength{\cals@paddingB}{5.5pt}  % In case you need own value

\thead{\bfseries%
\brow
    \lp\cell{col1}\lp          % Remove left padding
    \cell{col2}
    \cell{col3}
    \rp\alignR\cell{col4}\rp   % Remove right padding
    \lp\rp\cell{\rl}\lp\rp     % Remove left *and* right padding
\erow\mdseries
}
\brow
    \lp\alignL\cell{col1}\lp
    \cell{r3,col2$^1_5$}
    \cell{r1,col3}
    \rp\alignR\cell{col4}\rp
    \lp\rp\cell{\rl}\lp\rp
\erow
\brow
    \lp\alignL\cell{col1}\lp
    \cell{r2,col2}
    \cell{r2,col3}
    \rp\alignR\cell{col4}\rp
    \lp\rp\cell{\rl}\lp\rp
\erow
\brow
    \lp\alignL\cell{\strut col1$_f^1$}\lp
    \cell{\strut r3,col2$^1_5$}
    \cell{\strut r3,col3}
    \rp\alignR\cell{\strut col4}\rp
    \lp\rp\cell{\rl}\lp\rp
\erow
\brow
    \lp\alignL\cell{col1}\lp
    \cell{r4,col2}
    \cell{r4,col3}
    \rp\alignR\cell{col4}\rp
    \lp\rp\cell{\rl}\lp\rp
\erow
\brow
    \lp\alignL\cell{\strut col1$5^+_5$}\lp
    \cell{\strut r5,col2}
    \cell{\strut r5,col3}
    \rp\alignR\cell{\strut col4}\rp
    \lp\rp\cell{\rl}\lp\rp
\erow
\makeatother
\end{calstable}}
\end{document}

在此处输入图片描述

相关内容