
Não entendo como obter ▼ (U+25BC; triângulo preenchido e invertido) no meu arquivo XeLaTeX. As linhas a seguir fazem parte do meu XeLaTeX que parece relevante para este problema. Desejo modificar o arquivo para obter ▼ (U+25BC; triângulo preenchido e invertido), mas não avança. Suponho que muitos pacotes estejam lutando entre si no arquivo. Eu ficaria muito grato se você gentilmente compartilhasse algum bom remédio para este caso.
Quanto à sua informação, estou usando o TeXShop versão 4.31 (XeLaTeX) baseado no MacBook Pro. Devo usar letras inglesas, sânscritas, tibetanas e chinesas tradicionais neste arquivo.
\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}
Responder1
Aqui está um MWE simplificado:
\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}
Isso usa fontspec
(que é carregado por polyglossia
) para configurar uma fonte de símbolo contendo o glifo e newunicodechar
mudar para essa fonte para esse símbolo. (Se você também quisesse usá-lo no modo matemático, precisaria de um comando mais complexo com \ifmmode
, mas parece que não.)
Um problema é que você parece estar colando código de alguns exemplos que não são compatíveis entre si. Por exemplo, você usaria apenas inputenc
, \DeclareUnicodeCharacter
e textcomp
com fontes herdadas de 7 e 8 bits, não com fontes Unicode modernas. Eu recomendo que você retire todos os pacotes do seu preâmbulo que você não tem certeza se precisa.
Outra é que \char
ou \symbol
seleciona o glifo na posição determinada na fonte atual. É isso que você deseja ao definir o comando no seu preâmbulo, mas não ao usá-lo no seu documento. Você ativa o caractere, para que ele seja substituído por um comando, e deseja algum código que o mecanismo TeX trate como se você tivesse digitado o próprio caractere. Isso é ^^^^xxxx
.
Você também está combinando diferentes pacotes de internacionalização, o que pode ou não funcionar para você. Você pode tentar babel
oferecer \babelfont
suporte a todos esses quatro idiomas com uma interface consistente.
Modelo multilíngue
Existem duas respostas possíveis para a pergunta complementar nos comentários, dependendo do que você deseja.
Se você estiver criando algo como um dicionário de símbolos e precisar apenas de glifos independentes, provavelmente desejará oucharclasses
pacote. Isso permite designar uma fonte para seus caracteres chineses obscuros, como Babelstone Han, outra para seus símbolos astrológicos e assim por diante. Em seguida, você digita um glifo e o XeTeX exibe cada glifo da fonte correta automaticamente.
Se você realmente precisa compor palavras e passagens inteiras em todos os quatro idiomas, o preâmbulo a seguir permite que você faça isso no formato babel
. Requer XeLaTeX. (O HarfTeX experimental também pode funcionar.) Também configurei comandos e ambientes chamados como 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}
A amostra usadaFontes Noto do Google,que você pode precisar baixar.
Talvez você não queira definir símbolos como graus Celsius desta forma: provavelmente deseja que correspondam à fonte atualmente selecionada. No entanto, se você precisar corrigir alguns glifos que sua fonte principal não possui, os exemplos mostram como.
Eu defini algumas opções nas fontes por causa de suas peculiaridades. Por exemplo, Language=Default
existem todas as opções para suprimir mensagens de aviso de que a fonte não suporta aquele idioma específico. Coisas como as fontes tibetanas do Noto que não suportam a etiqueta do idioma tibetano e são usadas DFLT
são inofensivas e você pode simplesmente ignorá-las. Se você quiser se preocupar com coisas como Numbers=OldStyle
, o otfinfo
comando é uma boa maneira de verificar quais recursos uma fonte suporta.
Minimizando o MWE
Você pergunta quais desses pacotes você não precisa. Você definitivamente não precisa inputenc
de ou textcomp
. Esses pacotes são para fontes legadas de 8 bits. Você só precisa polyglossia
ou xeCJK
se não estiver usando babel
, mas pode achar xeCJK
conveniente se precisar apenas de um script ideográfico. Você não precisa carregar fontspec
além do polyglossia
, que o carrega automaticamente, e carregá-lo duas vezes corre o risco de um conflito de opções. (Se você realmente quiser, carregue fontspec
antes, não depois.) Você provavelmente não quer ucs
ou xunicode
.
Os bbding
pacotes wasysym
e carregam uma fonte de símbolos, portanto você não precisará deles se os símbolos usados estiverem em Unicode. Por exemplo, o comentário sugere que wasysym
está sendo carregado para o símbolo astrológico do sol, que é ☉ (U+2609). Você ainda pode transformar o caractere em um alias para o \astrosun
símbolo from wasysym
, mas recomendo que você opte pelo Unicode, se puder. Você obterá o dimensionamento correto e poderá copiar do seu arquivo PDF.
Os outros pacotes parecem mais importantes, mas você pode tentar remover um e ver se algo quebra. Caso contrário, provavelmente não está sendo usado.
Responder2
Primeiro, evite xunicode
, ucs
e inputenc
quando \DeclareUnicodeCharacter
usar XeLaTeX.
É muito estranho mapear U+2100 ACCOUNT OF ou U+25BC BLACK DOWN-POINTING TRIANGLE para \textcelsius
.
A fonte Noto Serif CJK inclui os glifos para U+2100 e U+25BC, mas esses caracteres não acionam a mudança para a fonte CJK, portanto, tal fonte deve ser escolhida explicitamente.
Como outros mencionaram, newunicodechar
pode fazer o trabalho:
\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}
A propósito, não é possível definir a fonte CJK sans sem definir a fonte principal; além disso, Noto Serif CJK não é uma fonte sem serifa.
Claro, você pode usar fontes diferentes para os símbolos que faltam na fonte principal que você está usando.
Responder3
Como você já está carregando wasysym
, você pode usar \DOWNarrow
esse pacote. É um pouco maior que o caractere Unicode.
MWE, com agradecimentos aDavislor:
\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}
Resultado: