我有以下 LaTeX 代码:
some text \lstinline!u <= 1! some text
在我的输出中,两个字符<=
自动合并为一个“小于或等于”字符(即 Unicode U+2264
)。如何去掉这个特性?它看起来不错,但不能反映原始语法。
一些备注:就我而言,我使用的是 Modelica 语言的自定义定义。但是,当切换到预定义语言(即 Pascal)时,我得到了完全相同的行为。
答案1
我终于弄清楚了问题出在哪里。为了说明清楚,我将从 MWE 开始,做自动转换列表内的不等式:
\documentclass[%
final, % fertiges Dokument
% --- Paper Settings ---
paper=a4% [Todo: add alternatives]
paper=portrait, % landscape
pagesize=auto, % driver
fontsize=11pt,%
version=last, %
]{scrbook}
\usepackage{listings}
\usepackage{textcomp}
\lstset{%
breaklines=true,
showstringspaces=false, % do not emphasize spaces in strings
tabsize=4, % number of spaces of a TAB
mathescape=false,escapechar=§, % escape to latex with §...§
upquote=true, % upright quotes
aboveskip={1.5\baselineskip}, % a bit of space above listings
columns=fixed, % nice spacing
%
% the following is for replacing some vhdl relations like >= or ~=
% by the corresponding LaTeX symbols, which are much easier to read ...
literate=%
{~}{{$\neg$}}1 % \neg
% {-}{{-}}1 % prevent ``-'' being replaced by math minus
{<=}{{\tiny$\leq$}}1 % \leq
{>=}{{\tiny$\geq$}}1 % \geq
{~=}{{\tiny$\neq$}}1 % \neq
{delta}{{\tiny$\Delta$}}1% \Delta
{iend}{{\fontfamily{pcr}\selectfont end}}3% end when indexing matrix elements
}
\begin{document}
Lorem ipsum \lstinline!x <= 0!.
\end{document}
显然,该行为是使用 \lstset 中的“literate”子句实现的。但是,在我的例子中,我明确地没有想要转换,因为它不反映原始语法。问题是上面的代码是包含在我文档中的 .sty 文件的一部分。我不知道那个 .sty 文件里面发生了什么,所以我花了几个小时研究如何抑制转换。当我找到文件时,删除有问题的行只需几秒钟。