私の質問は次の2つに関連しています
しかし、私は特に二重引用符文字 (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}
必要ないことに注意してください。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
私にとって、上記の解決策は機能しませんでした。
主な問題は、 の 922 行目から 943 行目にありますlistings.sty
。ここでは、特殊文字を処理するディスパッチ テーブルが作成されますが、アップクォートは単一引用符に対してのみ実行されます。
これを修正するには、プリアンブルに次の内容を追加します。
\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
二重引用符が波型として表示される理由の1つは、TeX合字の使用です。これはすでにAthanasiusOfAlex の回答私が発見したように、これらの合字を(しばしば意図せずに)有効にする方法の1つは、次のような行を使用することです。
\defaultfontfeatures{Ligatures=TeX}
この行はTeX合字が有効になっていることを保証します。全てフォント(その後 を使用して定義される等幅フォントを含む)です\setmonofont
。これにより、リストに中括弧が表示されますが、これは他のどの回答を使用しても解決できません。
そのような行がある場合は削除してください。パッケージでは、コマンドとコマンドに対してfontspec
TeX合字がデフォルトで有効になっています。これは、おそらく、\setmainfont
\setsansfont
する合字が欲しい。(これは、パッケージドキュメント。
コード リストに em ダッシュ (例) を入力する場合は、—
3 つのハイフンを入力する代わりに、実際の Unicode シンボル ( )を使用します---
。