删除自身环境周围的空白

删除自身环境周围的空白

有谁知道每次使用我自己创建的环境时如何删除 TeX 产生的空格?我尝试使用 \ignorespaces 和 \ignorespacesafterend 的技巧,但似乎不起作用。我想利用标签来交叉引用包含的代码部分,我感觉这个标签问题可能是我产生空格的原因?提前谢谢。

\document{book}
\usepackage{listings}
\newcounter{codeexcerptcounter}
\newcommand{\CEN}{Code excerpt~\thecodeexcerptcounter}

\newenvironment{codeexcerpt}[1][]{
\refstepcounter{codeexcerptcounter}%
}{%
}

\newcommand{\addcodeexcerpt}[1][]%
{\begin{center}
\begin{codeexcerpt}
#1
\end{codeexcerpt}
\end{center}}%

\begin{document}

\chapter{First Chapter}

Here goes some explanation.

\addcodeexcerpt[\label{codeex:first}]
\lstinputlisting[title=\CEN: Mirror.java]{code/Mirror.java}

\end{document}

答案1

你是添加空间很大,所以不要添加它。例如

\newenvironment{codeexcerpt}[1][]{
\refstepcounter{codeexcerptcounter}%
}{%
}

应该

\newenvironment{codeexcerpt}[1][]{%
\refstepcounter{codeexcerptcounter}%
}{%
}

以避免在环境开始处添加空格。

\newcommand{\addcodeexcerpt}[1][]%
{\begin{center}
\begin{codeexcerpt}
#1
\end{codeexcerpt}
\end{center}}%


\addcodeexcerpt[\label{codeex:first}]

显示环境的内容codeexcerpt只是\label{codeex:first}没有可见的输出并且看起来就像页面上的垂直空间。

所以就像

\documentclass{book}
\usepackage{listings}
\newcounter{codeexcerptcounter}
\newcommand{\CEN}{Code excerpt~\thecodeexcerptcounter}



\newcommand{\addcodeexcerpt}[2][]%
{\par\refstepcounter{codeexcerptcounter}#1#2}

\begin{document}

\chapter{First Chapter}

Here goes some explanation.

\addcodeexcerpt[\label{codeex:first}]
{\lstinputlisting[title=\CEN: Mirror.java]{xxx.txt}}

\end{document}

相关内容