重新定义 @ 以用于 \makeatletter \makeatother 中的表格列间规范

重新定义 @ 以用于 \makeatletter \makeatother 中的表格列间规范

我需要在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代替&

相关内容