DejaVu Sans Mono und Upquote

DejaVu Sans Mono und Upquote
\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 2wird ohne Backticks angezeigt . Keine Fehler oder Warnungen im Protokoll. Das Hinzufügen textcompund Verwenden upquotevon in lstsetanstelle 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 upquotePaket 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}

Bildbeschreibung hier eingeben

verwandte Informationen