\ifdefempty 反对换行符

\ifdefempty 反对换行符

我使用 LaTeX 与模板解析器结合进行文本处理。

我想做一些事情,当有文本要打印时。所以我有

\newcommand{\zahltext}{%
  %% here may be dragons, this is generated
}
\ifdefempty{\zahltext}{}{%else
  \subsection{heading}
  \zahltext
}

我的问题是,“%% here be dragons” 可能包含普通文本,也可能只包含注释、空格和换行符。因此 \zahltext 不是“没有字符”意义上的空,而是“没有输出任何内容”意义上的空。

我的问题是:是否存在我没​​有找到的宏,它告诉我“如果 LaTeX 输出 \zahltext,则根本不会输出或只有一个段落分隔符”?

伊迪丝:

\documentclass[12pt]{article}
\usepackage{etoolbox}
\begin{document}
\newcommand{\zahltext}{}

\renewcommand{\zahltext}{% from Generator
  %% here may be dragons, this is generated
}
\section{should be empty}
\ifdefempty{\zahltext}{cool}{%else
  \subsection{do not print}
  \zahltext
}

\renewcommand{\zahltext}{% from Generator
  content
}
\section{should show}
\ifdefempty{\zahltext}{}{%else
  \subsection{found test}
  \zahltext
}

\renewcommand{\zahltext}{% from Generator

%% an empty line, could not help with that
%% it comes from an extern source

}
\section{should be empty!!}
\ifdefempty{\zahltext}{}{%else
  \subsection{but is not. No output whatsoever}
  \zahltext
}

\end{document}

我的问题在于第三种情况。我希望 \zahltext 求值为“空”,因为它不会创建可见的输出。

答案1

一个非常粗略的解决方案:你可以将的内容放入\zahltexta 中\hbox并检查结果框的宽度。如果宽度为 0,则表示未排版任何内容。

\documentclass[12pt]{article}

\newcommand{\ifzahltextempty}[2]{%
    \setbox0=\hbox{\zahltext}%
    \ifdim\wd0=0pt #1\else #2\fi
}

\begin{document}
\newcommand{\zahltext}{}

\renewcommand{\zahltext}{% from Generator
  %% here may be dragons, this is generated
}
\section{should be empty}
\ifzahltextempty{cool}{%else
  \subsection{do not print}
  \zahltext
}

\renewcommand{\zahltext}{% from Generator
  content
}
\section{should show}
\ifzahltextempty{}{%else
  \subsection{found test}
  \zahltext
}

\renewcommand{\zahltext}{% from Generator

%% an empty line, could not help with that
%% it comes from an extern source

}
\section{should be empty!!}
\ifzahltextempty{}{%else
  \subsection{but is not. No output whatsoever}
  \zahltext
}

\end{document}

空行相当于\par,在 中会被忽略\hbox(这就是它起作用的原因)。只要 中只有文本\zahltext,这应该不会出现问题,但否则可能会崩溃。

相关内容