DejaVu Sans Mono и апкайп

DejaVu Sans Mono и апкайп
\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без обратных кавычек. Никаких ошибок или предупреждений в журнале. Добавление textcompи использование upquotein lstsetвместо отдельного пакета не помогло.

Может ли кто-нибудь воспроизвести его (поскольку поиск ничего не находит, и было бы странно, если бы я был первым, кому понадобился этот персонаж)?

И есть ли обходной путь?

решение1

Если вы посмотрите в файл журнала, вы увидите

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

Пакет upquoteопределяет , `чтобы произвести \textasciigrave, который взят из шрифта в кодировке TS1. К сожалению, этот глиф отсутствует в DejaVu Mono в кодировке TS1. Мы можем позаимствовать его у Vera Sans, у которой он есть (спасибо OP за то, что предложил его 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}

введите описание изображения здесь

Связанный контент