我知道有很多与此主题相关的帖子,特别是这个,但我无法相信在 latex 中做以下非常基本的事情根本不可能:我编写的问题集包括需要包含 matlabe 代码的答案的问题。我有一个名为 answer 的宏:
\ifthenelse{\theanswerkey=1}{}{%
\def\answer#1{\iffalse#1\fi}}
我将计数器 answerkey 设置为 1 来打印答案键。
然后我想写一些类似的东西
\answer{
if 1 > 0
do this
else
do that
end
}
并在 latex 输出中保留缩进。这似乎完全不可能: \texttt
不尊重缩进,verbatim
在宏中不起作用,也不行lstlisting
。我认为\obeylines
也不起作用。
我是否需要切换回 MS Word,或者是否有某种方法可以强制 Latex 执行这件似乎超出其能力范围的非常简单的事情?
如果有人能帮助我恢复对乳胶破碎的热爱,我将不胜感激。
答案1
这个问题还远远没有明确。我假设你想要一个条件,告诉 LaTeX 打印答案或忽略它。
它是简单。重要的是不是lstlisting
在另一个命令的参数中包含环境,但在条件中这是可以的。
\documentclass{article}
\usepackage{listings}
\newif\ifanswers
%\answerstrue % uncomment if you want to print answers
\lstset{
basicstyle=\ttfamily,
columns=fullflexible,
}
\begin{document}
Write a program.
\ifanswers
\begin{lstlisting}
a+b=c
d-e=f
\end{lstlisting}
\fi
%%% I set \answerstrue just to show it works
\answerstrue
Write a program.
\ifanswers
\begin{lstlisting}
a+b=c
d-e=f
\end{lstlisting}
\fi
\end{document}