czwartek, 4 sierpnia 2011

Pxfonts/qxfonts gryzie się inputenc

Zaczęło się od tego, że LaTeX złożył tabelę w taki sposób, iż wszystkie wiersze zostały nałożone na siebie, tworząc jeden wiersz. Usuwając kolejno dołączane pakiety ustaliłem, że ww. dziwny efekt jest spowodowany błędem w pakiecie pxfonts (qxfonts oczywiście też)... A objawia się, jeżeli pakiet ów jest dołączony łącznie z pakietem inputenc.

Gorzej... Czego nie widać na pierwszy rzut oka, pxfonts przedefiniowuje LaTeXa, a konkretnie polecenie \k, które zamiast wstawiać znak ą albo ę wstawia dwa nałożone na siebie znaki, np. aogonek. Tak się składało polskie teksty w LaTeXu 20 lat temu...

Za powyższe anomalie odpowiada w pakiecie pxfonts wewnętrzne polecenie: \T@n@@nc@d@ngM@cr@M@d. Wydaje się, że wystarczy wpisać do preambuły:


\def\T@n@@nc@d@ngM@cr@M@d{}

aby usunąć błąd. (Wszystko będzie też OK, jeżeli w tekście nie pojawi się znak zawierający ogonek...)

Do tej pory uważałem pakiety pxfonts/qxfonts za dobrej jakości. Do tego stopnia dobrej, że w książce Nie za krótkie wprowadzenie..., które współtłumaczyłem jest on polecany. Teraz zrobiłem kwerendę w google na okoliczność, i stwierdziłem, że 1) pakiety te wydają się być mało używane, 2) nie są od lat pielęgnowane i 3) można znaleźć opinie o ich kiepskiej jakości. Hmmm...

Z drugiej strony trudno jest znaleźć coś jednoznacznie lepszego...

Mini-przykład ilustrujący problemy zamieszczam poniżej:

\documentclass{report}

\usepackage{polski}
\usepackage[utf8]{inputenc}
\usepackage{tgpagella}
\usepackage{pxfonts,qpxmath} %% <---
\usepackage[T1]{fontenc}

%% Poprawia błąd w pakiecie pxfonts
\makeatletter %%
\def\T@n@@nc@d@ngM@cr@M@d{}
\def\T@n@@nc@d@ngM@cr@M@d{% w pxfonts oryginalnie było jak niżej:
%%\DeclareTextCommand{\k}{T1}[1]{\ooalign{\hidewidth\char12\crcr##1}}}
\DeclareTextCommand{\k}{T1}[1]{\ooalign{\hidewidth\char122\crcr##1}}}
\makeatother
\title{\k{A} \k{e}} %% <-- odkomentuj (będzie jeszcze śmieszniej)
\begin{document}
\maketitle
\k{A} \k{e} %% <-- odkomentuj (będzie najśmieszniej)
\chapter{Rozdział}
\section{Zakres dostępnych informacji o~użytkowniku}

\begin{tabular}{|l|l|l|}
0 & (1, 11, 13725) & (1, 12, 10980), (1, 13, 8235), (2, 2, 0), (3, 1, 0) \\
2745 & (1, 12, 10980) & (1, 13, 8235), (2, 2, 0), (2, 3, 0), (3, 1, 0) \\
5490 & (1, 12, 13725) & (2, 2, 2745), (2, 3, 0), (3, 1, 0) \\
8235 & (1, 12, 16470) & (1, 13, 13725), (2, 2, 2745), (2, 3, 0), (3, 1, 0) \\
10980 & (1, 12, 16470) & (1, 13, 13725), (2, 2, 2745), (2, 3, 0), (3, 1, 0) \\
13725 & (1, 12, 16470) & (1, 13, 13725), (2, 2, 2745), (2, 3, 0), (3, 1, 0) \\
16470 & (1, 13, 16470) & (2, 2, 2745), (2, 3, 0), (3, 1, 0) \\
19215 & (1, 12, 16470) & (1, 13, 13725), (2, 2, 2745), (2, 3, 0), (3, 1, 0) \\
21960 & (1, 12, 16470) & (1, 13, 13725), (2, 2, 2745), (2, 3, 0), (3, 1, 0) \\
24705 & (1, 12, 16470) & (1, 13, 13725), (2, 2, 2745), (2, 3, 0), (3, 1, 0) \\
27450 & (1, 12, 16470) & (1, 13, 13725), (2, 2, 2745), (2, 3, 0), (3, 1, 0) \\
30195 & (2, 2, 2745) & (2, 3, 0), (3, 1, 0) \\
\end{tabular}

\textbf{Styl ultra Budo-Ruski}: % ilustracja problemów z ogonkami
Aczkąlwięk w~ciągu ostątnich ląt skłąd tękstu wspomągąny komputęrówó
cąłkówicię wyęliminował stosowąnie trądycyjnych tęchnik drukarskich\dots
\end{document}
]]>

Brak komentarzy:

Prześlij komentarz