在新命令和默认命令之间切换

在新命令和默认命令之间切换

我定义了以下宏:

% makes tables more readable  
\renewcommand{\arraystretch}{1.1}  
\setlength{\tabcolsep}{5pt}

这会在表格中添加额外的制表符空间。但是,在我的报告中,我需要使用默认设置,因为它会弄乱页面的结构(我有一个并排的表格和图形)。我想知道我是否可以在某些表格环境中将制表符空间重置为默认值?

答案1

您可以创建一个命令来存储旧的长度,以便以后可以返回。对于长度,您可以这样做:

\newlength{\myparindent}
\setlength{\myparindent}{\parindent}
\setlength{\parindent}{2em}

%restore original
\setlength{\parindent}{\myparindent}

答案2

将修改宏存储在您可以在需要时调用的宏中:

在此处输入图片描述

\documentclass{article}

% Store modifiable content
\newlength{\storetabcolsep}
\AtBeginDocument{%
  \let\storearraystretch\arraystretch% \arraystretch
  \setlength{\storetabcolsep}{\tabcolsep}% \tabcolsep
}

% Makes tables more readable
\newcommand{\increasetablespace}{%
  \renewcommand{\arraystretch}{1.5}%
  \setlength{\tabcolsep}{12pt}}%
% Restore stretching defaults
\newcommand{\restoretablespace}{%
  \let\arraystretch\storearraystretch% \arraystretch
  \setlength{\tabcolsep}{\storetabcolsep}}% \tabcolsep

\begin{document}

\increasetablespace
\begin{tabular}{ccc}
  \hline
  A & B & C \\
  \hline
  1 & 2 & 3 \\
  \hline
\end{tabular}

\bigskip

\restoretablespace
\begin{tabular}{ccc}
  \hline
  A & B & C \\
  \hline
  1 & 2 & 3 \\
  \hline
\end{tabular}

\end{document}

其理念是将您可能修改的任何内容存储在文档中\AtBeginDocument。然后,通过宏调用,\increasetablespace它们会更新以满足您的扩展需求,并使用\restoretablespace

相关内容