尽管在 tabu 自定义环境之后使用了 \noindent,但缩进仍然很小

尽管在 tabu 自定义环境之后使用了 \noindent,但缩进仍然很小

这个问题是关于使用-environment 的自定义环境之后的一个(对我来说)神秘的小缩进(看起来像一个普通的空白......)tabu

请编译此 MWE:

\documentclass[a4paper, 11pt]{scrbook}
\usepackage{blindtext}
\usepackage[cm]{fullpage}

\usepackage{tabu, booktabs}

\newenvironment{texttab}[1]{
            \par\centering
            \begin{tabu} to 0.9\textwidth {#1} \toprule \rowfont{\bfseries}}
            {\end{tabu}\par\noindent}

\begin{document}
\section{TEST}
\blindtext
%
\begin{texttab}{X[l,2] X[l,2] X[l,3]}
Test1   &   Test2   &   Test3   \\ \midrule
Test1   &   Test2   &   Test3   \\
Test1   &   Test2   &   Test3   \\ \bottomrule
\end{texttab}
%
HERE HAPPENS INDENT\blindtext
\end{document}

我将类似问题的答案放入%空白行中,\noindent在这里效果很好。但是,表格后面的段落有一个空白状的缩进。

我发现在文本部分%后面添加时可以使其消失,所以:\end

<table content> \\ \bottomrule
\end{texttab}% (!)
%
NOINDENT THIS TIME...

%请解释一下;这是怎么回事?我能否以某种方式将解决方案纳入环境定义中,还是每次使用此环境时都需要将其放入?

答案1

环境后的换行符充当空格的原因是您使用了\noindent过早将 TeX 置于水平模式,以便在该模式下行尾始终产生单词空格。

你可以通过以下方式来解决这个问题

            {\end{tabu}\par\noindent\ignorespacesafterend}

但这确实是错误的做法,因为\noindent这意味着你不能在环境之后有一个空行,否则你会得到一个虚假的白色段落。注意你需要%HERE

所有 LaTeX 显示环境都可以处理抑制缩进,只需使用

\documentclass[a4paper, 11pt]{scrbook}
\usepackage{blindtext}
\usepackage[cm]{fullpage}

\usepackage{tabu, booktabs}

\newenvironment{texttab}[1]{
            \begin{center}%
            \begin{tabu} to 0.9\textwidth {#1} \toprule \rowfont{\bfseries}}
            {\end{tabu}\end{center}}

\begin{document}
\section{TEST}
\blindtext
%
\begin{texttab}{X[l,2] X[l,2] X[l,3]}
Test1   &   Test2   &   Test3   \\ \midrule
Test1   &   Test2   &   Test3   \\
Test1   &   Test2   &   Test3   \\ \bottomrule
\end{texttab}
%
HERE HAPPENS INDENT\blindtext
\end{document}

HERE那么,如果前面没有空行,则不会有缩进,但是如果确实有空行,因为在某些情况下您想在那里开始一个段落,那么您就会得到缩进。

答案2

里面某个地方tabu有零星的空间,或者缺失\ignorespaces\ignorespacesafterend

之后立即添加 \ignorespaces\end{texttab}似乎有效

相关内容