在这种情况下我如何使用unicode?

在这种情况下我如何使用unicode?

我不明白如何在我的 XeLaTeX 文件中获取 ▼ (U+25BC;实心倒三角形)。以下几行是我的 XeLaTeX 的一部分,似乎与此问题相关。我希望修改文件以获取 ▼ (U+25BC;实心倒三角形),但没有进展。我想文件中的许多包都在相互冲突。如果您能分享一些针对这种情况的好方法,我将不胜感激。

供您参考,我使用的是基于 MacBook Pro 的 TeXShop 4.31 版 (XeLaTeX)。我应该在此文件中使用英文、梵文、藏文和繁体中文字母。

\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和应用于传统的 7 位和 8 位字体,\DeclareUnicodeCharactertextcomp不会应用于现代 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 的 Noto 字体,您可能需要下载。

您可能不想以这种方式定义诸如摄氏度之类的符号:您可能希望它与当前选定的字体相匹配。但是,如果您确实需要修补主字体没有的几个字形,示例将向您展示如何操作。

由于字体的怪癖,我设置了一些选项。例如,所有选项Language=Default都用于隐藏字体不支持特定语言的警告消息。Noto 的藏文字体不支持藏文标签,而是使用这样的DFLT选项,这是无害的,您可以忽略它们。如果您觉得麻烦Numbers=OldStyle,可以使用这样的otfinfo命令来检查字体支持哪些功能。

最小化 MWE

你问自己不需要哪些包。你肯定不需要inputenctextcomp。这些包适用于传统的 8 位字体。如果不使用,你只需要polyglossia或,但如果你只需要一种表意文字,你可能会觉得很方便。除了加载之外,你不需要加载,这会自动加载,而加载两次会有选项冲突的风险。(如果你真的想要,请在之前加载,而不是之后。)你可能不想要或。xeCJKbabelxeCJKfontspecpolyglossiafontspecucsxunicode

bbding和包wasysym都加载符号字体,因此如果您使用的符号是 Unicode,则不需要它们。例如,注释表明正在wasysym为占星术太阳符号加载,即 ☉ (U+2609)。您仍然可以将字符设为\astrosun中符号的别名wasysym,但如果可以,我建议您坚持使用 Unicode。您将获得正确的缩放比例并能够从 PDF 文件中复制。

其他软件包看起来更重要,但您可以尝试删除其中一个,看看是否有问题。如果没有问题,则可能实际上没有使用。

答案2

首先,使用 XeLaTeX 时应避免使用xunicodeucs和。inputenc\DeclareUnicodeCharacter

将 U+2100 ACCOUNT OF 或 U+25BC BLACK DOWN-POINTING TRIANGLE 映射到 是相当奇怪的\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 无衬线字体;此外,Noto Serif CJK 不是无衬线字体。

当然,您可以使用不同的字体来填充您使用的主字体中缺少的符号。

答案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}

结果:

在此处输入图片描述

相关内容