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사용해도 도움이 되지 않았습니다.upquotelstset

누구든지 그것을 재현할 수 있습니까(검색해도 아무 것도 찾을 수 없고 이 캐릭터가 필요한 첫 번째 사람이라면 이상할 것이기 때문입니다)?

해결 방법이 있나요?

답변1

로그 파일을 보면 알 수 있습니다.

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

패키지 는 TS1 인코딩된 글꼴에서 가져온 을 생성하도록 upquote정의합니다 . 불행하게도 TS1 인코딩의 DejaVu Mono에는 이 문자가 없습니다. 이를 가지고 있는 Vera Sans에서 빌릴 수 있습니다(제안해 주신 OP에게 감사드립니다 ).`\textasciigravecmtt

\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}

여기에 이미지 설명을 입력하세요

관련 정보