Wprowadzanie znaków Unicode w Latexie

Jak wprowadzić znaki Unicode w Latexie? Jakie pakiety muszę zainstalować i jaką sekwencję escape wpisać, aby określić znaki Unicode w pliku źródłowym ASCII?

 246
Author: John D. Cook, 2008-10-20

11 answers

Czy rozważałeś użycie XeTeX ? Jest to adaptacja TeX, która dodaje obsługę Unicode i jest zawarta w najnowszych dystrybucjach TEX Live i MiKTeX. Ten artykuł Wikipedii daje dobre wprowadzenie.

 67
Author: ChrisN,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-20 22:42:30

"Unicode" w tym kontekście może oznaczać zarówno wejście, jak i wyjście. Zakładam, że chcesz wstawić coś w stylu " © " do swojego źródła i zrobić coś znaczącego.

Aby uzyskać pełną obsługę wprowadzania unicode i czcionek unicode, spójrz na XeTeX; jest to łatwe do rozpoczęcia - wystarczy wybrać odpowiednią czcionkę, A znaki unicode na wejściu są bezpośrednio pisane jako glify unicode na wyjściu. Przełączanie silników nie zawsze jest jednak możliwe i czasami będziesz chciał trzymać się pdfTeX dla innych przydatnych funkcji.

Najlepsze, co zwykły LaTeX (tj. oparty na pdfTeX w nowoczesnej dystrybucji) może zrobić, to rozpoznać sekwencje UTF-8 w tekście i rozwinąć makra w oparciu o to, co widzi. Załaduj pakiet inputenc, aby wybrać kodowanie wejściowe UTF-8:

\usepackage[utf8]{inputenc}

Należy zauważyć, że wynikowy plik wejściowy nie może mieć znaku kolejności bajtów (BOM) na początku, w przeciwnym razie nie będzie kompilowany. (Możesz również użyć opcji [utf8x], która ma więcej rozległy zasięg, ale nie jest tak dobrze obsługiwany. Nie mam doświadczenia w korzystaniu z tej opcji.)

Aby zdefiniować zachowanie znaków unicode, użyj polecenia \DeclareUnicodeCharacter, które jest następnie zdefiniowane. Oto przykład powiązania sekwencji kontrolnej \dash ze znakiem wejściowym" -"; tj. literalny em-dash, U + 2014, w źródle:

\DeclareUnicodeCharacter{2014}{\dash}

\dash można wtedy zdefiniować w zwykły sposób; używam:

\DeclareRobustCommand\dash{%
  \unskip\nobreak\thinspace\textemdash\allowbreak\thinspace\ignorespaces}

Definiuje myślnik, który ma małą przestrzeń po obu stronach i pozwala tylko na linia break Po it.

 157
Author: Will Robertson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-24 20:11:14

To jest minimalny przykład, który w końcu zadziałał dla mnie bez użycia XeTeX:

\documentclass{article}
\usepackage[mathletters]{ucs}
\usepackage[utf8x]{inputenc}

\begin{document}
    The vorticity $ω$ is defined as $ω = ∇ × u$.
\end{document}
 58
Author: Roberto Bonvallet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-18 02:05:48

Try \char"hexcode like \char"2012 dla-(rysunek-myślnik). Polecenie to działa w XeLaTeX i prawdopodobnie innych silnikach

 33
Author: Becheru Petru-Ioan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-31 04:36:43

Na wypadek, gdyby którakolwiek z odpowiedzi nie była usatysfakcjonowana: po prostu miałem ten sam problem i wymyśliłem własne małe rozwiązanie. Nie chciałem kopać w innej dystrybucji, ale zostań z pdflatex. Więc utworzyłem pole tekstowe w inkscape , wstawiłem znak, przyciąłem go i zapisałem jako pdf. Możesz dołączyć plik pdf do dokumentu w następujący sposób:

\includegraphics[width=1em]{symbol.pdf}
 11
