# OPmac problems with xetex/luatex, OpenType fonts and Spanish hyphenation

This is a follow of Spanish hyphenation and UTF8 characters in plain TeX with pdfcsplain, xetex and luatex in my attempts of use OPmac with or whitout pdfcsplain for Spanish documents.

In the cited question, egreg's solution to Spanish hyphenation with xetex/luatex worked like a charm for normal text,...but with respect OPmac macros I have found two problems:

1) load a OpenType font as in the egreg's MWE seem not compatible with OPmac macros as text or \tit Mañana or \sec Mañana loss the ñ and print "Maana" with the default font (but it is OK in normal text).

This is the minor problem since \input ucode plus \input cs-xxxxx (where xxxxx must be a TeX Gyre font) produce the correct output (This is a somewhat limited solution, but fortunately with a nice font family).

2) The most severe problem is related with the hyphenation solution, as\uselanguage{espanol} produce an error with \caption/f or \caption/t macros, so the PDF cannot be compiled.

Minimal not-working example to test:

\font\tenrm="DejaVu Serif" at 12pt
\tenrm
\input opmac

\tit  Mañana % Missing "ñ'', without DejaVu Serif

\sec Mañana % Missing "ñ'' without DejaVu Serif

Mañana  % No problem

\input ucode
\input cs-pagella  % only TeX Gyre fonts (try \input cs-charter)

\tit  Mañana % Now OK

\sec Mañana % Now OK

\uselanguage{espanol} % Spanish hyphenation (see egreg's answer)

\caption/f Test % Error only due to \uselanguage{espanol}

\bye
• And your question is...? Sep 8 '15 at 23:07
• @Louie Obviosly, avoid these problems :), i.e., how to have Spanish hyphenation activated (\uselanguage{espanol}) and working captions at the same time, and if possible, how to have others fonts that TeX Gyre fonts working smoothly with \tit or \sec macros.
– Fran
Sep 8 '15 at 23:15
• When I try to compile this, I get, Font \tenrm=DejaVu Serif at 12pt not loadable: metric data not found or bad. Sep 8 '15 at 23:16
• Fran: I fear you may have a spaghetti of engines, formats, and macros. From context and the other question I collect you are trying to use xetex+hyplain+opmac. Is that correct? Beware that OPmac has its own Font Selection Scheme, so trying to load other fonts may break. Sep 8 '15 at 23:20
• @Lorehead after you follow egreg's instructions comment \uselanguage{espanol} to have a compilable version and see the problem 1. To see the problem 2, uncomment \uselanguage{espanol} and comment \caption/f Test
– Fran
Sep 8 '15 at 23:23

I suppose that you need to run OPmac in standard xetex or luatex formats. They are generated using etex.src macros and hyphenation for all languages are preloaded. So, you needn't to re-generate format, just simply run xetex on command line.

The Spanish hyphenation pattern is activated in document by \uselanguage{espanol} in mentioned format.

OPmac uses three auto-generated words: Chapter, Table, Figure. It must know the translation of these words in selected language. But only Czech and Slovak translations are ready, because the author of OPmac isn't multilingual person(:. So, you must to set these three words in your language. And more words, if you will use \mtext macro (multilingual text) in your macros.

Moreover, the short-cut of used languages must be set: es for Spanish. OPmac sets only en, cs and sk. These short-cuts are set for all languages only in csplain, but you are using format from etex.src macros. So, you have to write this:

{\uselanguage{espanol}  \sxdef{lan:\the\language}{es}}

This is bug in OPmac documentation that this isn't mentioned there. I hope that this will be corrected. Thank you for your testing and reporting.

Finally, you can use the OTF font, but load all variants: \tenrm, \tenit, \tenbf and \tenbi. This means, you must to load whole family. Then the bold variant is used in titles. Your mistake was that bold variant was not loaded. Then the default Knuth's non-OTF font was used for titles.

OPmac uses csplain's font selection system: if the whole family \tenrm, \tenit, \tenbf and \tenbi is loaded then it is used in all desired sizes. The size of normal text in the document is set by \typosize. Don't use at12pt clause when \font primitive is used.

\input opmac

\font\tenrm="DejaVu Serif"
\font\tenbf="DejaVu Serif/B"
\font\tenit="DejaVu Serif/I"
\font\tenbi="DejaVu Serif/IB"
\tenrm

{\uselanguage{espanol}  \sxdef{lan:\the\language}{es}}

\sdef{mt:chap:es}{Capítulo}
\sdef{mt:t:es}{Tabla}
\sdef{mt:f:es}{Figura}

\uselanguage{espanol} % Spanish hyphenation
\typosize[12/14.4]

\tit  Mañana

\sec Mañana

Mañana

\caption/f Test

\bye

Process it using xetex example or luatex example.

• Excellent answer. Now all seem correct, including special symbols and hyphenation. I will accept just now, but for the shake of the completeness, it would be nice see a similar solution for pdfcsplain.
– Fran
Sep 9 '15 at 7:38
• One minor thing about your translation: babel traslate "Table" as "Cuadro". Although at the present time almost everybody use "Tabla" for any type of table by English influence, "tabla" in Spanish should be used for tables with numbers only (like the multiplication table). A "tabla" is always a "cuadro", bust rarely a "cuadro" is only a "tabla".
– Fran
Sep 9 '15 at 8:20
• Note, that the section about non-Czech non-English language were added to the OPmac documantation. Sep 15 '15 at 6:17
• At the end of day, in common documents I saw little difference between the "encoding hell" of pdfcsplain+TeX Gyre fonts and the "xetex paradise", since most free OpenType fonts only have a little subset of uft8 symbols (a nice exception is the >3400 glyphs of DejaVu), but I wanted to be sure of stack to the best option. Many thanks to clarify, and overall, thanks to extent the documentation to another languages. It is nice known \sortingdata before to facing the problem of sorting a Spanish index!
– Fran
Sep 15 '15 at 10:42
• When \input luafonts is included before first usage of \font primitive then it does work with LuaTeX. Jan 2 '18 at 7:32

OPmac was designed to work with csplain by default, so you don't need to fiddle with other formats. You may add hyphenation patterns for more languages (Spanish among others) following the instructions given here; after that, you need to regenerate the csplain format for your favourite engine as explained here. Make sure you have installed the Spanish hyphenation patterns available here.

• Thanks. That is what I tried first with pdfcsplain, but I made something wrong (may be \eslang without \input t1code or forget texhash). Finally I have been able to do, so that \input opmac \input t1code \input utf8lat1 \eslang work with the right hyphenation, but this way remain at least the inconvenient of some unknown symbols, even using TeX Gyre fonts (\input cs-pagella, etc.).
– Fran
Sep 9 '15 at 11:08