Wie kann ich unter diesen Umständen Unicode verwenden?

Wie kann ich unter diesen Umständen Unicode verwenden?

Ich verstehe nicht, wie ich ▼ (U+25BC; ausgefülltes und umgekehrtes Dreieck) in meine XeLaTeX-Datei bekomme. Die folgenden Zeilen sind Teil meines XeLaTeX, der für dieses Problem relevant zu sein scheint. Ich möchte die Datei ändern, um ▼ (U+25BC; ausgefülltes und umgekehrtes Dreieck) zu bekommen, aber es geht nicht weiter. Ich nehme an, dass in der Datei viele Pakete miteinander kämpfen. Ich wäre sehr dankbar, wenn Sie mir freundlicherweise ein gutes Mittel für diesen Fall mitteilen würden.

Zu Ihrer Information: Ich verwende TeXShop Version 4.31 (XeLaTeX) basierend auf MacBook Pro. Ich sollte in dieser Datei englische, Sanskrit-, tibetische und traditionelle chinesische Buchstaben verwenden.

\usepackage{polyglossia, fontspec, xunicode} 
\usepackage[Apara, Bpara,Cpara]{ednotes} 
\usepackage{setspace}
\setmainlanguage{english}
\setotherlanguages{sanskrit}
\usepackage{xeCJK}

\setCJKsansfont[Path=/Users/XXX/Library/Fonts/]{NotoSerifCJK.ttc}

\usepackage{ucs} 
\usepackage[utf8x]{inputenc}
\usepackage{textcomp} 

\DeclareUnicodeCharacter{"2100}{\textcelsius}
\DeclareUnicodeCharacter{"2103}{\textcelsius}
\DeclareUnicodeCharacter{"25BC}{\textcelsius}

%%%%%Sigla and Symbols
\usepackage{enumitem}
\usepackage{setspace}
\usepackage{ltablex}

%%%%%critical_apparatus
\usepackage{bbding}
\usepackage{ulem}
\usepackage{xstring}
\usepackage{ifthen}
\usepackage{wasysym} %This line is related to \astrosun ⊙

\begin{document}

\char "2100\relax

\char "2103\relax

\char "25BC\relax

\end{document}

Antwort1

Hier ist ein vereinfachtes MWE:

\documentclass{standalone}
\usepackage{polyglossia} % Includes fontspec
\usepackage{newunicodechar}

\defaultfontfeatures{Scale=MatchUppercase}

\setmainlanguage{english}
\setotherlanguage{sanskrit}
% \setmainfont, \newfontfamily\devanagarifontsf, \setCJKfont, etc.
% Alternatively, you could use babel.

\newfontfamily\symbolfont{DejaVu Sans Mono}

\newunicodechar{^^^^25bc}{{\symbolfont\symbol{"25BC}}} % ▼

\begin{document}
▼{^^^^25bc}
\end{document}

Beispiel für eine Black Wedge-Schriftart

Dies verwendet fontspec(das von geladen wird polyglossia), um eine Symbolschriftart einzurichten, die die Glyphe enthält, und newunicodecharum für dieses Symbol zu dieser Schriftart zu wechseln. (Wenn Sie es auch im Mathematikmodus verwenden möchten, bräuchten Sie einen komplexeren Befehl mit \ifmmode, aber das scheint nicht der Fall zu sein.)

Ein Problem ist, dass Sie anscheinend Code aus einigen Beispielen einfügen, die nicht miteinander kompatibel sind. Beispielsweise würden Sie nur und mit älteren 7- und 8-Bit-Schriftarten verwenden inputenc, nicht mit modernen Unicode-Schriftarten. Ich empfehle Ihnen, alle Pakete aus Ihrer Präambel zu entfernen, bei denen Sie nicht sicher sind, ob Sie sie benötigen \DeclareUnicodeCharacter.textcomp

Eine andere Möglichkeit ist, dass \charoder \symboldas Glyph an der angegebenen Position in der aktuellen Schriftart auswählt. Das ist, was Sie wollen, wenn Sie den Befehl in Ihrer Präambel definieren, aber nicht, wenn Sie ihn in Ihrem Dokument verwenden. Sie setzen das Zeichen aktiv, sodass es durch einen Befehl ersetzt wird, und möchten Code, den die TeX-Engine so behandelt, als hätten Sie das Zeichen selbst eingegeben. Das ist ^^^^xxxx.

Sie kombinieren auch verschiedene Pakete für die Internationalisierung, was für Sie funktionieren kann oder auch nicht. Sie könnten versuchen, babelalle \babelfontvier dieser Sprachen mit einer einheitlichen Schnittstelle zu unterstützen.

Mehrsprachige Vorlage

Auf die Folgefrage in den Kommentaren gibt es zwei Antwortmöglichkeiten, je nachdem was du möchtest.

Wenn Sie so etwas wie ein Symbolwörterbuch erstellen und nur eigenständige Glyphen benötigen, möchten Sie wahrscheinlich dieucharclassesPaket. Damit können Sie eine Schriftart für Ihre obskuren chinesischen Schriftzeichen wie Babelstone Han festlegen, eine andere für Ihre astrologischen Symbole und so weiter. Dann geben Sie eine Glyphe ein und XeTeX zeigt jede Glyphe automatisch in der richtigen Schriftart an.

Wenn Sie wirklich ganze Wörter und Passagen in allen vier Sprachen setzen müssen, können Sie dies mit der folgenden Präambel in tun babel. Dazu ist XeLaTeX erforderlich. (Das experimentelle HarfTeX könnte auch funktionieren.) Ich habe auch Befehle und Umgebungen mit Namen wie eingerichtet polyglossia.

\documentclass{article} % Or whatever is appropriate.
% The next line is only to make the output narrower, to fit into an image
% on TeX.SX:  Remove geometry from your document and just give the paper
% size as an option to the document class.
\usepackage[paperwidth=10cm]{geometry}
\usepackage{babel} % You would need the bidi option if using RTL.
\usepackage{newunicodechar} % For \newunicodechar
\usepackage{fontspec} % For \defaultfontfeature

% This allows you to typeset passages in these langauges.  If you only need
% to display individual, stand-alone glyphs, `ucharclasses` is simpler and
% allows you to just type the leeters in as UTF-8.
\babelprovide[import, main, language=Default]{english}
\babelprovide[import]{sanskrit-devanagari}
\babelprovide[import]{chinese-traditional}
\babelprovide[import]{tibetan}

\defaultfontfeatures{Scale=MatchUppercase}
% Set these to your fonts of choice:
\babelfont{rm}
          [Scale=1.0, Ligatures=Common]{Linux Libertine O}
\babelfont{sf}
          [Ligatures=Common]{Linux Biolinum O}
\babelfont[chinese-traditional]{rm}
          [Ligatures={Common, Discretionary}]{Noto Serif CJK TC}
\babelfont[chinese-traditional]{sf}
          {Noto Sans CJK TC}
\babelfont[sanskrit-devanagari]{rm}
          [Language=Default]{Noto Serif Devanagari}
\babelfont[sanskrit-devanagari]{sf}
          [Language=Default]{Noto Sans Devanagari}
\babelfont[tibetan]{rm} 
          [Language=Default]{Noto Sans Tibetan}
\babelfont[tibetan]{sf}
          [Language=Default]{Noto Sans Tibetan}

\newfontfamily\symbolfont{Linux Libertine}

% You might or might not need to set up these symbols specifically.  They
% might just work.
\newunicodechar{^^^^2100}{{\symbolfont\symbol{"2100}}} % ℀
\newunicodechar{^^^^2103}{{\symbolfont\symbol{"2103}}} % ℃
\newunicodechar{^^^^25bc}{{\symbolfont\symbol{"25BC}}} % ▼

\newcommand\textenglish[1]{\foreignlanguage{english}{#1}}
\newcommand\textchinese[1]{\foreignlanguage{chinese-traditional}{#1}}
\newcommand\textsanskrit[1]{\foreignlanguage{sanskrit-devanagari}{#1}}
\newcommand\texttibetan[1]{\foreignlanguage{tibetan}{#1}}

% Enables \begin{chinese}, etc., for full paragraphs in another language.
\newenvironment{english}%
{\begin{otherlanguage}{english}}%
{\end{otherlanguage}}

\newenvironment{chinese}%
{\begin{otherlanguage}{chinese-traditional}}%
{\end{otherlanguage}}

\newenvironment{sanskrit}%
{\begin{otherlanguage}{sanskrit-devanagari}}%
{\end{otherlanguage}}

\newenvironment{tibetan}%
{\begin{otherlanguage}{tibetan}}%
{\end{otherlanguage}}


\begin{document}
This document is in English, \textsanskrit{संस्कृतम्},
\textchinese{繁體字} and \texttibetan{བོད་སྐད་}, brought to you by the symbols
{^^^^2100}, {^^^^2103} and {^^^^25bc}.
\end{document}

Noto-Schriftartenbeispiel

Die verwendete ProbeGoogles Noto-Schriftarten,die Sie möglicherweise herunterladen müssen.

Sie möchten Symbole wie Grad Celsius vielleicht nicht auf diese Weise definieren: Sie möchten wahrscheinlich, dass sie mit der aktuell ausgewählten Schriftart übereinstimmen. Wenn Sie jedoch ein paar Glyphen einfügen müssen, die Ihre Hauptschriftart nicht hat, zeigen Ihnen die Beispiele, wie das geht.

Ich habe aufgrund ihrer Eigenheiten ein paar Optionen für die Schriftarten festgelegt. Beispielsweise Language=Defaultsind alle Optionen vorhanden, um Warnmeldungen zu unterdrücken, dass die Schriftart diese bestimmte Sprache nicht unterstützt. Dinge wie Notos tibetische Schriftarten, die das tibetische Sprach-Tag nicht unterstützen und DFLTstattdessen verwenden, sind harmlos und können einfach ignoriert werden. Wenn Sie sich mit Dingen wie beschäftigen möchten Numbers=OldStyle, otfinfoist der Befehl eine gute Möglichkeit, zu überprüfen, welche Funktionen eine Schriftart unterstützt.

Minimierung des MWE

Sie fragen, welches dieser Pakete Sie nicht benötigen. Sie benötigen inputencoder definitiv nicht textcomp. Diese Pakete sind für ältere 8-Bit-Schriftarten. Sie benötigen polyglossiaoder nur, xeCJKwenn Sie nicht verwenden babel, aber Sie finden es vielleicht xeCJKpraktisch, wenn Sie nur ein ideografisches Skript benötigen. Sie müssen nicht fontspeczusätzlich zu laden polyglossia, da es automatisch geladen wird, und wenn Sie es zweimal laden, besteht die Gefahr eines Optionskonflikts. (Wenn Sie es wirklich möchten, laden Sie vorher, nicht danach.) Sie möchten oder fontspecwahrscheinlich nicht .ucsxunicode

Die Pakete bbdingund wasysymladen beide eine Symbolschriftart, Sie benötigen sie also nicht, wenn die von Ihnen verwendeten Symbole Unicode sind. Der Kommentar legt beispielsweise nahe, dass wasysymfür das astrologische Sonnensymbol geladen wird, das ☉ (U+2609) ist. Sie könnten das Zeichen immer noch zu einem Alias ​​für das \astrosunSymbol von machen wasysym, aber ich würde Ihnen empfehlen, wenn möglich bei Unicode zu bleiben. Sie erhalten eine korrekte Skalierung und können aus Ihrer PDF-Datei kopieren.

Die anderen Pakete sehen wichtiger aus, aber Sie könnten versuchen, eines zu entfernen und zu sehen, ob etwas kaputt geht. Wenn nicht, wird es wahrscheinlich nicht wirklich verwendet.

Antwort2

Vermeiden Sie zunächst xunicode, ucs, inputencund , \DeclareUnicodeCharacterwenn Sie XeLaTeX verwenden.

Es ist ziemlich seltsam, U+2100 ACCOUNT OF oder U+25BC BLACK DOWN-POINTING TRIANGLE zuzuordnen \textcelsius.

Die Schriftart Noto Serif CJK enthält die Glyphen für U+2100 und U+25BC, aber diese Zeichen lösen keinen Wechsel zur CJK-Schriftart aus, daher sollte eine solche Schriftart explizit ausgewählt werden.

Wie andere bereits erwähnt haben, newunicodecharkann dies die Aufgabe erledigen:

\documentclass{article}
\usepackage{polyglossia, fontspec}
\usepackage{xeCJK}

\usepackage[Bpara,Cpara]{ednotes}
\usepackage{setspace}

%%%%%Sigla and Symbols
\usepackage{enumitem}
\usepackage{ltablex}

%%%%%critical_apparatus
\usepackage{bbding}
\usepackage{ulem}
\usepackage{xstring}
\usepackage{ifthen}
\usepackage{wasysym} %This line is related to \astrosun ⊙
\usepackage{newunicodechar}

\setmainlanguage{english}
\setotherlanguages{sanskrit}

\setCJKmainfont{NotoSerifCJK}[Path=./,Extension=.ttc]
\newfontfamily{\various}{NotoSerifCJK}[Path=./,Extension=.ttc]

\newunicodechar{℀}{{\various ℀}}
\newunicodechar{▼}{{\various ▼}}

\begin{document}




\end{document}

Bildbeschreibung hier eingeben

Übrigens ist es nicht möglich, die serifenlose CJK-Schriftart festzulegen, ohne die Hauptschriftart festzulegen. Außerdem ist Noto Serif CJK keine serifenlose Schriftart.

Natürlich können Sie für die Symbole, die in Ihrer Hauptschriftart fehlen, andere Schriftarten verwenden.

Antwort3

Da Sie bereits laden , können Sie aus diesem Paket wasysymverwenden . Es ist etwas größer als das Unicode-Zeichen.\DOWNarrow

MWE, mit Dank anDavislor:

\documentclass{standalone}
\usepackage{polyglossia} % Includes fontspec
\usepackage{newunicodechar}
\usepackage{wasysym}

\defaultfontfeatures{Scale=MatchUppercase}

\setmainlanguage{english}
\setotherlanguage{sanskrit}
% \setmainfont, \newfontfamily\devanagarifontsf, \setCJKfont, etc.
% Alternatively, you could use babel.

\newfontfamily\symbolfont{DejaVu Sans Mono}

\newunicodechar{^^^^25bc}{{\symbolfont\symbol{"25BC}}} % ▼

\begin{document}
▼{^^^^25bc}\DOWNarrow
\end{document}

Ergebnis:

Bildbeschreibung hier eingeben

verwandte Informationen