![重新定义 @ 以用于 \makeatletter \makeatother 中的表格列间规范](https://linux22.com/image/292797/%E9%87%8D%E6%96%B0%E5%AE%9A%E4%B9%89%20%40%20%E4%BB%A5%E7%94%A8%E4%BA%8E%20%5Cmakeatletter%20%5Cmakeatother%20%E4%B8%AD%E7%9A%84%E8%A1%A8%E6%A0%BC%E5%88%97%E9%97%B4%E8%A7%84%E8%8C%83.png)
我需要在and环境tabular
中使用带有 @ 列间规范的。例如,我使用类似\makeatletter
\makeatother
\makeatletter
%code that uses @ as letter
\begin{tabular}{c@{}c}
%code that uses @ as letter
\end{tabular}
%more code that uses @ as letter
\makeatother
表格定义中是否有 @ 字符的替代方法。例如,如果需要\\
,可以用 替换序列\tabularnewline
。@ 是否有类似的东西。而且,正如我已经问过的,(在表格中)是否也存在替代方法&
?
自 2014 年 6 月 21 日起修订:
我自己找到了一个可行的解决方案。这是我现在的代码:
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{myarticle}[2014/06/18 My article]
\ProcessOptions\relax
\LoadClass[paper=a4,fontsize=10pt,ngerman,hyperref,draft]{scrartcl}
\RequirePackage[T1]{fontenc}
\RequirePackage{lmodern}
\RequirePackage{textcomp} % required to get special symbols
\RequirePackage[utf8]{inputenc}
\RequirePackage[final]{microtype}
\RequirePackage{babel}
\RequirePackage[final]{graphicx}
\RequirePackage{booktabs}
\makeatletter
\def\@maketitle{%
\newpage\null\noindent%
\setlength{\tabcolsep}{0pt}%
\begin{tabular}[t]{lr}%
\begin{minipage}[t]{.75\textwidth}%
\sffamily
\Huge\@title\par%
\vskip.5ex%
\Large\@date\par%
\end{minipage}%
&%
\begin{minipage}[t]{.25\textwidth}%
\raggedleft\footnotesize
\includegraphics[width=\textwidth]{logo.pdf}\par%
\vskip.5\baselineskip%
Company Name\par%
\vskip.5\baselineskip%
Street and Number\par%
Postal code and Town\par%
\end{minipage}%
\end{tabular}%
\par
}
\makeatother
最初,我没有这条线
\setlength{\tabcolsep}{0pt}
但尝试过
\begin{tabular}[t]{l@{}r}%
而是抑制列间距。后者会导致无法编译的代码。所以我的猜测是符号@
会干扰\makeatletter
命令。
答案1
该测试对@
catcode 不敏感,因此您不需要执行任何操作(但您实际上不需要使用\makeatletter
中间文档)。
因为&
您可以\let\tabsep=&
在序言中使用,并\tabsep
代替&
。