2009-10-28 7 views
16

¿Maneja LaTeX la situación cuando un archivo .bib tiene una codificación diferente a la del archivo .tex? Por ejemplo, .tex está en ISO-8859-2 y .bib en UTF-8. ¿Puede la codificación ser convertida sobre la marcha por LaTeX? ¿O la única forma de hacerlo es manualmente?Codificación diferente de archivos latex y bibtex

Respuesta

12

primer lugar, de acuerdo con la LyX wiki BibTeX no puede utilizar UTF-8:

BibTeX no admite archivos codificados en UTF-8 (es decir, Unicode), que es hoy en día el valor predeterminado codificación de archivos en la mayoría de los sistemas operativos. La razón es que el actual BibTeX (v. 0.99c) fue lanzado en 1988 y, por lo tanto, es anterior al advenimiento de Unicode. A menos que la largamente anunciada BibTeX v. 1.0 o una de las muchas aplicaciones de éxito potencial planificadas estén listas, se debe usar latin1 (ISO-8859-1) u otra codificación de 8 bits para el archivo bib (esto no afecta a LaTeX). codificación, que todavía puede ser utf8).

Por lo general, todo lo que sea dentro de un archivo BibTeX obtiene una copia literal al código fuente LaTeX (con algún formato tal y changings casos, & c.), Tales como títulos de libros, autores, & c.

Así que su codificación de archivo BibTeX tiene que coincide con la utilizada por su archivo LaTeX, de lo contrario las cosas se ponen raras. Tampoco puede usar comandos provistos por babel en BibTeX (como "a para ä, proporcionado por n? German) a menos que su documento incluya los paquetes correctos.

La manera canónica es hacer que los archivos BibTeX sean independientes de cualquier problema de codificación o paquete por siempre especificando caracteres especiales con sus comandos apropiados.

Esto significa básicamente que, en lugar de escribir ä, debe usar {\" a} si quiere estar absolutamente seguro de que funciona. Parece ser una práctica bastante estándar.

El manual BibTeX BibTeXing por Oren Patashnik también detalla lo siguiente:

BibTeX ahora maneja acentuado caracteres. Por ejemplo, si tiene una entrada con los dos campos

author = "Kurt G{\"o}del", 
year = 1931, 

y si usted está utilizando el estilo de bibliografía alfa , a continuación, se BibTeX construir la etiqueta [Göd31] para este de entrada, que es lo que se querer. Para hacer que funcione esta función, debe colocar todo el carácter acentuado en llaves ; en este caso, ya sea {\"o} o {\"{o}} hará. Además, estas llaves no deben estar encerradas entre llaves (que no sean las que podrían delimitar todo el campo o la entrada completa ); y debe haber una barra invertida como el primer carácter dentro de las llaves. Por lo tanto, ni {G{\"{o}}del} ni {G\"{o}del} serán para este ejemplo. Esta función maneja todos los caracteres acentuados y todos excepto los símbolos extranjeros no revisados ​​que se encuentran en las tablas 3.1 y 3.2 de el libro LaTeX. Esta característica se comporta de manera similar a para "acentos" define; veremos un ejemplo en breve. Para el recuento de las letras en las etiquetas, BibTeX considera todo contenido dentro de las llaves como una sola letra .

0

Bibtex tiene soporte aleatorio para cualquier codificación de caracteres no estándar - esencialmente, a veces funciona, la mayoría de las veces no y oficialmente no se admite (More details).

Personalmente, en .bib, me atengo a la magia ASCII y LaTeX básica como \ "o. Para .tex, si no escribo en inglés, guardo .tex en UTF-8 con \ usepackage [utf8 ] {inputenc}.

3

BibTeX tiene enormes problemas con caracteres no ASCII, incluso en la versión más reciente. Si prefiere un sistema moderno, me gustaría recomendar la combinación de biblatex y biber. Ambos todavía están en versión beta etapa, pero funcionan bastante bien incluso en entornos de producción. Con esta combinación, la mayoría de los problemas relacionados con las bibliografías LaTeX desaparecerán. Como nota al margen, el biblatex documentation también contiene una sección sobre problemas de codificación con BibTeX tradicional (§ 2.4.3).

7

Usted puede cambiar la codificación de entrada sobre la marcha:

\inputencoding{latin2} 
\bibliography{mybib} 
\inputencoding{utf8} 

El comando \inputencoding es proporcionada por el paquete de inputenc.

Cuestiones relacionadas