lstlisting 环境存在问题

lstlisting 环境存在问题

我在写

\documentclass{beamer}
\usepackage{listings}
\begin{frame}
  \begin{lstlisting}[language=bash]
      #!/bin/bash
      echo "Hello,world!"
  \end{lstlisting}
 \end{frame}

但输出是

在此处输入图片描述

如图所示,感叹号,舍邦,已转换为点。

我该如何修复它?

使用的编译器是 XeLaTex。

答案1

一个完整的最小工作示例如下所示:

\documentclass{article}
\usepackage{listings}
\begin{document}
\begin{lstlisting}[language=bash]
#!/bin/bash    
echo "Hello,world!"    
\end{lstlisting}
\end{document}

这与 XeLaTeX 编译良好:

结果

答案2

从 XeLaTex 更改为 LuaLaTex 后问题已解决。

答案3

在下面beamer您的使用存在一些限制:

  1. listings里面frame需要你使用一个fragile设置:

    \begin{frame}[fragile]
    \begin{lstlisting}[..]
    ...
    \end{lstlisting}
    \end{frame}
    
  2. 你需要结局frame-\end{frame}用自己的台词来结尾没有缩进。

  3. 环境内的缩进lstlisting始终按字面意思解释,因为列表可能必须符合某些缩进规则,或者只是为了提高可读性。所以对于你的情况,我不会使用任何缩进。

这是一个展示完整用法的最小示例:

在此处输入图片描述

\documentclass{beamer}
\usepackage{listings}
\begin{document}
\begin{frame}[fragile]
\begin{lstlisting}[language=bash]
#!/bin/bash
echo "Hello,world!"
\end{lstlisting}
\end{frame}
\end{document}

相关内容