DejaVu Sans Mono y citar

DejaVu Sans Mono y citar
\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}

se muestra 4 div 2sin las comillas invertidas. No hay errores ni advertencias en el registro. Agregar textcompy usar upquoteen lstsetlugar del paquete separado no ayudó.

¿Alguien puede reproducirlo (ya que la búsqueda no encuentra nada y sería extraño si yo fuera el primero en necesitar este personaje)?

¿Y existe alguna solución?

Respuesta1

Si miras en el archivo de registro, verás

Missing character: There is no ` in font DejaVuSansMono-tlf-ts1!

El upquotepaquete define `producir \textasciigrave, que se toma de la fuente codificada TS1. Desafortunadamente, este glifo falta en DejaVu Mono en la codificación TS1. Podemos pedirlo prestado a Vera Sans que lo tiene (gracias al OP por sugerirlo 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}

ingrese la descripción de la imagen aquí

información relacionada