我已经\texttt{}
根据以下命令进行了修改这答案使渲染的文本突出显示:
\let\OldTexttt\texttt
\renewcommand{\texttt}[1]{\OldTexttt{\hl{#1}}}
我对 TeX 并不熟悉,所以我不知道这个命令的作用是什么,也不知道它有什么副作用。我只知道它添加了高亮。显然存在一些问题,因为渲染的带有破折号的文本缺少最后一个字符。
源代码(最小工作示例/按要求/):
\documentclass[12pt,oneside,final]{fithesis2}
\usepackage[czech]{babel}
\usepackage[utf8x]{inputenc}
\usepackage{soul}
\usepackage{xcolor}
\definecolor{gray}{rgb}{0.95,0.95,0.95}
\sethlcolor{gray}
\let\OldTexttt\texttt
\renewcommand{\texttt}[1]{\OldTexttt{\hl{#1}}}
\begin{document}
\texttt{game-server.js}
\end{document}
如果需要,fithesis2
可以从我们大学的网站点击Soubory třídy fithesis2 jako ZIP,约 880 KiB。
编译后的 PDF:
我尝试删除\texttt{}
修改,它解决了缺少字符的问题,但我实际上想保留突出显示。删除\usepackage[czech]{babel}
也有帮助,但我想我需要那一行,因为我用捷克语写作。(?)
删除\texttt{}
修改也会破坏换行,现在在呈现的文本中\texttt{}
根本不会发生换行,所以现在我只剩下一些超出右边缘的线条。
我该怎么做才能拥有这一切——突出显示、工作换行和破折号?
谢谢。
答案1
soul
这是和babel-czech
(和)之间的不兼容性babel-slovak
。当它工作时,soul
寻找一个标准-
,但它找不到它,即使它似乎在那里,因为babel-czech
将连字符更改为活动字符。
因此,仅当在 的参数中发现连字符时才会出现问题\hl
,因为字符数差了一个。
这是一个解决方法。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[czech]{babel}
\usepackage{soulutf8}
\usepackage{xcolor}
\usepackage{regexpatch}
\makeatletter
\regexpatchcmd*{\SOUL@eval}{\cO\-}{\cA\-}{}{}
\makeatother
\definecolor{gray}{rgb}{0.95,0.95,0.95}
\sethlcolor{gray}
\begin{document}
\hl{abc-def}
\hl{abcdef}
\end{document}
这是您的最小示例;请注意我所做的小改动,特别是使用utf8
而不是utf8x
、soulutf8
而不是soul
以及对 的更好的重新定义\texttt
。
\documentclass[12pt,oneside,final]{fithesis2}
\usepackage[czech]{babel}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\usepackage{soulutf8}
\usepackage{letltxmacro}
\usepackage{regexpatch}
\makeatletter
\regexpatchcmd*{\SOUL@eval}{\cO\-}{\cA\-}{}{}
\makeatother
\definecolor{gray}{rgb}{0.95,0.95,0.95}
\sethlcolor{gray}
\LetLtxMacro\OldTexttt\texttt
\DeclareRobustCommand{\texttt}[1]{\OldTexttt{\hl{#1}}}
\begin{document}
\hl{game-server.js}
\texttt{game-server.js}
\end{document}