목록에서 곧은 큰따옴표를 어떻게 얻을 수 있나요?

목록에서 곧은 큰따옴표를 어떻게 얻을 수 있나요?

내 질문은 다음 두 가지와 관련이 있습니다

하지만 특히 큰따옴표 문자(ASCII 10진수 코드 34)에 대해 묻고 있습니다. 내 목록에 곱슬머리로 표시됩니다. 대신 곧은 큰따옴표를 어떻게 얻을 수 있나요?

MWE:

\documentclass{article}
\usepackage{textcomp,upquote,listings}
\lstset{upquote=true}
\begin{document}
\begin{lstlisting}
echo "Hello, world!"
\end{lstlisting}
\end{document}

생산하다

제공된 MWE의 출력 닫는 둥근 따옴표가 포함되어 있습니다.

upquote패키지가 작은따옴표에만 적용된다는 것을 이해합니다 . 큰따옴표에도 적용하려면 어떻게 해야 하나요?

답변1

\usepackage[T1]{fontenc}서문에 추가하기만 하면 됩니다 . ' key 를 upquote로드 textcomp하고 설정한 경우에는 패키지가 필요하지 않습니다 .listingsupquotetrue

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

\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.sty922-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)를 입력하려면 하이픈 세 개를 입력하는 대신 실제 유니코드 기호( ) 를 사용하세요 ---.

관련 정보