이 상황에서 어떻게 유니코드를 사용할 수 있나요?

이 상황에서 어떻게 유니코드를 사용할 수 있나요?

내 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( 에 의해 로드됨 )을 사용합니다. (수학 모드에서도 사용하려면 을 사용하여 더 복잡한 명령이 필요하지만 그렇지 않은 것 같습니다.)polyglossianewunicodechar\ifmmode

한 가지 문제는 서로 호환되지 않는 몇 가지 예제의 코드를 붙여넣는 것 같다는 것입니다. 예를 들어, 및 는 최신 유니코드 글꼴이 아닌 레거시 7비트 및 8비트 글꼴에만 inputenc사용할 수 있습니다 . 필요하지 않은 패키지를 서문에서 꺼내는 것이 좋습니다.\DeclareUnicodeCharactertextcomp

또 다른 방법은 현재 글꼴의 지정된 위치에 있는 문자 모양을 선택하는 것 \char입니다 . \symbol이것이 바로 서문에서 명령을 정의할 때 원하는 것이지만 문서에서 사용할 때는 그렇지 않습니다. 문자를 활성으로 설정하여 명령으로 대체하고 TeX 엔진이 문자 자체를 입력한 것처럼 처리하는 일부 코드를 원합니다. 그건 ^^^^xxxx.

또한 국제화를 위해 다양한 패키지를 결합하고 있는데, 이는 귀하에게 적합할 수도 있고 그렇지 않을 수도 있습니다. 일관된 인터페이스로 이러한 네 가지 언어를 모두 지원하려고 babel시도 할 수 있습니다 .\babelfont

다국어 템플릿

원하는 내용에 따라 댓글에 있는 후속 질문에 대한 두 가지 답변이 가능합니다.

기호 사전과 같은 것을 만들고 독립형 문자판만 필요한 경우 아마도 다음을 원할 것입니다.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}

Noto 글꼴 샘플

사용된 샘플구글의 Noto 글꼴,다운로드해야 할 수도 있습니다.

이런 방식으로 섭씨 온도와 같은 기호를 정의하고 싶지 않을 수도 있습니다. 현재 선택한 글꼴과 일치하도록 하려고 할 수도 있습니다. 그러나 기본 글꼴에 없는 몇 가지 글리프를 패치해야 하는 경우 예제에서 그 방법을 보여줍니다.

저는 글꼴의 특성 때문에 몇 가지 옵션을 설정했습니다. 예를 들어 Language=Default글꼴이 해당 특정 언어를 지원하지 않는다는 경고 메시지를 표시하지 않는 모든 옵션이 있습니다. Noto의 티베트어 글꼴은 티베트어 언어 태그를 지원하지 않고 DFLT대신 사용하는 것은 무해하며 무시해도 됩니다. 와 같은 작업을 귀찮게 하고 싶다면 Numbers=OldStyleotfinfo명령을 사용하여 글꼴이 지원하는 기능을 확인할 수 있습니다.

MWE 최소화

당신은 어떤 패키지가 필요하지 않은지 묻습니다. 당신은 확실히 필요하지 않습니다 inputenc또는 textcomp. 해당 패키지는 레거시 8비트 글꼴용입니다. 을 사용 polyglossia하거나 xeCJK사용하지 않는 경우 에만 필요 babel하지만 xeCJK표의 문자 스크립트가 하나만 필요한 경우 편리할 수 있습니다. 자동으로 로드되는 fontspec에 추가로 로드할 필요가 없으며 polyglossia두 번 로드하면 옵션 충돌이 발생할 위험이 있습니다. (정말 원한다면 fontspec나중에 로드하지 말고 이전에 로드하세요.) ucs또는 xunicode.

및 패키지 모두 기호 글꼴을 로드 bbding하므로 wasysym사용하는 기호가 유니코드인 경우에는 필요하지 않습니다. 예를 들어, 댓글은 wasysym☉(U+2609)인 점성술 태양 기호에 대해 로드되고 있음을 시사합니다. 문자를 \astrosun의 기호 에 대한 별칭으로 만들 수도 있지만 wasysym가능하다면 유니코드를 사용하는 것이 좋습니다. 올바른 크기 조정을 얻고 PDF 파일에서 복사할 수 있습니다.

다른 패키지가 더 중요해 보이지만 하나를 제거하고 손상된 것이 있는지 확인해 볼 수 있습니다. 그렇지 않다면 아마도 실제로 사용되지 않을 것입니다.

답변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 sans 글꼴을 설정하는 것은 불가능합니다. 또한 Noto Serif CJK는 산세리프 글꼴이 아닙니다.

물론, 사용 중인 기본 글꼴에서 누락된 기호에 대해 다른 글꼴을 사용할 수 있습니다.

답변3

이미 로드 중이므로 해당 패키지에서 wasysym사용할 수 있습니다 . \DOWNarrow유니코드 문자보다 약간 더 큽니다.

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}

결과:

여기에 이미지 설명을 입력하세요

관련 정보