Как я могу использовать Unicode в этом состоянии?

Как я могу использовать Unicode в этом состоянии?

Я не понимаю, как получить ▼ (U+25BC; заполненный и перевернутый треугольник) в моем файле XeLaTeX. Следующие строки являются частью моего XeLaTeX, который, кажется, имеет отношение к этой проблеме. Я хочу изменить файл, чтобы получить ▼ (U+25BC; заполненный и перевернутый треугольник), но это не дает результата. Я предполагаю, что многие пакеты борются друг с другом в файле. Я был бы очень признателен, если бы вы любезно поделились каким-нибудь хорошим средством для этого случая.

Что касается вашей информации, я использую TeXShop версии 4.31 (XeLaTeX) на базе MacBook Pro. В этом файле я должен использовать английские, санскритские, тибетские и традиционные китайские буквы.

\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}

решение1

Вот упрощенная модель 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}

Образец шрифта Black Cleo

Он использует fontspec(который загружается с помощью polyglossia) для настройки шрифта символов, содержащего глиф, и newunicodecharдля переключения на этот шрифт для этого символа. (Если бы вы также хотели использовать его в математическом режиме, вам бы потребовалась более сложная команда с \ifmmode, но, похоже, вам это не нужно.)

Одна из проблем в том, что вы, похоже, вставляете код из пары примеров, которые несовместимы друг с другом. Например, вы будете использовать только inputenc, \DeclareUnicodeCharacterи textcompс устаревшими 7- и 8-битными шрифтами, а не с современными шрифтами Unicode. Я рекомендую вам убрать из преамбулы все пакеты, в необходимости которых вы не уверены.

Другой вариант — \charили \symbolвыбирает глиф в заданной позиции в текущем шрифте. Это то, что вам нужно при определении команды в преамбуле, но не при использовании ее в документе. Вы делаете символ активным, поэтому он заменяется командой, и хотите получить код, который движок TeX обрабатывает так, как будто вы ввели сам символ. Это ^^^^xxxx.

Вы также объединяете различные пакеты для интернационализации, которые могут работать или не работать для вас. Вы можете попробовать babelподдерживать \babelfontвсе четыре языка с помощью единого интерфейса.

Многоязычный шаблон

В комментариях есть два возможных ответа на дополнительный вопрос, в зависимости от того, чего вы хотите.

Если вы создаете что-то вроде словаря символов и вам нужны только отдельные глифы, вам, вероятно, понадобитсяucharclassesПакет. Это позволяет вам назначить шрифт для ваших малоизвестных китайских иероглифов, таких как Babelstone Han, другой для ваших астрологических символов и т. д. Затем вы вводите глиф, и XeTeX автоматически отображает каждый глиф из нужного шрифта.

Если вам действительно нужно набирать целые слова и отрывки на всех четырех языках, следующая преамбула позволяет вам сделать это в babel. Для этого требуется XeLaTeX. (Экспериментальный HarfTeX также может подойти.) Я также настроил команды и среды с именами типа 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

Образец использованШрифты Noto от Google,которые вам, возможно, придется скачать.

Возможно, вам не захочется определять символы, такие как градусы Цельсия, таким образом: вы, вероятно, захотите, чтобы они соответствовали текущему выбранному шрифту. Однако, если вам нужно добавить пару глифов, которых нет в вашем основном шрифте, примеры покажут вам, как это сделать.

Я установил несколько опций для шрифтов из-за их причуд. Например, все опции Language=Defaultпредназначены для подавления предупреждающих сообщений о том, что шрифт не поддерживает этот конкретный язык. Такие вещи, как тибетские шрифты Noto, не поддерживающие тег тибетского языка и использующие DFLTвместо него , безвредны, и вы можете просто игнорировать их. Если вам хочется возиться с такими вещами, как Numbers=OldStyle, otfinfoкоманда — хороший способ проверить, какие функции поддерживает шрифт.

Минимизация MWE

Вы спрашиваете, какой из этих пакетов вам не нужен. Вам определенно не нужен inputencили textcomp. Эти пакеты предназначены для устаревших 8-битных шрифтов. Вам нужен polyglossiaили , xeCJKесли вы не используете babel, но вам может быть xeCJKудобно, если вам нужен только один идеографический шрифт. Вам не нужно загружать fontspecв дополнение к polyglossia, который загружает его автоматически, а загрузка дважды сопряжена с риском конфликта опций. (Если вы действительно хотите, загрузите fontspecдо, а не после.) Вам, вероятно, не нужен ucsили xunicode.

Пакеты bbdingи wasysymзагружают шрифт символов, поэтому они вам не нужны, если используемые вами символы находятся в Unicode. Например, в комментарии говорится, что wasysymзагружается для астрологического символа солнца, который является ☉ (U+2609). Вы все равно можете сделать символ псевдонимом для \astrosunсимвола из wasysym, но я бы рекомендовал вам придерживаться Unicode, если можете. Вы получите правильное масштабирование и сможете копировать из вашего файла PDF.

Другие пакеты выглядят более важными, но вы можете попробовать удалить один и посмотреть, сломается ли что-нибудь. Если нет, то он, вероятно, на самом деле не используется.

решение2

Во-первых, избегайте xunicode, ucs, inputencи \DeclareUnicodeCharacterпри использовании XeLaTeX.

Довольно странно сопоставлять U+2100 ACCOUNT OF или U+25BC ЧЕРНЫЙ ТРЕУГОЛЬНИК, НАПРАВЛЕННЫЙ ВНИЗ, с \textcelsius.

Шрифт Noto Serif CJK включает глифы для U+2100 и U+25BC, но эти символы не вызывают переключения на шрифт CJK, поэтому такой шрифт следует выбирать явно.

Как уже упоминалось, newunicodecharможет выполнить эту работу:

\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}

введите описание изображения здесь

Кстати, шрифт CJK sans установить невозможно, не установив основной шрифт; кроме того, Noto Serif CJK не является шрифтом sans serif.

Конечно, вы можете использовать другие шрифты для символов, отсутствующих в основном шрифте, который вы используете.

решение3

Поскольку вы уже загружаете wasysym, вы можете использовать \DOWNarrowиз этого пакета. Он немного больше символа Unicode.

MWE, с благодарностьюДэвислор:

\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}

Результат:

введите описание изображения здесь

Связанный контент