내 질문은 다음 두 가지와 관련이 있습니다
하지만 특히 큰따옴표 문자(ASCII 10진수 코드 34)에 대해 묻고 있습니다. 내 목록에 곱슬머리로 표시됩니다. 대신 곧은 큰따옴표를 어떻게 얻을 수 있나요?
MWE:
\documentclass{article}
\usepackage{textcomp,upquote,listings}
\lstset{upquote=true}
\begin{document}
\begin{lstlisting}
echo "Hello, world!"
\end{lstlisting}
\end{document}
생산하다
upquote
패키지가 작은따옴표에만 적용된다는 것을 이해합니다 . 큰따옴표에도 적용하려면 어떻게 해야 하나요?
답변1
\usepackage[T1]{fontenc}
서문에 추가하기만 하면 됩니다 . ' key 를 upquote
로드 textcomp
하고 설정한 경우에는 패키지가 필요하지 않습니다 .listings
upquote
true
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{listings}
\lstset{upquote=true}
\begin{document}
\begin{lstlisting}
echo "Hello, world!"
\end{lstlisting}
\end{document}
답변2
나에게는 위의 솔루션이 작동하지 않았습니다.
주요 문제는 listings.sty
922-943행에서 볼 수 있는데, 여기서는 특수 문자를 처리하는 디스패치 테이블이 생성되었지만 큰따옴표는 작은따옴표에 대해서만 수행됩니다.
프리앰블에 다음을 추가하여 이 문제를 해결할 수 있습니다.
\usepackage{listings}
\lstset{upquote=true}
% ...
\makeatletter
\lst@CCPutMacro
\lst@ProcessOther {"22}{\lst@ifupquote \textquotedbl
\else \char34\relax \fi}
\@empty\z@\@empty
\makeatother
% ...
어느 원숭이가 그 테이블을 패치하는지.
경고 사항: 이것은 목록 패키지의 내부 매크로 수정에 의존하는 끔찍한 해킹입니다. 이는 임의로 완전히 중단될 수 있으며 TeX 배포판에서는 작동하지 않을 수도 있습니다.
답변3
XeLaTeX를 사용하고 있고 글꼴을 변경하려는 경우(예: 기본 타자기 글꼴 사용) fontspec
다음과 같이 패키지를 사용하여 TeX 합자를 해제합니다.
% !TEX TS-program = xelatex
% !TEX encoding = UTF-8 Unicode
\documentclass{article}
\usepackage{fontspec}
\usepackage{listings}
\lstset{basicstyle=\ttfamily\addfontfeature{Mapping=no-mapping-ligtex}}
\begin{document}
\begin{lstlisting}
echo "Hello, world!"
\end{lstlisting}
\end{document}
답변4
큰따옴표가 둥근 모양으로 나타나는 이유 중 하나는 TeX 합자를 사용하기 때문입니다. 이는 이미AthanasiusOfAlex의 답변. 내가 발견한 바와 같이 이러한 합자를 (종종 실수로) 활성화할 수 있는 한 가지 방법은 다음과 같은 줄을 사용하는 것입니다.
\defaultfontfeatures{Ligatures=TeX}
이 줄은 TeX 합자가 활성화되어 있음을 보장합니다.모두이후에 를 사용하여 정의된 고정 폭 글꼴을 포함한 글꼴 \setmonofont
. 그러면 다른 답변을 사용하여 해결할 수 없는 목록에 둥근 따옴표가 표시됩니다.
그런 줄이 있으면 제거하십시오. 패키지 는 이미 및 명령 fontspec
에 대해 기본적으로 TeX 합자를 활성화합니다 . 이는 아마도 사용자가 사용하는 글꼴에 해당할 것입니다.\setmainfont
\setsansfont
하다합자를 원합니다. (이 내용은 2부 1절에 언급되어 있습니다.패키지 문서.)
예를 들어 코드 목록에 엠 대시(em dash)를 입력하려면 —
하이픈 세 개를 입력하는 대신 실제 유니코드 기호( ) 를 사용하세요 ---
.