Como posso obter o caractere utf8

Como posso obter o caractere utf8

Quero fazer referências cruzadas para que as seções sejam símbolos, mas depois de usar a descrição fornecida, recebi um relatório de erro dizendo que o caractere do teclado usado é indefinido na codificação de entrada 'utf8'. Qual pode ser a saída?

Responder1

Se você tentar compor o teste codificado em utf8 em LaTeX (com um mecanismo TeX padrão por baixo) usando o inputencpacote, acontecerá o seguinte:

  • O LaTeX analisará um caractere utf8 lendo o número certo de caracteres de 8 bits, que pode ser um ou mais, dependendo de qual caractere está no documento.
  • Isto dará ao LaTeX um caractere unicode com um certo número unicode (após alguns cálculos), digamos00A1
  • Agora o LaTeX tentará compor esse caractere, mas para fazer isso, é necessário que haja uma fonte (carregada) que realmente contenha o glifo que representa o caractere Unicode e ...
  • O LaTeX precisa saber desse fato.
  • O LaTeX aprende sobre isso através de um número bastante grande de declarações na forma: \DeclareUnicodeCharacter{00A1}{\textexclamdown}.
  • Isso traduz o número unicode em uma representação de caracteres internos do LaTeX (LICR).
  • Mas isso não seria muito útil se não houvesse um glifo que pudesse ser usado para imprimir esse caractere. Portanto, o inputencpacote configura apenas os caracteres Unicode para os quais existem fontes carregadas que os contêm.
  • Por exemplo, se você carregar T1fontes codificadas via LaTeX \usepackage[T1]{fontenc}, o LaTeX carrega internamente todas as declarações definidas no arquivo t1enc.dfu. (Para cada codificação de fonte LaTeX estabelecida existe um .dfuarquivo correspondente.)
  • Mas o unicode cobre um grande número de caracteres, portanto, se acontecer de você colocar um em seu documento que não esteja em nenhuma codificação de fonte usada pelo LaTeX, você receberá uma mensagem de erro informando que esse caractere unicode não está configurado.

Então, o que pode ser feito para resolver isso em um documento específico?

  • o primeiro passo é identificar o número unicode do caractere que o LaTeX não conhece (isso deve aparecer na mensagem de erro)
  • O segundo passo, que é um pouco mais complicado, é determinar se existe alguma fonte TeX que realmente contenha esse caractere e qual é a codificação que essa fonte possui. Não há bons conselhos aqui, mas existem alguns documentos que descrevem as codificações de fontes padrão do LaTeX.
  • alternativamente, pode-se tentar adicionar pelo menos as T1codificações e TS1ao documento, pois isso pode resolver o problema (se for um caractere "ocidental" bastante comum).
  • também pode ser o caso de você poder "falsificar" o caractere, digamos que se você tiver algum tipo de hífen (do qual existem vários diferentes em unicode) e seu editor adicionar um que não seja conhecido pelo LaTeX, você pode adicionar uma \DeclareUnicodeCharacterdeclaração com o segundo argumento contendo um caractere de substituição que existe.

Caso contrário, temo que a única resposta seja usar um caractere diferente ou usar um mecanismo baseado em TeX que seja totalmente habilitado para Unicode e possa acessar fontes Unicode com grandes conjuntos de caracteres nativamente.

Uma documentação mais elaborada sobre isso pode ser encontrada no código-fonte documentado: utf8ienc.pdfque está na distribuição LaTeX ou pode ser gerado a partir do .dtxarquivo.

Responder2

Tive o mesmo problema quando um amigo quis compor um livro sobre poesia latina e quis usar diretamente vogais com marcas de comprimento como ō e ŏ (longaebreve).

O truque que encontrei estava embrulhado em um pacote,newunicodechar.

Ditado

\usepackage{newunicodechar}
\newunicodechar{ō}{\={o}}
\newunicodechar{ŏ}{\u{o}}

é exatamente o mesmo que fazer

\DeclareUnicodeCharacter{014D}{\={o}}
\DeclareUnicodeCharacter{014F}{\u{o}}

mas poupa o fardo da caça através da tabela Unicode.

É claro que é preciso ter certeza de que o que está no texto de substituição pode realmente ser produzido pelas fontes que estamos carregando, o que pode ser o caso de uma "marca de seção".

Veja tambémMacro para pegar um caractere como argumento, ativá-lo e então \def it.

Usar este pacote tem outra vantagem; suponha que você queira mudar para XeLaTeX ou LuaLaTeX para processar o documento; então um personagem como

informação relacionada