LaTeX 技巧 959:浮动体环境内部内容居中的设置方法

这是我们 QQ ?#28023;?1940767)管理员 - 23637935 桔子大神的技巧总结,希望?#28304;?#23478;有所帮助。作为文章、报告、书籍中常用的浮动体环境,如figure、table 环境,其环境中的内容一般采用居中布置,这项设置通常是在环境中内部通过文本对齐声明实现的,如:

   \begin{table}[htp]
    \centering
    ...
    \end{table}

如果全文使用大量的图表浮动体,每个浮动体内部写一句\centering也是比较繁琐的,如果再要求表格内容采用小一号的字号\small,每个环境里需要输入的内容就又多了一点,那么有没有什么方法可以在撰写文档的时候省去这一条命令而同时实现内容居中,字体小一号呢?作为最直接的思路,可以定义新环境Figure、Table环境如下:

    \newenvironment{Table}[1][tbp]%
    {\begin{table}[#1]\centering\small}{\end{table}}
    \newenvironment{Figure}[1][tbp]%
    {\begin{figure}[#1]\centering\small}{\end{figure}}

这种方法的缺点是需要自定义环境,一旦需要复制文本内容到其他文档中,需要把导言区内相应的重定义内容也复制过去,而且重定义的环境容易与\LaTeX 基础环境混淆。因此可以考虑对figure 和table 环境进行修?#27169;?#26368;容易想到的方法是利用etoolbox宏包在环境中施加一个钩子,添加\centering\small命令,于是容易想到使用(以下仅以table环境举例,figure 环境类似):

    \usepackage{etoolbox} % in preamble
    \AtBeginEnvironment{table}{\centering\small}

但是尝试一下,我们会发?#36136;导什?#27809;有起任何作用。这是因为在article.cls(其他基础文档类类似,仅以其为例)中对table 的定义是:

    \newenvironment{table}
                   {\@float{table}}
                   {\[email protected]}

显然,在使用了\AtBeginEnvironment{table}{\centering\small}一句后,table的定义变成了:

    \newenvironment{table}
                   {\centering\small\@float{table}}
                   {\[email protected]}

\centering 出现太早,导致不能在table 环境中起作用。如果重新定义table(导言区内需要把下面这一句放在\makeatletter 与\makeatother之间):

    \renewenvironment{table}{\@float{table}\centering\small}{\[email protected]}

或者使用xpatch宏包中的命令:

    \usepackage{xpatch} % in preamble
    \xapptocmd{\table}{\centering\small}{}{}

来得到同样的效果,则浮动体table 环境自身的可选?#38382;?#23558;无法使用,因为\centering\small占据了可选?#38382;?#30340;位置,导致\LaTeX 认为使用默认可选?#38382;?#24182;将其后的[hbtp]等认作环境中的文本内容。如果需要保留浮动体?#38382;?#30340;作用,则需要对更深层的内部命令进行修改或打补丁,参阅 https://tex.stackexchange.com/questions/95992/centering-all-tables-in-a-document-with-etoolbox/ 后,考虑对内部命令\@floatboxreset ?#38057;?#22914;下:

    \usepackage{xpatch}    % in preamble
    \makeatletter
    \xpatchcmd\@floatboxreset{\normalsize}{\centering\small}{}{}
    \makeatother

这样修改后,所有浮动体默认在环境中都是居中布置了,并且采用小一号的字号。

分享到:
未经允许不得转载:LaTeX 技巧 959:浮动体环境内部内容居中的设置方法
已有 条意见

    最新文章

    加载中...
      本站提供专业LaTeX排版、咨询、定制服务,请点击下图咨询详情


      全国首个精品的LaTeX视频教程,大牛带着你入?#29275;?#35753;LaTeX学习不再纠结,请点击下图咨询详情

      热门评论

        联系我们

        交流QQ群:91940767
        本站QQ号:343083553
        邮箱联系[email protected]
        ?#21592;?#24215;铺https://shop240512713.taobao.com/ 提供排版,模板定制,培训,图片处理,视频教程等LaTeX服务。

        关注我们微信公众号

        如果您投稿或者希望加入我们团队,请发送您的简历到[email protected]

        科技艺术的完美融合,专业精致的排版体验

        联系我们联系我们
        拳皇命运怎么快速的得到更多的装备
        浙江快乐时时走势图 内蒙古11选五怎么下载不了了 黑龙江福彩时时彩走势图表 18-19五大联赛开赛时间 河南彩票快三 齐鲁风采福彩开奖号码 新时时倍投计划 竞彩足球必发盈亏指数 吉林时时专家计划 福彩12选5软件下载