Author: Moritz H.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-03 11:07:36

Aby korzystać z XeLaTeX (a nawet zarówno pdflatex jak i xelatex na tym samym dokumencie), możesz użyć prostego unixode pakiet :

\documentclass{article}
\usepackage{unixode}

\begin{document}
    The vorticity $ω$ is defined as $ω = ∇ × u$.
\end{document}

Można następnie skompilować dokument za pomocą pdflatex lub za pomocą xelatex.

Uwaga: Pakiet jest w fazie rozwoju; celem jest Obsługa jak największej liczby odpowiedników unicode.

 9
Author: Olivier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-15 08:44:25

Od dziś, zarówno XeTEX jak i LuaTeX pozwolą Ci wprowadzić unicode bez narzekania.

 5
Author: ℝaphink,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-26 08:58:18

Przepraszam, nie jestem ekspertem w tej dziedzinie, ale mam nadzieję, że uda mi się przynajmniej dostarczyć kilka przydatnych wskazówek.

Wiele wczesnych wielojęzycznych wersji LaTeX-a poprzedzało powszechne przyjęcie Unicode, chociaż wygląda na to, że ostatnio nastąpiła konsolidacja wokół Unicode. Możesz więc znaleźć coś przydatnego w konkretnych pakietach wsparcia językowego, np. CJK LaTeX (dla chińskiego, japońskiego i koreańskiego).

Inny Pakiet Unicode dla LaTeX ' A ma nową nazwę (dawniej unicode; teraz ucs). Lista pakietów Unicode znajduje się w https://ctan.org/topic/unicode .

Możesz również rzucić okiem na doskonałą książkę The LaTeX Companion , która zawiera sekcję dotyczącą wielojęzycznego tekstu.
 3
Author: Saphar Koshet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-05 02:23:02

Od 2020 roku Arthur Reutenauer mówi, że XeTeX "przeszedł w tryb konserwacji", a przyszłość rozwoju TeX-a to LuaTeX. Dlatego polecam używanie LuaTeX, gdy możesz, XeTeX, jeśli musisz, I PDFTeX, jeśli tylko to obsługuje twój wydawca.

Teraz, gdy LuaTeX obsługuje złożone Skrypty, główną funkcją XeTeX, której nie ma LuaTeX (od lipca 2020), są tokeny interchar. Istnieje natomiast wiele funkcji LuaTeX, których XeTeX nie mam. Używam rozszerzenia czcionki microtype w prawie każdym utworzonym dokumencie.

Jeśli pytasz, jakiej składni użyć, aby wprowadzić znaki Unicode, możesz użyć składni ^^^^abcd dla U + ABCD, \char"ABCD, \symbol{"ABCD}, lub dowolne z makr zdefiniowanych przez jądro LaTeX lub unicode-math.

 2
Author: Davislor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-24 01:42:51

Jeśli szukasz znaków unicode zdefiniowanych w standardowej czcionce, możesz: Stosować XeLaTeX lub LuaLaTeX.

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{fontspec}
\begin{document}
Print some leaves: {\fontspec{Symbola} %the font name
                                      \symbol{"1F343}} %unicode symbol code                  
\end{document}

Tutaj wpisz opis obrazka

 1
Author: Schroeder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-23 22:50:33

To pytanie jest bardzo niejednoznaczne i uważam, że odpowiedzi są na błędną interpretację. Aby mieć LaTeX UchwytUnicode jest to, co jest odpowiedzią, co rozumiem jest pytany jest jak wprowadzić takie znaki do pliku. A to zależy od używanego edytora... Nawet skopiowałem i wkleiłem niektóre ze stron Wikipedii do xemacs, aby to obejść. Metody podane w Unicode FAQ zderzają się z definicjami xemacs lub są interpretowane losowo przez gnome-terminal :-(

 0
Author: vonbrand,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-14 20:50:00