
No entiendo cómo obtener ▼ (U+25BC; triángulo relleno e invertido) en mi archivo XeLaTeX. Las siguientes líneas son parte de mi XeLaTeX que parece relevante para este tema. Deseo modificar el archivo para obtener ▼ (U+25BC; triángulo relleno e invertido), pero no avanza. Supongo que muchos paquetes luchan entre sí en el archivo. Le agradecería mucho que tuviera la amabilidad de compartir algún buen remedio para este caso.
En cuanto a tu información, estoy usando TeXShop versión 4.31 (XeLaTeX) basada en MacBook Pro. Debería utilizar letras en inglés, sánscrito, tibetano y chino tradicional en este archivo.
\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}
Respuesta1
Aquí hay un 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}
Esto utiliza fontspec
(que se carga mediante polyglossia
) para configurar una fuente de símbolo que contiene el glifo y newunicodechar
cambiar a esa fuente para ese símbolo. (Si también quisieras usarlo en modo matemático, necesitarías un comando más complejo con \ifmmode
, pero no parece que lo necesites).
Un problema es que parece que estás pegando código de un par de ejemplos que no son compatibles entre sí. Por ejemplo, solo usaría inputenc
y \DeclareUnicodeCharacter
con textcomp
fuentes heredadas de 7 y 8 bits, no con fuentes Unicode modernas. Le recomiendo que elimine cualquier paquete de su preámbulo que no esté seguro de necesitar.
Otra es que \char
o \symbol
selecciona el glifo en la posición dada en la fuente actual. Eso es lo que desea al definir el comando en su preámbulo, pero no al usarlo en su documento. Configuras el carácter como activo, de modo que sea reemplazado por un comando, y quieres algún código que el motor TeX trate como si hubieras escrito el carácter. Eso es ^^^^xxxx
.
También está combinando diferentes paquetes de internacionalización, que pueden funcionar para usted o no. Puede intentar babel
admitir \babelfont
los cuatro idiomas con una interfaz coherente.
Plantilla multilingüe
Hay dos posibles respuestas a la pregunta de seguimiento en los comentarios, según lo que desee.
Si está creando algo como un diccionario de símbolos y sólo necesita glifos independientes, probablemente desee elucharclasses
paquete. Eso le permite designar una fuente para sus caracteres chinos oscuros, como Babelstone Han, otra para sus símbolos astrológicos, etc. Luego escribe un glifo y XeTeX muestra cada glifo de la fuente correcta automáticamente.
Si realmente necesita componer palabras y pasajes completos en los cuatro idiomas, el siguiente preámbulo le permitirá hacerlo en babel
. Requiere XeLaTeX. (El HarfTeX experimental también podría funcionar). También configuro comandos y entornos con nombres 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}
La muestra utilizadaLas fuentes Noto de Google,que quizás necesites descargar.
Es posible que no desee definir símbolos como grados Celsius de esta manera: probablemente desee que coincida con la fuente seleccionada actualmente. Sin embargo, si necesita parchear un par de glifos que su fuente principal no tiene, los ejemplos le muestran cómo hacerlo.
Configuré algunas opciones en las fuentes debido a sus peculiaridades. Por ejemplo, todas las Language=Default
opciones están ahí para suprimir los mensajes de advertencia de que la fuente no es compatible con ese idioma específico. Cosas como las fuentes tibetanas de Noto que no admiten la etiqueta del idioma tibetano y que se usan DFLT
en su lugar son inofensivas y podrías simplemente ignorarlas. Si tiene ganas de molestarse con cosas como Numbers=OldStyle
, el otfinfo
comando es una buena manera de comprobar qué funciones admite una fuente.
Minimizar el MWE
Preguntas cuál de esos paquetes no necesitas. Definitivamente no necesitas inputenc
o textcomp
. Esos paquetes son para fuentes heredadas de 8 bits. Solo necesita polyglossia
o xeCJK
si no usa babel
, pero puede resultarle xeCJK
conveniente si solo necesita un guión ideográfico. No es necesario cargar fontspec
además de polyglossia
, que lo carga automáticamente, y al cargarlo dos veces se corre el riesgo de que entren en conflicto las opciones. (Si realmente lo desea, cárguelo fontspec
antes, no después). Probablemente no desee ucs
o xunicode
.
Los bbding
paquetes wasysym
y cargan una fuente de símbolo, por lo que no los necesita si los símbolos que utiliza están en Unicode. Por ejemplo, el comentario sugiere que wasysym
se está cargando para el símbolo astrológico del sol, que es ☉ (U+2609). Aún puedes convertir el carácter en un alias para el \astrosun
símbolo de wasysym
, pero te recomiendo que te ciñas a Unicode si puedes. Obtendrá la escala correcta y podrá copiar desde su archivo PDF.
Los otros paquetes parecen más importantes, pero puedes intentar quitar uno y ver si algo se rompe. Si no es así, probablemente no se esté utilizando.
Respuesta2
En primer lugar, evita xunicode
, ucs
y inputenc
cuando \DeclareUnicodeCharacter
uses XeLaTeX.
Es bastante extraño asignar U+2100 CUENTA DE o U+25BC TRIÁNGULO NEGRO QUE PUNTA HACIA ABAJO a \textcelsius
.
La fuente Noto Serif CJK incluye los glifos para U+2100 y U+25BC, pero estos caracteres no activan el cambio a la fuente CJK, por lo que dicha fuente debe elegirse explícitamente.
Como otros mencionaron, newunicodechar
puede hacer el trabajo:
\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}
Por cierto, no es posible configurar la fuente CJK sans sin configurar la fuente principal; Además, Noto Serif CJK no es una fuente sans serif.
Por supuesto, puedes usar diferentes fuentes para los símbolos que faltan en la fuente principal que estás usando.
Respuesta3
Como ya está cargando wasysym
, puede utilizar \DOWNarrow
ese paquete. Es un poco más grande que el carácter Unicode.
MWE, con agradecimiento 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: