\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1,T2A]{fontenc}
\usepackage{listings}
\usepackage{dejavu}
\usepackage{upquote}
\lstset{
basicstyle=\ttfamily\footnotesize
}
\begin{document}
\lstinline|4 `div` 2|
\end{document}
4 div 2
wird ohne Backticks angezeigt . Keine Fehler oder Warnungen im Protokoll. Das Hinzufügen textcomp
und Verwenden upquote
von in lstset
anstelle des separaten Pakets hat nicht geholfen.
Kann das jemand reproduzieren (da die Suche nichts findet und es komisch wäre, wenn ich der Erste wäre, der dieses Zeichen bräuchte)?
Und gibt es einen Workaround?
Antwort1
Wenn Sie in die Protokolldatei schauen, sehen Sie
Missing character: There is no ` in font DejaVuSansMono-tlf-ts1!
Das upquote
Paket definiert `
die Erstellung von \textasciigrave
, das aus der TS1-codierten Schriftart übernommen wird. Leider fehlt dieser Schriftzug in DejaVu Mono in der TS1-Codierung. Wir können ihn von Vera Sans übernehmen, die ihn hat (danke an den OP für den Vorschlag cmtt
).
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1,T2A]{fontenc}
\usepackage{listings}
\usepackage{dejavu}
\usepackage{upquote}
\usepackage{etoolbox}
\makeatletter
\chardef\straightquote@code=\catcode`'
\chardef\backquote@code=\catcode``
\catcode`'=\active \catcode``=\active
\patchcmd{\@noligs}
{\textasciigrave}
{\fixedtextasciigrave}
{}{}
\newcommand{\fixedtextasciigrave}{%
\makebox[.5em]{\fontencoding{TS1}\fontfamily{fvs}\selectfont\textasciigrave}% Vera Sans
}
\catcode\lq\'=\straightquote@code
\catcode\lq\`=\backquote@code
\makeatletter
\lstset{
columns=fullflexible,
keepspaces,
basicstyle=\ttfamily\footnotesize,
literate={`}{{{\fixedtextasciigrave}}}1,
}
\begin{document}
\lstinline|4 `div` 2|
\begin{lstlisting}
4 `div` 2
\end{lstlisting}
\end{document}