[issue:320] Re: italian.ldf error on platex
Hi Yamashita. I inserted your patch in my working copy of italian.ldf; you certainly already dit it in your working copy of italian.ldf. Now I try to verify id the patch is working, and I use the following short file % !TEX TS-program = pdfLaTeX % !TEX encoding = UTF-8 Unicode % Test babel+italian.ldf under xelatex, pdflatex, uplatex \documentclass{article}\errorcontextlines=100 \usepackage{iftex} \ifPDFTeX \usepackage[english, italian]{babel} \else \usepackage[japanese, english, italian]{babel} \fi \ifPDFTeX \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{lmodern} \fi \begin{document} \textbf{Babel} Lingua \languagename, pattern \the\language. \bigskip l'avvedutezza avanti l'articolo away ayo abaco l'accidente acerrimo l'adirato aedo un'affranta afisico afoso l'agone ahhhh l'aiuto ajta alternativa ambedue ancora annichilire l'aorta l'appurare acqua Aristarco artistica L'albero l'alternativa l'enfasi l'eccezionalità l'altra l'ircocervo l'Illiria l'omeopatia l'astrattismo atroce un'automobile avere avicola awak ayno l'azalea l'uguaglianza un'umanità l'abecedario accolito un'acqua l'addomesticare l'aeroplano affidare l'agone l'aiuto l'assurdo l'abaco un elemento un'eccezionalità un'inedia un'aorta un'occasione l'Occitania l'allampanato ampolla annoso l'inutilità l'artatamente l'astrologia l'attenzione autore avanti avventure away ayo azzardo L'Australia L'Europa l'uguaglianza l'umanità \bigskip \textbf{Italiano} Lingua \languagename\ sillabazione \the\language Codice minuscolo di ': \the\lccode`' \unless\ifcsname pdfmatch\endcsname Codice minuscolo di ' con pdfmatch: \the\lccode\string"2019\fi \ifcsname Umathcode\endcsname Codice minuscolo di ' con Umathcode: \the\lccode\string"2019\fi I'I N'P H'E I'F U'P \selectlanguage{english} \textbf{English} Lingua \languagename, pattern \the\language. Codice minuscolo di ': \the\lccode`' \unless\ifcsname pdfmatch\endcsname Codice minuscolo di ' con pdfmatch: \the\lccode\string"2019\fi \ifcsname Umathcode\endcsname Codice minuscolo di ' con Umathcode \the\lccode\string"2019\fi I'I N'P H'E I'F U'P \unless\ifPDFTeX \selectlanguage{japanese} \textbf{Japanese} Lingua \languagename, pattern \the\language. Codice minuscolo di ': \the\lccode`' \unless\ifcsname pdfmatch\endcsname Codice minuscolo di ' con pdfmatch: \the\lccode\string"2019\fi \ifcsname Umathcode\endcsname Codice minuscolo di ' con Umathcode \the\lccode\string"2019\fi I'I N'P H'E I'F U'P \fi \end{document} This is not a perfect test file, because I actually do not know how to use uplatex with babel. In any case the first two lines are the so called “magic lines” that configure the shell editor to run with the specified program; if your shell editor does not understand these auto-configuration lines, never mind; just use the engine you want to test the file by giving the suitable command from the command line. Now the tests with "pdfmatch" and "Umathcode" are not understood by pdflatex; this is why I use package iftex, that defines the switches \ifPDFTeX, \ifXeTeX and \ifLuaTeX; these tests are false with any other engine. I do not know any package that defines the equivalent of \ifUPTeX, therefore I cannot really test with uplatex. If you run the file with XeLaTeX or LuaLaTeX you get all the output lines of the document body. If you run the file with pdfLaTeX you get only some output, because the tests \unless\ifcsname pdfmatch\endcsame and \ifcsname Umathcode\endcsname are both false; nevertheless the lc code of the apostrophe is correct with "italian" and "english" (babel language names). If you run the file with uplatex you get the same output as with pdflatex, just because the last test \unless\ifPDFTeX is false by default. If you comment the opening and closing lines of such final test and run the file with uplatex, you get an error from babel that complains saying that the used engine does not match the engines for which babel can work; among these engines there are ptex and uptex! I do not know if this is a babel glitch or if it is my fault because I do not know how to use uplatex; probably the second. Therefore at the moment I have some doubts to upload to CTAN my working italian.ldf file; it certainly behaves as the current version, but I am not sure it works when Japanese is one of the languages specified to babel. Please, can you give me some instructions on the correct way to use uplatex? Thank you Claudio On 15/11/2019 17:30, Hironobu Yamashita wrote:
Hi Claudio,
Thanks for maintaining the package babel-italian. But I noticed that \usepackage[italian]{babel} cannot be used on platex and uplatex after TeX Live 2018:
MWE: \documentclass{article} \usepackage[italian]{babel} \begin{document} a \end{document}
Error: ! Bad character code (8217). <to be read again> = l.3 \begin{document}
?
The problem lies in \lccode"2019, as * pTeX and upTeX are not Unicode-compliant, so \lccode allows only 0--255. * pdfTeX is not Unicode-compilant either, so \lccode should never work for 256 or larger code (silently ignored without error?)
Therefore, I propose the patch attached; here I used \Umathcode for detecting truely Unicode-compilant engines (= LuaTeX and XeTeX).
Best regards, Hironobu
--- Hironobu YAMASHITA GitHub: https://github.com/aminophen Japanese TeX Development Community https://texjp.org/