
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
が、そうではないようです。)
1 つの問題は、互いに互換性のないいくつかの例からコードを貼り付けているように見えることです。たとえば、、およびは、inputenc
最新の Unicode フォントではなく、従来の 7 ビットおよび 8 ビット フォントでのみ使用します。必要かどうかわからないパッケージは、プリアンブルから削除することをお勧めします\DeclareUnicodeCharacter
。textcomp
もう 1 つは、\char
または が\symbol
現在のフォントの指定された位置にあるグリフを選択することです。これは、プリアンブルでコマンドを定義するときに必要なことですが、ドキュメントで使用するときには必要ではありません。文字をアクティブに設定してコマンドに置き換え、文字自体を入力したかのように TeX エンジンが処理するコードが必要です。それが です^^^^xxxx
。
また、国際化のためにさまざまなパッケージを組み合わせていますが、これがうまくいくかどうかはわかりません。一貫したインターフェースでこれら 4 つの言語すべてをサポートするようbabel
に試みるとよいでしょう。\babelfont
多言語テンプレート
コメント内のフォローアップの質問には、あなたが何を望んでいるかに応じて 2 つの回答が可能です。
シンボル辞書のようなものを作成し、スタンドアロンのグリフだけが必要な場合は、ucharclasses
パッケージ。これにより、Babelstone Han などの難解な中国語の文字にフォントを指定したり、占星術のシンボルに別のフォントを指定したりすることができます。次にグリフを入力すると、XeTeX は適切なフォントから各グリフを自動的に表示します。
本当に 4 つの言語すべてで単語や文章全体をタイプセットする必要がある場合は、次のプリアンブルを使用して で実行できます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}
使用したサンプルGoogleのNotoフォント、ダウンロードする必要があるかもしれません。
摂氏度などの記号をこの方法で定義したくないかもしれません。おそらく、現在選択されているフォントに一致させたいからです。ただし、メインのフォントにないグリフをいくつかパッチする必要がある場合は、例でその方法が示されています。
フォントの癖のため、いくつかのオプションを設定しました。たとえば、すべてのオプションLanguage=Default
は、フォントが特定の言語をサポートしていないという警告メッセージを抑制するためにあります。Noto のチベット語フォントがチベット語タグをサポートせず、DFLT
代わりに を使用しているようなことは無害なので、無視できます。 のようなことに煩わされたい場合はNumbers=OldStyle
、otfinfo
コマンドを使用して、フォントがサポートする機能を確認するのが良い方法です。
MWE の最小化
これらのパッケージのうちどれが必要ないかと尋ねています。 または は絶対に必要ありませんinputenc
。textcomp
これらのパッケージは、レガシー 8 ビット フォント用です。を使用しない場合はまたは のみが必要ですpolyglossia
が、表意文字が 1 つだけ必要な場合は が便利かもしれません。に加えて をロードする必要はありません。 は を自動的にロードします。 を 2 回ロードすると、オプションが競合するリスクがあります。(本当に必要な場合は、 の後ではなく、 の前にロードしてください。)または はおそらく必要ありません。xeCJK
babel
xeCJK
fontspec
polyglossia
fontspec
ucs
xunicode
およびbbding
パッケージwasysym
はどちらもシンボル フォントをロードするため、使用するシンボルが Unicode である場合は、これらは必要ありません。たとえば、コメントは、占星術の太陽シンボル ☉ (U+2609) 用に がロードされていることを示しています。のシンボルwasysym
のエイリアスとして文字を作成することもできますが、可能であれば Unicode を使用することをお勧めします。正しいスケーリングが得られ、PDF ファイルからコピーできるようになります。\astrosun
wasysym
他のパッケージの方が重要に見えますが、1 つを削除して何かが壊れるかどうか確認してみるのもよいでしょう。壊れない場合は、実際には使用されていない可能性があります。
答え2
まず、 XeLaTeX を使用するときはxunicode
、、、ucs
を避けてください。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}
結果: