삽입된 .m 파일의 인코딩 문제

삽입된 .m 파일의 인코딩 문제

보기 흉한 게시물을 올려서 죄송합니다. 첫 게시물이고 시간이 거의 없습니다. 뒷면에 다음과 같은 작은 문서가 있습니다.

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[polish]{babel}
\usepackage{polski}
\usepackage{listings}
\begin{document}
\lstinputlisting{Test.m}

여기서 "Test.m"은 ANSI 인코딩으로 저장된 Matlab 파일입니다. 이 파일의 내용은 다음과 같습니다.

% Żółć  
% Ściąć  
% Źrebię 

그리고 내가 overleaf에서 얻은 것은 이것이다:

% ????  
% ?ci??   
% ?rebi?  

Test.m 파일의 인코딩을 UTF-8로 변경해도 아무 것도 변경되지 않습니다. 문서 인코딩을 cp1250으로 변경하면 상황이 더욱 악화됩니다. 도와주세요.

편집: \usepackage{fontspec}은 약간의 진전을 이루었습니다. 이제 각 줄에 원하는 문자가 모두 있지만 문제가 있는 문자가 나머지 문자보다 먼저 갑니다. fe: "Ź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}

fontspecLatin Modern 글꼴 모음을 로드합니다. 악센트가 있는 문자에 대한 문자 모양이 있습니다. 또는 \setmainfont, \setsansfont및 를 사용하여 \setmonofont다른 적합한 글꼴을 로드할 수 있습니다.

Overleaf에서 설정 아이콘(오른쪽 상단의 기어 아이콘)을 클릭하여 엔진을 XeLaTeX로 전환한 다음 "LaTeX 엔진" 드롭 목록에서 "XeLaTeX"를 선택할 수 있습니다.

편집: 목록 출력에서 ​​일부 악센트 문자가 "교환"됩니다. 하지만 일반 텍스트(예: 목록 외부)에서는 올바르게 렌더링됩니다. 여기에 설명되어 있습니다.목록의 특수 문자 문제 따라서 목록에 일부 유니코드 문자를 추가해야 합니다 extendedchars(위에 추가된 코드).


대안: 사용minted

상상할 수 있듯이 위의 접근 방식은 다소 다루기 어려울 수 있습니다. listings(또는 )을 사용하는 대신 다음 과 함께 패키지 listingsutf8사용을 고려할 수 있습니다 .mintedxelatex

\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작동한다는 점을 명심하세요.

관련 정보