
Я не понимаю, как получить ▼ (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}
Он использует 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 от 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}
Результат: