如何使用 lstlisting 包排版——?

如何使用 lstlisting 包排版——?

考虑这个小例子:

\documentclass[a4paper,10pt]{article}
\usepackage[utf8x]{inputenc}
\usepackage{listings} %for listings of the source code

\begin{document}

\lstset{language=sh}
\begin{lstlisting}
--   <-- Works!
a--b <-- Does not work!
-{}- <-- Won't help!
\end{lstlisting}

\end{document}

如何强制lstlisting排版--而不是始终使用长划线?此外,如何增加两个连续划线之间的距离?

答案1

您可以使用该选项literate来修改输出:

\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{listings} %for listings of the source code

\begin{document}

\lstset{language=sh,literate={--}{{-{}-}}1}
\begin{lstlisting}
--   <-- Works!
a--b <-- Does not work!
-{}- <-- Won't help!
\end{lstlisting}

\end{document}

此外,您不应该使用该选项utf8x。可以在问题中找到解释utf8x 与 utf8 (输入)

答案2

使用

\lstset{language=sh,basicstyle=\ttfamily}

如果您想使用粗体字符,请使用 Bera Mono 或 Luxi Mono 等字体!

\documentclass[10pt]{standalone}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[scaled=0.83]{beramono}
\usepackage{listings} %for listings of the source code
\lstset{basicstyle=\ttfamily}
\begin{document}

\lstset{language=sh}
\begin{lstlisting}
--    # Works!
a--b  # Works
if else fi # Keywords work too! 
\end{lstlisting}

\end{document}

答案3

首先,如果您使用长破折号作为选项,那么效果如下:

a --b

其次,列表的比例字体选择很丑陋。不幸的是,CM 打字机没有粗体或斜体变体,因此仅设置\lstset{basicstyle=\ttfamily}不是您想要的。我更喜欢 Courier,它能给出更令人满意的结果:

\documentclass[10pt]{standalone}
\usepackage[utf8x]{inputenc}
\usepackage{courier}
\usepackage{listings} %for listings of the source code
\lstset{basicstyle=\ttfamily}
\begin{document}

\lstset{language=sh}
\begin{lstlisting}
--    # Works!
a--b  # Works
if else fi # Keywords work too! 
\end{lstlisting}

\end{document}

在此处输入图片描述

相关内容