
見苦しい投稿で申し訳ありません。初めての投稿ですし、時間もあまりありません。次の小さな文書を Overleaf に載せておきます:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[polish]{babel}
\usepackage{polski}
\usepackage{listings}
\begin{document}
\lstinputlisting{Test.m}
ここで、「Test.m」は ANSI エンコードで保存された Matlab ファイルです。このファイルの内容は次のとおりです。
% Żółć
% Ściąć
% Źrebię
そして、次のページから得た情報は次のとおりです。
% ????
% ?ci??
% ?rebi?
ファイル Test.m のエンコーディングを UTF-8 に変更しても何も変わりません。ドキュメントのエンコーディングを cp1250 に変更すると、状況がさらに悪化します。助けてください。
編集: \usepackage{fontspec} が少し進歩しました。今では各行に必要な文字がすべて含まれていますが、問題のある文字が最初に表示され、残りは表示されません。たとえば、「Źrebię」ではなく「Źęrebi」です。
答え1
以下を使用できますlistingsutf8
:
% Just for convenience of a self-contained example
\begin{filecontents*}{\jobname.m}
% àé
% Żółć
% Ściąć
% Źrebię
\end{filecontents*}
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[polish]{babel}
\usepackage{polski}
\usepackage{listingsutf8}
\begin{document}
\lstinputlisting[inputencoding=utf8/latin2,language=Matlab]{\jobname.m}
\end{document}
答え2
(Overleaf はアップロードされたすべてのテキスト ファイルを UTF-8 に変換します。)
ここでは XeLaTeX が最も確実な選択肢であると思われます。
\documentclass{article}
\usepackage[polish]{babel}
\usepackage{polski}
\usepackage{listings}
\usepackage{fontspec} %% <-- loads Latin Modern
\lstset{extendedchars}
\begingroup
\catcode0=12 %
\makeatletter
\g@addto@macro\lst@DefEC{%
\lst@CCECUse\lst@ProcessLetter
łżąęć % *** add Unicode characters ***
^^00% end marker
}%
\endgroup
\begin{document}
\lstinputlisting{Test.m}
\end{document}
fontspec
は、Latin Modern フォント ファミリをロードします。これには、アクセント付き文字のグリフが含まれています。または、、および を使用して、\setmainfont
他\setsansfont
の\setmonofont
適切なフォントをロードすることもできます。
Overleaf でエンジンを XeLaTeX に切り替えるには、設定アイコン (右上の歯車アイコン) をクリックし、「LaTeX エンジン」ドロップ リストから「XeLaTeX」を選択します。
編集: 一部のアクセント付き文字はリスト出力で「入れ替わって」いますが、通常のテキスト (つまりリストの外側) では正しく表示されます。これはここで説明されています:リスト内の特殊文字に関する問題
したがって、リストにいくつかの Unicode 文字を追加する必要がありますextendedchars
(コードは上記に追加されています)。
代替案: 使用minted
ご想像のとおり、上記のアプローチはかなり扱いにくくなります。listings
(または) を使用する代わりに、を含むパッケージlistingsutf8
を使用することを検討してください。minted
xelatex
\documentclass{article}
\usepackage[polish]{babel}
\usepackage{polski}
\usepackage{minted}
\usepackage{fontspec}
\begin{document}
\inputminted{matlab}{Test.m}
\end{document}
これを自分のマシンでコンパイルする場合は、pdflatex --shell-latex
(または MikTeX を使用している場合は)を実行し、動作させるため--enable-write18
に Python をインストールしておく必要があることに注意してください。minted