
보기 흉한 게시물을 올려서 죄송합니다. 첫 게시물이고 시간이 거의 없습니다. 뒷면에 다음과 같은 작은 문서가 있습니다.
\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}
fontspec
Latin Modern 글꼴 모음을 로드합니다. 악센트가 있는 문자에 대한 문자 모양이 있습니다. 또는 \setmainfont
, \setsansfont
및 를 사용하여 \setmonofont
다른 적합한 글꼴을 로드할 수 있습니다.
Overleaf에서 설정 아이콘(오른쪽 상단의 기어 아이콘)을 클릭하여 엔진을 XeLaTeX로 전환한 다음 "LaTeX 엔진" 드롭 목록에서 "XeLaTeX"를 선택할 수 있습니다.
편집: 목록 출력에서 일부 악센트 문자가 "교환"됩니다. 하지만 일반 텍스트(예: 목록 외부)에서는 올바르게 렌더링됩니다. 여기에 설명되어 있습니다.목록의 특수 문자 문제
따라서 목록에 일부 유니코드 문자를 추가해야 합니다 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
작동한다는 점을 명심하세요.