有谁知道每次使用我自己创建的环境时如何删除 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}