Списки в Латексе с UTF-8 (или по крайней мере немецкие умляуты)

F# (много как пример C#)

let p s=let i=0;let l=s.Length;while(++i<l)if(s[i]!=[l-i-1]) 0; 1;;
65
задан Alan Moore 27 August 2009 в 05:36
поделиться

8 ответов

хорошо, теперь найдено какое-то обходное решение:

  1. вместо пакета listings используйте listingsutf8

    \ usepackage {listingsutf8}

  2. скопируйте listings.sty в папку, в которой находится документ

  3. найдите следующие строки

     \ lst @ CCPutMacro
    \ lst @ ProcessOther {"23} \ #
    \ lst @ ProcessLetter {"24} \ textdollar
    \ lst @ ProcessOther {"25} \%
    \ lst @ ProcessOther {"26} \ & 
  4. Введите следующие строки (каждая" регистрирует "один умляут)

     \ lst @ ProcessLetter {" E4} {\ "a}
    \ lst @ ProcessLetter {"F6} {\" o}
    \ lst @ ProcessLetter {"FC} {\" u}
    \ lst @ ProcessLetter {"C4} {\" A}
    \ lst @ ProcessLetter {"D6} {\" O}
    \ lst @ ProcessLetter {"DC} {\" U}
    \ lst @ ProcessLetter {"DF} {\ ss {}} 
  5. Сохраните файл

  6. Используйте

     \ lstset {
     extendedchars = \ истина,
     inputencoding = utf8 / latin1
    } 

для включения отображения символов utf8 в символы latin1

  1. Преобразование окончаний строк исходного файла из windows (\ r \ n) в unix (\ n)
  2. наслаждайтесь

Я знаю, что во многих это некрасиво способ, но это единственное решение, которое пока работает для меня.

11
ответ дан 24 November 2019 в 15:18
поделиться

Возможно, вам потребуется установить входную кодировку документа также как UTF-8. В потоке comp.text.tex обсуждается, как это сделать. Следующее выполняет это в TeXLive в GNU / Linux:

\usepackage[utf8]{inputenc}
-3
ответ дан 24 November 2019 в 15:18
поделиться

Автор пакета предлагает использовать параметр texcl. Иногда помогает, иногда нет.

0
ответ дан 24 November 2019 в 15:18
поделиться

Просто не используйте UTF-8 в латекс, если вы хотите использовать какие-либо списки . Использование Latin1 в ваших документах отобразится немецкие умлауты просто в порядке.

Я пишу свой тезис на немецком языке, используя эту настройку:

% Your language, here German
\usepackage[ngerman]{babel} 
% Will work with Umlauts
\usepackage[latin1]{inputenc}
% Euro characters etc.
\usepackage{textcomp}
% Works perfectly with latin1
\usepackage{listings}
-1
ответ дан 24 November 2019 в 15:18
поделиться

Я могу подтвердить, что решение, предоставленное Яношом, работает почти правильно.

В моем случае мне нужно было использовать испанские символы: á, é, í, ó, ú, ñ, Á, É, Í, Ó, Ú, и я попробовал его решение без результатов, пока я не скомпилировал свой файл с помощью xelatex вместо pdflatex .

В любом случае вам следует изменить listings.sty либо в вашей локальной копии, либо непосредственно в общем файле и добавить следующее:

\lst@CCPutMacro
    \lst@ProcessOther {"23}\#
    \lst@ProcessLetter{"24}\textdollar
    \lst@ProcessOther {"25}\%
    \lst@ProcessOther {"26}\&
        %spanish letters coded in UTF
    \lst@ProcessOther {"E1}{\'a}
    \lst@ProcessOther {"C1}{\'A}
    \lst@ProcessOther {"E9}{\'e}
    \lst@ProcessOther {"C9}{\'E}
    \lst@ProcessOther {"ED}{\'i}
    \lst@ProcessOther {"CD}{\'I}
    \lst@ProcessOther {"F3}{\'o}
    \lst@ProcessOther {"D3}{\'O}
    \lst@ProcessOther {"FA}{\'u}
    \lst@ProcessOther {"DA}{\'U}
    \lst@ProcessOther {"F1}{ñ}
    \lst@ProcessOther {"D1}{Ñ}

В моем файле .tex я использовал следующие параметры для списков:

\usepackage{listingsutf8}
\lstset{
        inputencoding=utf8,
        extendedchars=\true}

Надеюсь, это поможет кому угодно и, возможно, мы сможем создать list.sty, содержащий почти все символы UTF8 ... :)

1
ответ дан 24 November 2019 в 15:18
поделиться

Это должно работать и для других языков (испанский, датский):

\documentclass[
a4paper, %% defines the paper size: a4paper (default), a5paper, letterpaper, ...
12pt %% set default font size to 12 point
]{scrartcl} %% article, see KOMA documentation (scrguide.dvi)

\usepackage[utf8]{inputenc}

\usepackage[T1]{fontenc}
\usepackage{listings}

\lstset{language=Pascal}
\lstset{literate=%
{Ö}{{\"O}}1
{Ä}{{\"A}}1
{Ü}{{\"U}}1
{ß}{{\ss}}2
{ü}{{\"u}}1
{ä}{{\"a}}1
{ö}{{\"o}}1
}

\begin{document}

[Latex: kann man Umlaute in lstlisting verwenden?]
\begin{lstlisting}
Test für Umlaut äöü ÄÖÜ ß So geht es
\end{lstlisting}

\end{document} 
21
ответ дан 24 November 2019 в 15:18
поделиться

Я нашел более простой подход, который работает для меня:

\usepackage{listings}

\lstset{
  literate={ö}{{\"o}}1
           {ä}{{\"a}}1
           {ü}{{\"u}}1
}
57
ответ дан 24 November 2019 в 15:18
поделиться

У меня работает отлично!

Мои 2 цента для французской стороны:

\lst@ProcessOther {"C0}{\`{A}}
\lst@ProcessOther {"C1}{\'{A}}
\lst@ProcessOther {"C2}{\^{A}}
\lst@ProcessOther {"C4}{\"{A}}
\lst@ProcessOther {"C7}{\c{C}}
\lst@ProcessOther {"C8}{\`{E}}
\lst@ProcessOther {"C9}{\'{E}}
\lst@ProcessOther {"CA}{\^{E}}
\lst@ProcessOther {"CB}{\"{E}}
\lst@ProcessOther {"CE}{\^{I}}
\lst@ProcessOther {"CF}{\"{I}}
\lst@ProcessOther {"D4}{\^{O}}
\lst@ProcessOther {"D6}{\"{O}}
\lst@ProcessOther {"D9}{\`{U}}
\lst@ProcessOther {"DB}{\^{U}}
\lst@ProcessOther {"E0}{\`{a}}
\lst@ProcessOther {"E1}{\'{a}}
\lst@ProcessOther {"E2}{\^{a}}
\lst@ProcessOther {"E4}{\"{a}}
\lst@ProcessOther {"E7}{\c{c}}
\lst@ProcessOther {"E8}{\`{e}}
\lst@ProcessOther {"E9}{\'{e}}
\lst@ProcessOther {"EA}{\^{e}}
\lst@ProcessOther {"EB}{\"{e}}
\lst@ProcessOther {"EE}{\^{\i}}
\lst@ProcessOther {"EF}{\"{\i}}
\lst@ProcessOther {"F4}{\^{o}}
\lst@ProcessOther {"F6}{\"{o}}
\lst@ProcessOther {"F9}{\`{u}}
\lst@ProcessOther {"FB}{\^{u}}
2
ответ дан 24 November 2019 в 15:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: