结合“服从线”和“服从空间”

结合“服从线”和“服从空间”

\obeyspaces和的组合 \obeylines似乎不起作用。特别是,行首的空格不被遵守:

\documentclass{article}
\begin{document}
\obeyspaces
\begin{obeylines}
(?:
    ($f()$ 2)
    (g()
       (++ a)
       (-- a)
       (- ($\sin()$ $c$))
    )
    (+ 10 h())
)
\end{obeylines}
\end{document}

生产

在此处输入图片描述

答案1

在此处输入图片描述

\obeyspaces留下一个空格\space,但这并不能阻止它在垂直模式下被丢弃,而 obelines 会使每一行成为一个段落。

\documentclass{article}
\begin{document}

\begin{obeylines}\obeyspaces\def {\mbox{\space}}%
(?:
    ($f()$ 2)
    (g()
       (++ a)
       (-- a)
       (- ($\sin()$ $c$))
    )
    (+ 10 h())
)
\end{obeylines}
\end{document}

答案2

为什么不使用listings

\documentclass{article}
\usepackage{listings}
\begin{document}
\begin{lstlisting}[
language=Lisp,
mathescape=true,
columns=fullflexible,
basicstyle=\ttfamily,
]
(?:
  ($f()$ 2)
  (g()
    (++ a)
    (-- a)
    (- ($\sin()$ $c$)))
  (+ 10 h()))
\end{lstlisting}
\end{document}

在此处输入图片描述

答案3

这是我的解决方案,使用tabbing环境

\documentclass{article}
\begin{document}
\begin{tabbing}
(\texttt{?:}\=\\
   \> ($f()$~2)\\
   \> ($g()$\=\\
    \> \> (\texttt{++} \=$a$)\\
     \> \> (\texttt{--} \>$b$)\\
      \> \> (\texttt{-}\=\\
      \> \> \> ($\sin()$~$c$)\\
      \>\>)\\
    \>)\\
    \> (+\\
    \>\>10 \\
      \>\>(\\
      \>\>\>$h()$\\
         \>\>)\\
    \>)\\
)
\end{tabbing}
\end{document}

在此处输入图片描述

相关内容