考虑以下 MWE:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\begin{document}
a << b
\end{document}
编译时,两个“ <
”字符将被单个“开头的法语引号”字符替换(抱歉,不知道它的名字)。
有没有办法避免这种行为(除了使用数学模式)?
编辑a $<<$ b
:我知道我可以使用或(如评论中所建议的)或逐字模式来解决a {<}< b
。我的问题可以改写为:
有没有办法告诉 Latex 不要进行这些自动字符替换?
編輯2:用例:我在操作系统上发布一些课程文本文档,并将其附加到写入文件中a >> b
。
答案1
答案2
要局部禁用连字符,可以使用以下几种方法:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\begin{document}
a << b
a <{}< b
a {<}< b
a <\/< b
a <\textcompwordmark< b
\end{document}
我更喜欢带有 的那个,因为它独立于引擎; LuaTeX 中的\/
相同示例(但带有)fontspec
\documentclass{article}
\usepackage{fontspec}
\begin{document}
a << b
a <{}< b
a {<}< b
a <\/< b
a <\textcompwordmark< b
\end{document}
会给
因为 LuaTeX 在进行连字符时会忽略括号。
当然,最好的办法是定义一个个人命令,这样您就可以修改渲染而不必追逐文档<\/<
:
\newcommand\textll{<\/<}
和
a \textll{} b
当有人告诉您必须在小于号之间应用一些负向字距调整时,您会很高兴选择了一种抽象方法。
旁注:这假设不使用 OT1 编码;使用它,输入<<
不会产生连字,而是 ¡¡(两个反向感叹号);<<
左 guillemet 的连字仅在 T1 编码(可能还有 LY1)中有效,并且fontspec
对于使用选项加载的字体,以及(Xe|Lua)LaTeX 中有效Ligatures=TeX
。
答案3
在评论中,我们指定这实际上是 bash 源代码。因此 LaTeX 应该知道它是 bash 源代码。例如,可以使用 listings 包来完成此操作:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{listings}
\lstset{basicstyle=\ttfamily}
\begin{document}
As listing:
\begin{lstlisting}[language=bash]
a << b
\end{lstlisting}
Inline:
\lstinline[language=bash]{a << b}
or
\lstinline[language=bash]/a << b/
\end{document}