我想用它\renewcommand{\arraystretch}{1.2}
来调整表格中行与行之间的间距。由于我在论文中到处都使用矩阵(并且此命令也会影响矩阵),因此我想将此命令的范围限制为仅适用于table
环境。
我知道我可以使用另一个\renewcommand{\arraystretch}{1}
来将 改回原始值\end{table}
,但是,我想知道是否有任何方法可以限制 的范围\renewcommand
。
答案1
使 的增加值\arraystretch
适用于所有表状结构(例如array
、tabular
、tabular*
、tabularx
、tabulary
等),但前提是它们发生里面环境table
,您可以在文档的序言中发出以下指令:
\makeatletter
\renewenvironment{table}
{\renewcommand{\arraystretch}{1.2}%
\@float{table}}
{\end@float}
\makeatother
(的原始定义table
直接取自;和article.cls
中给出了相同的定义。)请注意,此重新定义不会影响未在环境内设置的表格结构。report.cls
book.cls
table
答案2
我只是发现,如果我\renewcommand
在环境本身内使用,范围将仅限于该环境。
\begin{table}
\renewcommand{\arraystretch}{1.2}
TABLE CODE
\end{table}
答案3
为何沒有etoolbox
答案?
\documentclass{article}
\usepackage{amsmath}
\usepackage{etoolbox}
\AtBeginEnvironment {tabular}{\renewcommand{\arraystretch}{3}}
\begin{document}
\begin{tabular}{c}
foo \\ bar \\ baz
\end{tabular}
\[
\begin{matrix}
foo \\ bar \\ baz
\end{matrix}
\]
\end{document}
只需将其table
替换tabular
为即可。table
\AtBeginEnvironment {table}{\renewcommand{\arraystretch}{3}}
etoolbox
提供以下环境挂钩:
\AtBeginEnvironment {<environment>}{<code>}
\AtEndEnvironment {<environment>}{<code>}
\BeforeBeginEnvironment {<environment>}{<code>}
\AfterEndEnvironment{<environment>}{<code>}
钩子 1 和 2 将限制<code>
环境内部。有关详细信息,texdoc.net或texdoc etoolbox
从命令行。
答案4
对于更通用的解决方案,限制\renewcommand{}
在范围内使用\bgroup
并\egroup
定义范围。代码
\newcommand{\foo}{foo}
\foo
...
\bgroup
\renewcommand{\foo}{bar}
\foo
\egroup
...
\foo
将产生
foo...酒吧...foo