luaTeX to najlepsza wersja TeXa bo ma tę przewagę nad pdfTeXem, że natywnie używa Unicode + potrafi korzystać z fontów systemowych. Jak się używa LaTeXa, to na tym można zakończyć. Jak ktoś chce plain-TeX (czyli zapewne kiedyś używał MeXa), to potrzebuje jako minimum: format z polskimi regułami przenoszenia wyrazów, no i możliwość dołączania rysunków.
W luaTeXu robi się to następująco (TeXlive):
Należy odszukać plik etex.src
(np.
/usr/local/texlive/2022/texmf-dist/tex/luatex/hyph-utf8/etex.src
). Plik ten powinien zawierać wiersz:
\addlanguage {USenglish}{hyphen}{}{2}{3}%
Po tym wierszu należy dodać
\addlanguage{polish}{loadhyph-pl.tex}{}{2}{2}
Teraz należy wygenerować format:
luatex -ini luatex.tex ## powstał plik luatex.fmt; który kopiuję ## do katalogu z innymi formatami
Polskie reguły są włączane poleceniem:
\uselanguage{polish}
Fonty można deklarować tak, jak w poniższym przykładzie, w którym zakładamy skład fontem ChaparralPro
\input luaotfload.sty %% https://www.wfonts.com/font/chaparral-pro %% Potrzebujemy `family name` ale ChaparralPro też działa (why?) %% otfinfo -a FONT wypisze family name \def\MainSFont{name:Chaparral Pro} \font\rm = "\MainSFont:+tlig" at 9.9pt \font\it = "\MainSFont/I:+tlig" at 9.9pt \font\bf = "\MainSFont/B:+tlig" at 9.9pt \font\bi = "\MainSFont/BI:+tlig" at 9.9pt %% \bf włącza odmianę grubą \it kursywę jak to plainie...
Zwróćmy uwagę,
że odmiana jest deklarowana jako /X
po nazwie kroju;
potem po dwukropku (opcjonalnie) deklaruje się font features.
Jako minimum warto dodać tlig
,
co włączy ligatury TeXowe (takie
jak --
zamiast myślnika.) Inne użyteczne
features, to smcp
oraz onum
:
%% Caps/smallcaps \font\sc = "\MainSFont:+tlig,+smcp" at 9.9pt %% Old style numbers \font\sco = "\MainSFont:+tlig,+smcp,+onum" at 9.9pt
Dołączanie rysunków/kolorowanie/obracanie:
%% zPlainowany LaTeXowy pakiet graphicx: \input graphicx.tex \includegraphics[width=.9\hsize]{plik.png} %% zPlainowany LaTeXowy pakiet color: \input color.tex \textcolor{red}{bbb} \colorbox{green}{one two} %% obracanie: \rotatebox{90}{\colorbox{blue}{\textcolor{yellow}{Stand with Ukraine}}} %% skalowanie %% x-przeskaluj na 40% \hsize \resizebox{.4\hsize}{!}{Stand with Ukraine} %% xy-przeskaluj na 40% \resizebox{.4\hsize}{2cm}{Stand with Ukraine} %% Powiększ oryginał 2 razy \scalebox{2}{Stand with Ukraine}
No i tyle. Podstawowa funkcjonalność jest. Z MeXa zostały tylko wzorce przenoszenia. Reszta stała się zbędna, więc nie ma czegoś takiego jak luaMeX. Postęp jest nieubłaganyn nawet w świecie TeXa...
Kompletny mini-przykład
%% -*- coding: utf-8 -*- %% należy kompilować luaTeXem \input luaotfload.sty \input graphicx.tex \input color.tex %% \uselanguage{polish} %%% \def\MainSFont{Iwona} \font\rm = "\MainSFont:+tlig;+onum" at 9.9pt \font\it = "\MainSFont/I:+tlig;+onum" at 9.9pt \font\bf = "\MainSFont/B:+tlig;+onum" at 9.9pt \font\bi = "\MainSFont/BI:+tlig;+onum" at 9.9pt %% Small caps \font\sc = "\MainSFont:+tlig;+smcp" at 9.9pt %% Old style numbers \font\sco = "\MainSFont:+tlig;+smcp;+onum" at 9.9pt \def\SwUA{\colorbox{blue}{\textcolor{yellow}{Stand with Ukraine}}} \def\dig{0123--456---789} \rightskip0pt plus 1fil \nopagenumbers \rm \SwUA \dig {\bf \SwUA \dig } {\it \SwUA \dig } {\sc \SwUA \dig } vs {\sco \SwUA \dig } \rotatebox{90}{\resizebox{.4\hsize}{!}{\SwUA}} \scalebox{2}{\SwUA} \bye
i wynik
UWAGA: uważny czytelnik zauważy, że nie do końca jest to co miało być (small caps zawsze jest
z OldStyleNumbers i nie idzie tego wyłączyć), bo niektóre
font features są ignorowane. Z fontem Chaparral jest jeszcze gorzej:
nawet smcp
jest ignorowane.
Żeby było
śmieszniej po usunięciu \input luaotfload.sty
i kompilacji xeTeXem
jest OK. Dalsze testy można streścić następująco: niektóre fonty nie są poprawnie
deklarowane; deklarowanie tych samych
fontów w LaTeXu daje poprawne rezultaty (ale z użyciem fontspec
a); przetwarzanie xeTeXem
też daje poprawne rezultaty.
Na moje coś jest spieprzone w plainowej wersji
luaotfload
, ale konkretnie co to nie ustaliłem albo fontspec
jest
bardziej cwany i lepiej deklaruje fonty.
Relewantna literatura to dokumentacja do dwóch pakietów:
https://www.ctan.org/pkg/fontspec
oraz
https://www.ctan.org/pkg/luaotfload
.
Dopisane 23 czerwca 2022 (wieczorem):
Pytanie zadałem na githubie (https://github.com/latex3/luaotfload/issues/229)
i już wiem co było nie tak. Trzeba było dodać
mode=node;script=latn
, tj. na przykład:
\font\sc = "\MainSFont:mode=node;script=latn;+tlig;+smcp" at 9.9pt
You can check in the log how exactly fontspec specifies the font and copy that in your plaintex document.
Przypadek wielokrotny zadecydował.
Studia skończyłem w roku 1987r. W tym czasie po studiach szło się do wojska na 1 rok. Mając do wyboru pobór we wrześniu 1987 albo w styczniu 1988 albo w maju 1988 zdecydowałem się na maj. Kombinowałem oczywiście żeby nie iść, ale słabo i się nie wykręciłem. Tym bardziej że tuż przed końcem PRLu przykręcono śrubę na odcinku obronności i brano bez litości wszystkich, nawet tych z kategorią C i papierami o depresji czy dyskopatii (z tymi to był kabaret zresztą na przykład na strzelnicę taki dyskopatyk jechał a nie szedł -- ciężarów nie mógł przecież dźwigać, a karabin jest ciężki). Wracając do TeXa -- wygrałem los po raz pierwszy: bym poszedł w styczniu/wrześniu (lub wcale) nie poznałbym TeXa (raczej)...
Wróciłem do pracy na Uniwersytecie w maju 1989 (dla przypomnienia w czerwcu 1989 był okrągły stół). Kompletna zmiana sytuacji, jeszcze w sierpniu 1988 jak rozpoczął się strajk w Stoczni (22 sierpnia), a ja udawałem Marine (aka niebieskiego bereta) w czymś co się nazywało 7 Pomorska Brygada Obrony Wybrzeża (35 pułk desantowy, Gdańsk-Wrzeszcz, ul. Słowackiego -- teraz osiedle Garnizon), to ktoś wpadł na pomysł wysyłania patroli wojskowych na miasto z bronią, ale bez amunicji, w składzie żołnierze służby zasadniczej + dowódca podchorąży (czyli m.in. ja). Oficer dyżurny: Tylko k#rwa podchorąży pamiętajcie, jak tylko coś się zacznie, to wy od razu macie spierdalać z powrotem do koszar... Wychodzi na to, że los po raz drugi się uśmiechnął, że to poszło w tą stronę co poszło, bo były obawy, że my w tym 35 pułku (desantowym) posiedzimy dłużej.
Jakoś tak po roku, czyli w 1990, ktoś mi powiedział, że dla pracowników Uniwersytetu organizuje kursy języka angielskiego firmowane przez British Council. No to się zapisałem.
Kursy to (dla wygody kursantów?) były tak organizowane, że grupy tworzono ,,według wydziałów'', tj. zapisywano wszystkich z wydziału do jednej grupy. Oczywiście ktoś tam zawsze był nadmiarowy. Ja trafiłem do grupy ,,nadmiarowej''. Wygrałem los po raz trzeci -- bym trafił do grupy ,,wydziałowej'', to bym się kisił w starym sosie, w towarzystwie znanym z wydziału (dlatego ten system tworzenia grup był moim zdaniem mało sensowny). Nb wygrałem też tam inny los: poznałem przyszłą małżonkę (z Akademii Muzycznej)
Oprócz małżonki poznałem też Tomasz Janowskiego (dalej TJ) z wydziału Mat-Fiz. Ja pracowałem w katedrze statystyki (tyle, że nie na matematyce tylko na zarządzaniu) a wspólnym problemem był skład wzorów matematycznych, do czego używało się wtedy edytora pn. Chi-Writer. Nie tylko Chi-Writera miał polskie znaczki, ale ktoś dorobił także w miarę obszerny zestaw symboli matematycznych. Wzory się tworzyło za pomocą prymitywnego bo prymitywnego ale edytora równań byśmy to dziś nazwali. Wynik niewiele się różnił od tego co dawała maszyna do pisania, tyle że przynajmniej nie trzeba było używać długopisu do dopisywania. A znasz taki program TeX? -- pyta TJ Pierwsze słyszę -- odpowiadam. Ten TeX to ma czcionki jak z drukarni (to było wtedy ważne) -- zareklamował go TJ.
Potem się okazało, że TJ poznał TeXa od Włodka Bzyla. Ale to było potem. Na razie dał mi TeXbooka, którego skserowałem. Szybko się okazało, że coś jest z tym TeXem nie-halo. Jak w nim składać polskie teksty? TJ -- no z tym jest problem, my tu używamy ogonek.sty (czy jakoś tak--zestaw makr doklejających grecką jotę pod `a' i `e'). Gdzieś w tych okolicach czasowych dowiedziałem się też co to jest LaTeX oraz zdobyłem kopię podręcznika Lamporta.
Jakiego pierwszego TeXa dostałem od TJ to już nie pamiętam. Była to o tyle niekompletna dystrybucja, że nie miała MetaFonta. Tylko TeX, program do drukowania/oglądania na ekranie i zestaw fontów na jakąś tam typową drukarkę. Używałem go dość krótko, bo szybko zmieniłem na emTeXa. EmTeX był o tyle lepszy, że był kompletny, -- miał MetaFonta. Można było w szczególności generować fonty bitmapowe na różne rozdzielczości, a nie tylko drukować tym co się dostało `z fabryki'. To wszystko działało na komputerze PC-AT (w pracy, swojego PC-TA jeszcze się nie dorobiłem) wyposażonym w DOSa w wersji 3.3 zapewne. To że w ogóle na wydziale był taki nowoczesny komputer było nawiasem mówiąc w dużym stopniu zasługą dr. Mirosława Gronickiego (późniejszego ministra finansów) a wtedy (i pewnie później) entuzjastę nowych rozwiązań, tak to nazwijmy. Z tego co mi się wydaje 3 komputery w katedrze statystyki z PC-AT na czele, to była cała flota PC-towa na wydziale (nie licząc czegoś tam co mieli w (,,specjalistycznej'') katedrze OPD (Organizacji Przetwarzania Danych jakby ktoś się pytał-- później przemianowanej na Katedrę Informatyki Ekonomicznej).) Inni liczyli na kalkulatorach albo w ostateczności korzystali z wątpliwej jakości usług Ośrodka Obliczeniowego (Odra coś-tam-coś tam). Oczywiście uruchomienie TeXa na nie swojej Odrze nie wchodziło w grę.
W tym czasie w prasie pojawiały się ogłoszenia firmy pn Polski TeX spółka z o.o. sprzedającej polskiego TeXa pn. MeX/LaMeX (polski LaTeX) za dość znaczną kwotę. Ten TeX miał mieć dobrej jakości polskie znaki. Kwota było jednak na tyle znacząca, że na kupno się nie zdecydowałem, ale też nie skopiowałem go nielegalnie (naprawdę). TJ przyznał się, że w instytucie matematyki mają licencjonowaną kopię tego `komercyjnego' TeXa. Doczytałem w TeXbooku o MetaFoncie, więc skserowałem MFbooka od TJ. Dorobiłem kulfoniaste ogonki sam, a nawet w ramach samorozwoju znaki do diagramów szachowych.
W końcu, jak już coś tam wiedziałem, no i miałem te diagramy, a dzięki temu nadzieję, że nie wyjdę na naciągacza-żebraka co to przyszedł dupę zawracać, to się odważyłem i poszedłem rozpoznawczo do tego Polskiego TeXa z o.o (Sopot, 3 Maja ileś tam -- w biurze Polskich Młynów, teraz są tam apartamenty). W firmie siedział Piotr Pianowski. Pogadaliśmy. Ja się pochwaliłem diagramami--Piotr wyraził zainteresowanie. Powiedział, że dałby mi tego TeXa, ale wkrótce go upublicznią więc radzi żebym się wstrzymał z bólami parę dni/tygodni. Potem przyszedł jeszcze Staszek Wawrykiewicz. Bogusława Jackowskiego -- chyba wtedy w firmie nie było. Poznałem go później...
Wizyta w Polskim TeXu musiała być jakoś tak jesienią 1991. Następnego roku w czerwcu odbyło się walne zebranie GUSTu w Warszawie, na które pojechałem. Nikogo tam prawie nie znałem i niewiele z tego zebrania pamiętam, oprócz tego że pierwszy i jedyny raz zobaczyłem Romana Tomaszewskiego (reklamowanego m.in. jako konsultant ds diakrytyków w projekcie Polski TeX/MeX). TeX mnie wciągnął, w roku 1993 pojechałem do Bachotka na pierwszą konferencję GUSTu, a już rok później z kolegą Bzylem współorganizowaliśmy konferencję Europejską w Gdańsku, a konkretnie na wyspie Sobieszewskiej. Ponieważ konferencja była za miastem tośmy wymyślili, że oznaczymy drogę do ośrodka Orle (istnieje do dziś) za pomocą kilku porządnie namalowanych na desce drogowskazów. I tu wpadka, bo się okazało że drogowskaz jest albo w prawo albo w lewo, a myśmy o tym nie pomyśleli. Nasze były tylko w prawo, więc wszystkie próby powieszenia go tak aby wskazywał skręt w lewo okazały się daremne. Ostatecznie powiesiliśmy go do góry nogami, żeby chociaż strzałka wskazywała prawidłowy kierunek. Expirience is the best teacher -- ten incydent pamiętam od dziś!
SW asked me to augment a Perl script that originally processes ISO-8859-2 encoded text (TeX) files only by adding UTF-8 and CP1250 (one byte MS Windows encoding for Central Europe) encodings as well.
I made up it as follows (not sure if correct):
use Getopt::Long; my $coding = 'utf8'; my $showhelp= '' ; GetOptions( "coding=s" => \$coding, "help|\?" => \$showhelp,) ; if ( $showhelp ) { print "*** $0 [-coding=[cp1250|iso88592|utf-8]] file1 file2...\n" ; exit 1; } if ( $coding =~ /cp1250/ ) { $coding='cp1250'; use open ':encoding(cp1250)'; } elsif ( $coding =~ /iso8859\-?2/ ) { $coding='iso-8859-2'; use open ':encoding(iso-8859-2)'; } elsif ( $coding =~ /utf\-?8/ ) { $coding='UTF-8'; use open ':encoding(UTF-8)'; } else { die "*** Unknown coding: $coding\n"; exit 1; } print STDERR "*** Coding: $coding\n"; ## rest of the script omitted ....
I reencoded the script from original ISO-8859-2 to UTF-8 as well
with iconv
, so all strings are UTF-8 encoded now.
Pliki systemu TeXLive są umieszczone nie w jednym a w kilku katalogach. Listę tych katalogów otrzymamy wykonując polecenie:
kpsewhich -expand-var '$TEXMF'
Mówiąc
bardziej precyzyjnie:
$TEXMFMAIN
to katalog główny (korzeń główny instalacji), którego zawartość nie powinna być modyfikowana
w inny sposób niż poprzez tlmgr
;
$TEXMFLOCAL
-- tu można instalować coś prywatnego, co będzie
dostępne dla wszystkich użytkowników systemu (system-wide);
$TEXMFHOME
-- prywatne pliki użytkownika (user-specific files).
kpsewhich --expand-var '$TEXMFMAIN' # korzeń główny = to co dała fabryka kpsewhich --expand-var '$TEXMFLOCAL' # korzeń lokalnych zmian dla całej instalacji kpsewhich --expand-var '$TEXMFHOME' # lokalne nastawy użytkownika
Kolejność wyszukiwania plików jest taka, że najpierw jest
przeszukiwane drzewo katalogów o korzeniu $TEXMFHOME
a potem $TEXMFLOCAL
a na końcu $TEXMFMAIN
.
System TeX konfiguruje się edytując plik texmf.cnf
.
Plik ten można odszukać w następujący sposób:
kpsewhich texmf.cnf /usr/local/texlive/2011/texmf.cnf
Po zainstalowaniu czegokolwiek w $TEXMFHOME
należy wykonać texhash $HOME/texmf
.
Po modyfikacji zawartości $TEXMFLOCAL
też
należy wykonać texhash
(jako root
).
Rysunek utworzony w OO Calc kopiuję do OO Draw następnie zapisuję jako PDF. Jest prawie dobrze -- prawie bo MediaBox, czyli najmniejszy prostokąt zawierający rysunek jest zły -- OO Draw zapisuje rysunek jak całą stronę. Są dwa rozwiązania:
Rysunek zapisany w OO Draw przyciąć używając do tego pdfcrop
.
Ten pdfcrop
to skrypt w Perlu, dostępny w TeXlive i MikTeX.
Zamiast do OO Draw skopiować (poprzez kopiuj/wklej) do Inkscape. Teraz zaznaczyć obiekt (with the rubber band selector) i następnie kliknąć w Właściwości Dokumentu → Dopasuj do ramki zaznaczenia. Teraz export do PDF da w rezultacie rysunek z prawidłowo przyciętym MediaBoxem. Por. też tutaj.
Próbowałem kopiuj/wklej do Infranview ale wynikowy plik PDF jest złej jakości (fonty są zamieniane na bitmapy)... Być może można to dokonfigurować.
Konwencję sobie przyjąłem, że pole tp:keywords
zawiera
moje słowa kluczowe. Czemu tak? Ano temu, że moja baza bibtexa
zawiera wpisy skopiowane z różnych repozytoriów; wpisy te zawierają
pole keywords
, tyle że nie ma żadnych reguł odnośnie
tego co jest zawartością tego pola. Zawartość pola tp:keywords
jest (przynajmniej w założeniu)
słownikiem ustalonym (controlled vocabulary) pojęć. Podobnie
pole tp:comment
zawiera mój, krótki opis zawartości pozycji
bibliograficznej. W szczególności pola te pomagają posortować/wyciągnąć
pozycje bibliograficzne, relewantne z punktu widzenia określonej
dziedziny zastosowań. Używam do tego narzędzia bibtool
:
bibtool -- 'select {tp:keywords "OSS" }' tph.bib
Powyższe oznacza: wypisz wszystkie rekordy z pliku
tph.bib
, które zawierają napis OSS
w polu tp:keywords
. Napis "OSS"
jest traktowany
jako wyrażenie regularne (regex 0.12):
bibtool -- 'select {tp:keywords "OSS\|UTAUT" }' tph.bib
Powyższe oznacza: wypisz wszystkie rekordy z pliku
tph.bib
, które zawierają napis OSS
lub napis UTAUT
w polu tp:keywords
.
Wyrażenie regularne może zawierać inne metaznaki:
.
, +
,
*
, itd. Jest znak sumy (a lub b) ale nie ma
iloczynu (a i b). Jeżeli chcemy wyciągnąć rekordy
zawierająca łącznie pewne napisy, to można wykorzystać mechanizm
potoku:
bibtool -- 'select {tp:keywords "#Prio" }' tph.bib |\ bibtool -- 'select {tp:keywords "OSS" }' | \ bibtool -- 'select {tp:keywords "SEM" }'
Powyższe oznacza: wypisz wszystkie rekordy z pliku
tph.bib
, które zawierają napisy OSS
,
SEM
oraz #Prio
(w dowolnym porządku) w polu
tp:keywords
. Słowo kluczowe #Prio
to moja konwencja na oznaczenie ważnych wpisów.
Innymi słowy powyższe oznacza: wypisz ważne pozycje literatury
dotyczące (łącznie) OSS i SEM.
Do zamiany plików bibtexa na xhtml używam
narzędzia
bib2xhtml
.
Ten pakiet jest niestandardowy -- z tego co pamiętam -- trzeba go ściągnąć i zainstalować
samodzielnie...
Moja baza bibtexa zawiera kilkaset wpisów, dotyczących różnych dziedzin i o różnym stopniu ważności (od merytorycznie istotnych do słabych; słabe też trzeba gromadzić--np. jako przykłady). Stąd powyższe pomysły, żeby trochę nad tym wszystkim zapanować...
Modyfikując bib2xhtml
, który jest programem napisanym w Perlu,
zmarnowałem trochę czasu usiłując
dodać konwersję (brakujących) polskich znaków diakrytycznych.
Otóż bib2xhtml
zakłada iż plik jest kodowany w notacji LaTeXa (7 bitowe ASCII), przy czym nie
są zaimplementowane znaki zawierające ogonek. Proste wpisanie:
s/\\k\{a\}/ą/g;
Nie chciało zadziałać. Po bliższym obejrzeniu skryptu się okazało, że każdy wiersz pliku jest wstępnie zamieniany poprzez wykonanie następującego polecenia:
## fragment jest wykonywany wew. pętli, `iterującej' po wszystkich wierszach pliku: { local ($c, $l, $z) = (0, 0, ()); s/([\{\}])/join("","\001",($1 eq "\{" ? $z[$l++]=$c++ : $z[--$l]),$1)/ge; ## ge oznacza, globalnie+extended mode, dzięki czemu powyższe ma charakter pętli ## wykonywanej dla każdego znaku { oraz } }
W rezultacie każda sekwencja {...}
zostanie zamieniona na
\nnn{...\nnn}
, gdzie \nnn
jest znakiem o kodzie nnn
.
Przykładowo jeżeli wiersz zawiera:
{abc} {def} {ghi} jkl... => \001{abc\001} \002{def\002} \003{ghi\003} jkl...
Dzięki czemu każda para { ... }
jest teraz jednoznacznie identyfikowana.
Dokładnie nie wiem po co jest taka sztuczka robiona. Ale teraz
zamiana przykładowo \k{a}
, tj.~polskiego ą
w notacji LaTeXa, wymaga zapisu:
s/\\k(\001\d+)\{a\1\}/ą/g;
Przydatny pakiet do wstawianie identyfikatora wersji dokumentu. Do tej pory stosowałem do tego makra `generyczne', ewidentnie wymyślone w okolicach f-my BOP sc.:
\newdimen\hs\hs 210mm \newdimen\vs\vs 297mm \def\shipmarg{\kern15mm} \newbox\shipbox \let\oriship\shipout \def\DOSHIP{% \hoffset-1in \voffset-1in \oriship\vbox to\vs{ \shipmarg\nointerlineskip \nointerlineskip\vss \hbox to\hs{\hss\box\shipbox\hss}% \nointerlineskip\vss \hbox to\hs{\shipmarg \DOCNOTE \hss} \shipmarg }} \def\doship{\aftergroup\DOSHIP} \def\shipout{\afterassignment\doship\setbox\shipbox}
(Zaznaczone przerażające polecenia \aftergroup/\afterassignment, których w życiu nie używałem i przyznam nawet, że nie znam ich znaczenia.) Po czymś takim, umieszczonym najlepiej w osobnym pliku, należy zdefiniować tekst umieszczany na każdej stronie:
\def\DOCNOTE{ .... }
Patent ten
w zmodyfikowanej wersji był wykorzystywany m.in. w klasie wzmgr.
Był ale ponieważ przestał działać wymieniłem go na pakiet prelim2e
.
Sądząc z zawartości google -- mniej znany. Używa się go
zaś bardzo prosto:
\usepackage{prelim2e} \renewcommand{\PrelimWords}{...} %% <-- opcjonalnie, jeżeli domyślny tekst się nie podoba
Pakiet draftcopy
nie działa z pdftexem więc od razu został
zdyskwalifikowany. (Poza tym nie podoba mi się zwyczaj
wstawiania bombastycznego
napisu w tle tekstu kolumny.)
Dodanie prelim2e
do wzmgr
zrobiłem warunkowo.
Jak ktoś doda do dokumentu opcję brudnopis
, to
zamieni się to na poniższe:
\DeclareOption{brudnopis}{\AtEndOfClass{\input{prelim2e.sty}% \renewcommand{\PrelimWords}{\ThisDocVersionId}\linespread{1.0}}} \def\ThisDocVersionId{....} %% <-- trzeba zdefiniować --
Bez umieszczenia \input
wewnątrz \AtEndOfClass
, LaTeX zgłaszał błąd powtórnej
definicji \PrelimWords
.
Mam nadzieję, że powyższe jest OK, ale tradycyjnie pewności nie ma:-)
Pakiet pozwala na formatowanie otoczenia verbatim
, przykładowo
można dodać numerowanie wierszy, zmienić stopień pisma (przydatne jak
zawartość się nie mieści).
Można też zdefiniować znak, który
będzie rozpoznawany jako polecenie wewnątrz verbatim
.
To ostatnie przydaje się do formatowania fragmentów tekstu, np.
złożenia kursywą lub w innym kolorze (przykład niżej)
\documentclass{article} \usepackage{fancyvrb} \DefineVerbatimEnvironment{SVerbatim}{Verbatim}% {commandchars=\+\[\],numbers=left,numbersep=5pt,fontsize=\footnotesize} %% \DefineVerbatimEnvironment{XVerbatim}% {Verbatim}{numbers=left,numbersep=5pt,fontsize=\small} \begin{document} \begin{SVerbatim} aa [ ] \[ \] %% <-- znaki [ ] znikają magicznie bb [ ] ccc +textit[cccc Hop siup!] \end{SVerbatim} \begin{Verbatim}[commandchars=\@\[\]] aa [ ] \[ \] bb [ ] ccc @textit[cccc Hop siup!] \end{Verbatim} Magiczne commandchars definiujące znaki rozpoczynające polecenie można definiować także `indywidualnie': \begin{XVerbatim}[commandchars=\@\[\]] aa [ ] \[ \] bb [ ] ccc @textit[cccc Hop siup!] \end{XVerbatim} \end{document}
Polecenie zatem zaczyna się znakiem `+
' a argument
jest zawarty wewnątrz `[
' oraz `]
'. Tych
znaków nie można używać wewnątrz Verbatim
(por. przykład
pierwszy, powyżej).
W tej sytuacji ich deklaracja ,,globalna'' jest ryzykowana,
bo może się zdarzyć,
że będzie potrzeba wstawić ,,magiczny'' znak literalnie.
W przykładzie poniżej Perl pobiera dane z arkusza
Google Docs,
i zapisuje je do pliku tymczasowego. Następnie TeX -- uruchomiony
,,z wnętrza'' skryptu -- formatuje ww. dane
(układ graficzny jest zdefiniowany w stylach
(por. \input brasskoncert.sty
):
use Net::Google::Spreadsheets; use Getopt::Long; use Encode qw(encode); my $STitle = 'Konkurs_Brass'; # nazwa arkusza do pobrania my $pdftexprogname = 'pdfmex'; # nazwa programu uruchamiającego TeXa my $outputname = "tmp__.tex"; # nazwa pliku tmp my $pdfintermode = "-interaction=nonstopmode"; # lepsze niż "-interaction=batchmode"; GetOptions( 't=s' => \$title,); ## nazwy kolumn w arkuszu: my @Cols = ('nazwisko', 'kraj', 'instrument', 'srednia'); my $service = Net::Google::Spreadsheets->new( username => '???', password => '???' ); my @spreadsheets = $service->spreadsheets(); my $spr_title = $service->spreadsheet( { title => "$STitle" }); my $worksheet = $spr_title->worksheet( { title => 'sheet1' }); my @rows = $worksheet->rows; open (OUT, ">$outputname") || die "Nie mogę otworzyć $outputname.tex!\n\n"; print OUT "\\input brasskoncert.sty\n\\HEAD{$title}\n"; for $r (@rows ) { $rc = $r->content; print OUT "\\Row"; for $t (@Cols ) { print OUT "{", encode("iso-8859-2", ${$rc}{$t}), "}"; } print OUT "\n"; } print OUT "\\TAIL \\bye\n"; close (OUT); my @run_pdftex = ($pdftexprogname, $pdfintermode, $outputname); system ( @run_pdftex ) == 0 || die "Cuś nie tak\n" ; ##
Być może da się prościej, bez Net::Google::Spreadsheets
a poprzez LWP...
Przywołania bibliograficzne to odsyłacze do wykazu literatury [w odróżnieniu od przypisów bibliograficznych, czyli przypisów zawierających podstawowe elementy identyfikujące przywoływany dokument. Przypisy są ,,modne'' w tekstach humanistycznych i prawnych oraz wśród ,,akademickich moherów'' z innych branż]. W LaTeXu standardowym sposobem cytowania jest ,,poprzez numer'', pod którym dana pozycja jest umieszczona w zestawieniu literatury.
W wielu dziedzinach nauk obowiązującym zwyczajem jest oznaczanie przywołań przy pomocy umieszczonego w nawiasach okrągłych lub kwadratowych nazwiska autora/autorów oraz roku wydania, np. (Knuth 1985). Aby przestawić LaTeXa na taki sposób tworzenia przywołań bibliograficznych należy:
natbib
,
hyperref
z opcją breaklinks
, oraz
\bibliographystyle
.
\usepackage{natbib} \usepackage[breaklinks]{hyperref} \bibliographystyle{papalike} %% spolonizywany style apalika.bst \begin{document} %% albo standardowy \bibliographystyle{plainnat}
Bez
breaklinks
LaTeX nie złamie wiersza w obrębie
przywołania, co w przypadku dużej ich liczby będzie
skutkować dużą liczbą sterczących
na prawym marginesie fragmentów nieprzeniesionego
prawidłowo tekstu.
Polecenie \bibliographystyle{papalike}
określa styl bibliograficzny.
Tu jest problem, bo większość stylów nie jest spolonizowana. Wyżej
podany papalike
,
to ,,na szybko'' spolszczony plik apalike
(Dostępny
tutaj).
Teraz należy uruchomić poniższy wiersz (dla pewności dwa razy:-):
pdflatex plik.tex && bibtex plik
Z rozpędu dodałem opcję definiowania przywołań bibliograficznych do wzmgr.
A jeżeli publikacja nie ma daty wydania, np. strona WWW bez daty publikacji, to zgodnie z zaleceniami APA: The initials n.d. should be listed if there is no date. Po polsku zamiast n.d. wstawiam bdw (brak daty wydania), np. (Ajzen, bdw).
Dopisane 28 Lutego 2009:
Pakiet hyperref
można wywołać z opcją backref
, albo
pagebackref
co skutkuje tym, iż
w spisie literatury pojawią się przy każdej tzw. pozycji literaturowej numery stron, na których owa
pozycja jest przywoływana (przydatne na etapie pisania pracy
oraz w przypadku dokumentu w wersji elektronicznej
(przykład -- zobacz
spis literatury w pliku mgr-main.pdf
)).
Teraz uwaga:
powyższe nastawy nie zawsze działają. Nie rozgryzłem tematu do końca ale:
klasy Marcina Wolińskiego wydają się nie być kompatybilne z natbib
.
Kompilacja kończy się błędami `\inaccessible' na etapie przetwarzania spisu literatury.
W google jest coś na rzeczy tutaj.
Wprawdzie większość wątku jest mało konkretna,
ale sugestia J. Kew wydaje się prawdopodobna:
I think there's an incompatibility between your use
of \leftmark
in the header, and whatever (the bibliography style?) is
supposed to be producing the \mark
's.
Pakiet natbib
testowany z innym tekstem spowodował też inny błąd: w przypadku
podzielenia przywołania pomiędzy stronami
link z strony poprzedniej nie kończy się
na brzegu ostatniego wiersza ale obejmuje
także ewentualne przypisy, ew. paginę dolną oraz paginę górną następnej strony (Oczywiście usunięcie
breaklinks
z listy opcji pakietu hyperref usunęłoby problem ale wprowadziło inny
jednocześnie.)
Najśmieszniejsze, że mam dwa
wydaje się identyczne dokumenty, w których w jednym taki błąd występuje
a w drugim jest OK.
Już nie jest śmiesznie -- dodałem więcej tekstu do dokumentu, który był OK
i stał się KO
(por. strona 17 w pliku mgr-main.pdf
).
Coś mi dzwoni, że tego typu efekt może wynikać z ograniczeń TeXa,
który najpierw składa
akapity a potem łamie strony.
Skąd biedak ma wiedzieć, że akurat w tym wierszu skończy mu się strona...
Anyway -- zadałem pytanie na GUST-l bo może się mylę.
Dopisane 2 Marca 2009: Limitation of pdfTeX napisał Heiko Oberdiek w odpowiedzi na moje pytanie na comp.text.tex. Niestety to potwierdza, że mi dobrze dzwoniło...
Dopisane 6 Kwietnia 2010:
O jednej rzeczy w tym wszystkim zapomniałem. Mianowicie
polecenie składające zawartość \cite{...}
wygląda następująco (plik latex.ltx
):
\def\@citex[#1]#2{\leavevmode \let\@citea\@empty \@cite{\@for\@citeb:=#2\do {\@citea\def\@citea{,\penalty\@m\ }% \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}% \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi \@ifundefined{b@\@citeb}{\hbox{\reset@font\bfseries ?}% \G@refundefinedtrue \@latex@warning {Citation `\@citeb' on page \thepage \space undefined}}% {\@cite@ofmt{\csname b@\@citeb\endcsname}}}}{#1}}
Ostatni wiersz jest istotny. Magiczne \@cite@ofmt
jest zdefiniowane trochę dalej jako:
\let\@cite@ofmt\hbox
Co oznacza, że każde odesłanie bibliograficzne ,,jest brane''
w pudełko i nie ma szans, żeby się odsyłacz przełamał nawet
z aktywną opcją breaklinks
. Wystarcz jednak wpisać:
\let\@cite@ofmt\relax
Żeby odsyłacz nie był składany w pudełku (ze wszystkimi tego
konsekwencjami, negatywnymi też).
Albo mam za
starego/błędnego hyperrefa, albo jest jakaś opcja, której nie znam
albo jeszcze coś innego. U mnie samo wywołanie
pakietu hyperref
z opcją
breaklinks
nie przełamuje odsyłaczy, z wyżej opisanego
powodu.
Mimetex
-- coś co nie używa TeXa a potrafi zamienić wzory
w składni LaTeXa na pliki .gif
. Działa w 99%
poprawnie, ale to i tak jest dużym wyczynem. Parsowanie wzorów w notacji
LaTeXa nie jest łatwym zadaniem.
W numerach 7--8 Communications of the ACM jest wywiad z Knuthem (ściśle mówiąc: vol. 51 nos 7--8, 2008). Pierwsza część jest teraz nawet dostępna on-line. Fragment: Then a startup company came to me and said, [...] ``Name your price.'' I said ``Oh, okay, $100,000,'' assuming that this was [outrageous]. The guy didn't blink. He agreed. I didn't blink either. I said, ``I'm not going to do it. I just thought that was an impossible number.'' At that point I made the decision in my life that, I wasn't going to optimize my income.
Kol. WB podesłał informację na GUST-L nt. wywiadu z prof. Knuthem (cf. strona domowa) Tekst jest dostępny na stronach www.informit.com.
Właśnie przed chwilą skończyłem redagowanie materiałów
konferencyjnych na kolejny
Bachotek, który już niedługo. Udało się te
materiały skompilować korzystając z TeXLive2007 [z drobnymi problemami]. Problem pierwszy
to jak dołączyć font lokalnie?, tzn. Prelegent
Marcin W. dostarczył egzotyczny font, którego nie chcę instalować
system-wide. Na okoliczności egzotycznych, dodatków ma
katalog /.texmf
a w pliku web2c/texmf.cnf
ustawione, przykładowo:
TEXINPUTS.tex = .;..;./texmf//;$TEXMF/tex/{plain,generic,}//
Co oznacza że mój TeX szuka plików w katalogu nadrzędnym oraz
w katalogu/podkatalogach ./texmf
. Ale mapy fontowe
są ,,globalne'' a bez wpisów w plikach .map
, program pdftex
,,nie widzi'' fontów [BTW ,,stara technologia'' z wykorzystaniem
dvips
a była lepsza bo dvips
ma opcję -u
,
co pozwala zapodać mu mapę lokalnie. Takiej opcji nie ma pdftex
.]
Rozwiązanie jest następujące:
updmap --enable Map bayerancki.map
Powyższe podałem jako zwykły użytkownik,
bayerancki.map
umieściłem w ./texmf
, razem
z fontami i plikami .tfm
. Zadziałało. Dokładny sposób
działania updmap
jest dla mnie -- muszę przyznać -- pewną
tajemnicą.
Problem drugi--brak jakiegoś fontu cyrylicznego. TL2007 zainstalowanemu
w wariancie (kolekcji) GUST brakuje fontu latt0800--tylko gdzie go znaleźć?
Google w tym przypadku okazał się mało pomocny: latt0800.tfm nie
ma wcale, a latt0800 wskazuje na pliki .map
fontów
cm-super. Ale w pakiecie cm-super nie ma pliku latt0800.tfm?
Nie ma bo jest w lh
.
[Naprawdę, to też go tam nie ma, ale zostanie wygenerowany.]
Instalacja pakietu za pomocą
skryptu install-pkg.sh
też taka mało intuicyjna:
sh install-pkg.sh --help # nie ma takiej opcji--czemu? sh install-pkg.sh --package=lh --listonly # podaje zawartość pakietu lh sh install-pkg.sh --package=lh # instaluje pakiet lh
Nie znalazłem opcji wyświetlenia listy pakietów--oglądałem je
po prostu za pomocą ls
po nazwach starając się
wykoncypować o co może chodzić. Jest opcja listdir
ale
sposób jej działania jest dla mnie wielką tajemnicą. Nie wiem
czemu ten skrypt jest
tak bezsensownie prymitywny -- doinstalowanie czegokolwiek
z TL to całkiem traumatyczne przeżycie.
A na Bachotek znowu nie jadę, bo w tym samym czasie jedziemy do Kilonii oglądać U-boota.
Dopisane 1 listopada 2010: Ten wpis jest myląco-przestarzały. Aktualne informacje na temat XeTeXa są w dokumencie: Używanie XeTeXa w systemie Linux (dystrybucja TEXLive). Przykładowe pliki są natomiast tutaj.
Xetex to nowy wariant TeXa. Cytując wpis z Wikipedii, który przed chwilą sam utworzyłem:-) Umożliwia korzystanie ze standardu Unicode oraz fontów komputerowych we współczesnych formatach, takich jak OpenType oraz AAT. Twórcą XeTeXa jest Jonathan Kew. Wstępne wersje XeTeXa były dostępne tylko na platformie Mac OS X. Wersje programu na platformę Linux i Windows pojawiły się w 2006 r. Ponieważ tak było, to traktowałem XeTeXa z rezerwą--ot jakiś wariant TeXa na Maca. Wprawdzie dostępny w Linuksie, ale pewnie z wieloma ograniczeniami. Absolutnie niesłusznie. Jest to już w tej chwili program production stable, w 99% kompatybilny z klasycznym TeXem.
Dalej cytując Wikipedię:
XeTeX jest dołączany do współczesnych dystrybucji TeXa, takich jak:
TeXLive, MikTeX (od wersji 2.7), MacTeX. Ja mam TeXLive 2007.
Potrafi wykorzystać fonty dostępne w systemie TeX oraz te
dostępne w systemie. Polecenie xetex plik.tex
jest równoważne uruchomieniu plain TeXa, co m.in. oznacza
skład fontami CM. Czegoś takiego jak xemex
zaś nie ma.
Najpierw chciałem wypróbować jak działa xetex
z jakimś
egzotycznym fontem systemowy, np. takim jak
Cyklop, dostępne w formacie OpenType.
Żeby to sprawdzić musiałem najpierw
doczytać jak instalować fonty w Linuksie.
Fonty są standardowo umieszczone w katalogu /usr/share/fonts
.
To mi nie za bardzo pasowało. Jak zmieniam system, to jest kłopot,
które fonty są natywne, tj. zainstalowane z archiwów
.rpm
, a które nie. Wolałbym Cyklopa umieścić
w /usr/local/share/fonts
.
Plikiem konfigurującym fonty systemowe jest
/etc/fonts/fonts.conf
, ale modyfikacje należy wpisywać
w /etc/fonts/local.conf
:
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <!-- /etc/fonts/local.conf file for local customizations --> <fontconfig> <!-- Font directory list --> <dir>/usr/local/share/fonts</dir> </fontconfig>
Teraz zrobiłem restart a następnie (jako root):
mkdir /usr/local/share/fonts cd /usr/local/share/fonts mkfontscale && mkfontdir # na wszelki wypadek, być może niepotrzebne fc-cache
Teraz wpisanie fc-list | grep Cyk
, powoduje wypisanie na
ekran:
Cyklop:style=Italic Cyklop:style=Regular
Teraz już z górki. Zredagowałem w Emacsie następujący plik:
%% -*- coding: utf-8 -*- \font\titrm="Cyklop" at 15pt \font\titit="Cyklop/I" at 12pt \font\rm="Iwona" at 12pt \rm \parindent0pt \obeylines \nopagenumbers %% http://galaxy.uci.agh.edu.pl/~szymon/raven.shtml \leftline{\titrm Kruk} \leftline{\titit {(tł. Stanisław Barańczak)}} \medskip W głuchą północ, w snów tumanie, gdy znużyło mnie dumanie Nad księgami zapomnianej magii, znanej w dawnych dniach, Chyląc głowę nad foliałem, niespodzianie usłyszałem Chrobot, jakby ktoś nieśmiałym palcem skrobał znak na drzwiach. ,,Gość'', mruknąłem, ,,tym sygnałem daje znać, że stanie w drzwiach: Skąd ten zimny pot i strach?'' \bye
Zwracam uwagę na sposób deklarowania fontów. Cyklop to nazwa
fontu a nie pliku. Xetex nie potrzebuje plików .tfm
dlatego
możliwa jest taka deklaracja. Do tego zapis Cyklop/I
oznacza kursywę. Podobnie /B
to odmiana gruba
a /BI
to gruba kursywa. Bardziej finezyjne odmiany
(cienkie, wąskie itp...) trzeba deklarować tradycyjnie (podając
nazwę pliku). Nazwa może zawierać odstępy--po to są cudzysłowy.
Kompiluję plik wydając polecenie:
xetex test-cyklop.tex
Na dysku powstaje plik PDF zwierający co trzeba. Plik źródłowy jest tutaj.
OK, teraz co dalej? W szczególności jak jest z: przenoszeniem wyrazów w języku polskim, dołączaniem rysunków, matematyką, ładnymi plikami PDF z odsyłaczami itp.? Okazuje się, że to wszystko jest wystarczy przełączyć się na LaTeXa. Oto test nr 2:
%% -*- coding: utf-8 -*- \documentclass[a4paper]{article} \usepackage[EU1]{fontenc} %% \usepackage[T1]{fontenc} %\usepackage{lmodern} % Support for Iwona, cf. http://pinkaccordions.homelinux.org/staff/tp/prog/tex/misc/ \usepackage{iwona} \usepackage{polski} %% wzorce przenoszenia itp... \begin{document} \begin{flushleft} \begin{bf} KRUK (\emph{The Raven\/})\\ E. A. Poe \end{bf} \end{flushleft} \begin{verse} Raz w północnej, głuchej dobie, gdym znużony siedział sobie\\ Nad księgami dawnej wiedzy, którą wieków pokrył kurz -- \\ %% ...itd...
Pakiet lmodern
udostępnia
kroje Latin Modern i wszystko działa, jak w klasycznym LaTeXu.
Pakiet fontenc
deklaruje nowe kodowanie EU1
.
Można go używać
ale można też pozostać przy klasycznym
T1
. Kodowanie EU1 jest niezbędne do składania
tesktów w każdym innym języku za wyjątkiem angielskiego (innymi słowy
ASCII działa, wszystko inne, raczej nie)
Powyższy przykład działa out-of-the-box
w TL2007. Pliki są tutaj.
Kolejny test dotyczył cyrylicy i rysunków. Tekst rosyjski wkleiłem po prostu z google translate, więc może być lekko bez sensu:
%% -*- coding: utf-8 -*- \documentclass[a4paper]{article} \usepackage[xetex]{graphicx} \usepackage[EU1]{fontenc} %% \usepackage[T1]{fontenc} \usepackage{tgtermes} %% \usepackage{lmodern} %\usepackage{tgheros} %\renewcommand{\sfdefault}{qhv} %% tgheros.sty sets qhv as main body font %\usepackage{tgcursor}% tgcursor.sty sets qcr as main body font. Why? %\renewcommand{\ttdefault}{qcr} %\usepackage{url,sfheaders} %\usepackage[russian,english]{babel} % \bibliographystyle{plain} \flushbottom \raggedright % \title{\textsf{Examining OSS success: information technology acceptance by FireFox users}} \author{*** No author ***} % \begin{document} \maketitle \section{Introduction} %% Open source software (OSS) is currently one of the most debated phenomena in both academia and the software industry.... %% ... itd ...
No więc powyższe daje następujące wyniki: fonty LM nie zawierają cyrylicy więc układ T1+LM nie działa. Termes ma cyrylicę ale T1+Termes powoduje błąd:
Output file removed. Output written on ff-4-isd06-test.pdf (1 page).
Faktycznie nie ma pliku ff-4-isd06-test.pdf
.
Poprawnie działa Termes z kodowaniem EU1
. Nie ma
w TL2007 odpowiednich plików dla kodowania EU1
dla fontów TeX-Gyre (podobnie nie ma dla Iwony),
ale jest to dość proste do zrobienia .
Wynikowy plik PDF jest
tutaj.
Plik źródłowy jest
zaś tutaj.
Kompletny przykład zawiera też rysunki.
Xetex radzi sobie doskonale i obsługuje
formaty: PNG/JPG + PDF, czyli z grubsza to samo co pdfTeX.
Uwaga: przykład zawiera zaprocentowane polecenia przełączające
śródtytuły na sans-serif a font o stałej szerokości na Cursor
(z zestawu fontów
TeX-Gyre).
Żeby to wszystko działało, to trzeba
uaktualnić fonty TeX-Gyre ponieważ w TL2007 jest zainstalowana
wstępna, niekompletna wersja. W przykładzie używa się też kodowania
EU1
. Pliki niezbędne do wykorzystywania tego kodowania
z fontami TeX-Gyre są tutaj.
Ostatni przykład to matematyka składana krojem alternatywnym
(Times, Palatino). Do tego służą
pakiety txfonts
/pxfonts
(standardowo instalowane
w nowych dystrybucjach LaTeXa):
%% -*- coding: utf-8 -*- \documentclass[a4paper]{article} \usepackage[xetex]{graphicx} \usepackage{txfonts} \usepackage[EU1]{fontenc} \usepackage{tgtermes} \usepackage{hyperref} \usepackage{polski} % \title{*** No title given ***} \author{*** No author given ***} \begin{document} \maketitle \section{Analiza statystyczna zmiennych makroekonomicznych} ...
Ważna jest kolejność, najpierw \usepackage{txfonts}
.
Inaczej XeTeX podstawia inne fonty zamiast Times. Skład
na pierwszy rzut oka wygląda OK.
Pliki tradycyjnie są tutaj.
No i tyle o XeTeX. W jednym zdaniu: działa jak pdfTeX tyle, że z plikami w UTF8.
Aby wygodniej posługiwać się Unicode doinstalowałem do Emacsa pakiet
xmlunicode
Normana Walsha
(należy pobrać
xmlunicode.el
oraz unichars.el).
Instalacja polegała na skopiowaniu ww. plików do
~/.emacs-local
(tam trzymam lokalne rozszerzenia i pakiety).
Następnie należy określić wartość zmiennej
unicode-character-list-file
w pliku xmlunicode.el
.
Żeby było łatwiej dopisałem też
w ~/.emacs
:
(define-key global-map (kbd "C-c u") 'unicode-character-insert-char ) (autoload 'unicode-character-insert "xmlunicode" "Unicode support for XML" t) (autoload 'unicode-character-insert-char "xmlunicode" "Unicode support for XML" t) (autoload 'unicode-character-menu-insert "xmlunicode" "Unicode support for XML" t)
Teraz naciskając C-c u
mogę wstawić dowolny znak Unicode z minibufora
(z uzupełnianiem (completion) oczywiście). Natomiast funkcję
unicode-character-menu-insert
, pozwalającą na wybór znaku przez wskazanie myszą,
dopisałem do menu. Funkcja unicode-character-menu-insert
obsługuje rzecz jasna
tylko znikomą część znaków Unicode -- te najczęściej używane. Menu zawierające wszystkie
znaki raczej byłoby niewygodne w użyciu. BTW, to co wyświetlane jest w menu
jest zdefiniowane w zmiennej unicode-character-menu-alist
. Od razu dopisałem
dwa znaki: #x201E
(polski cudzysłów otwierający)
i #x2026
(wielokropek).
Na koniec przydatny link do opis zestawu znaków Unicode.
Dopisane 9 marca 2008: Zamiast fontenc
można korzystać z pakietu fontspec
(jest zainstalowany w TL2007). Pakiet ten jest alternatywą dla
klasycznego mechanizmu wyboru fontów w LaTeXu znanego jako NFSS. Wadą
NFSS było to, że wymagał kłopotliwych dla tzw. przeciętnego
użytkownika zabiegów na etapie instalowania fontu. Jeżeli zamiast
fontenc
używamy fonspec
, to wtedy preambuła
dokumentu wygląda następująco:
%% -*- coding: utf-8 -*- \documentclass[a4paper]{article} \usepackage{fontspec} \setmainfont{Iwona} %\setsansfont{TeX Gyre Heros} % odmiana bezszerfowa %\setmonofont{TeX Gyre Cursor} % odmiana `monospace' \usepackage{polski} %% wzorce przenoszenia itp... %%% ... itd ... \begin{document} %% ... itd ...
Jak widać do włączenia fontu używana jest jego nazwa
a nie nazwa pliku z fontem.
Z dokumentacji pakietu wynika, że aby powyższe zadziałało font musi
być zainstalowany w systemie -- umieszczenie odpowiednich plików
w systemie TeX nie wystarczy.
Jest wszakże możliwość takiego skonfigurowania pakietu fontspec
żeby
działał z fontami zainstalowanymi w texmf
. W tym celu
należy dodać opcjonalny argument ExternalLocation
, tj.
na przykład:
\fontspec[ExternalLocation]{texgyrecursor-regular}
Pakiet fonspec
czasami nie działa z pakietami
fontowymi z tradycyjnego LaTeXa. W szczególności
nie działał (przynajmniej u mnie) w połączeniu z fontami matematycznymi
z pakietów txfonts
/pxfonts
.
Dopisane 19 marca 2008: Za listą GUST-l: A jak wygenerować format XeMeX? albo innymi słowy plain-format dla XeTeXa z polskimi wzorcami przenoszenia wyrazów? (to ja się zapytałem:-).
Odpowiedź jest następująca (Piotr Strzelczyk):
niestety to jeszcze nie jest oczywiste. Zwłaszcza, że rozwój formatów
XeTeXa poszedł zdecydowanie w stronę LaTeXa. Trzeba znaleźć wersję
pliku XeTeX.ini
opierającą się na eTeXu. (W archiwum na
stronie twórcy, jest chyba zła wersja, za to na TeXlive jest dobra.)
Ma być sygnowana:
% xetex.ini % jonathan kew % public domain % updated: 15 Sept 2006
Następnie [należy] sprawdzić jakie języki są włączone
w language.def
(nie mylić z language.dat
)
i dołączyć język polski (pamiętając, że należy używać plików
,,unikodujących'' definicje przeniesień -- wraperów --
np. xu-plhyph.tex
):
\addlanguage {polish}{xu-plhyph}{}{2}{2}
No i później już normalnie -- generujemy format. I możemy pisać po
polsku, włączając język poleceniem \uselanguage{polish}
(po szczegóły odsyłam do dokumentacji e-TeXa).
Janusz Nowacki dopisał zaś: Można też
\uselanguage{polish}
ustawić już
w language.def
i będzie to prawie XeMeX (format
z domyślnym polskim dzieleniem [wyrazów]).
Dopisane 26 marca 2008: Oprócz TeXGyre można spróbować używać XeTeXa z fontami Minion/Myriad rozpowszechnianymi razem z programem AcrobatReader firmy Adobe. Są jeszcze do wypróbowania fonty Asana Math (autor: Apostolos Syropoulos). Problem z Asana Math jest wszakże taki, że autor udostępnił tylko goły font, nie bardzo wiem jak się dobrać do poszczegółnych znaków w foncie.
Jakiś czas temu
Elka
uaktualniła fragment swojej
książki
nt. akordeonów.
Ma on być wydany w postaci artykułu w wydawnictwie prestiżowej Akademii
Muzycznej. Oczywiście podesłanie tego w formacie .tex
nie wchodziło w grę. Dokument nie jest specjalnie skomplikowany, ale
zwiera kilkadziesiąt przypisów, kilkanaście rysunków i setki poleceń
służących do tworzenia skorowidzów.
W oryginale był to dokument plain TeXa,
tyle, że łatwo (na szczęście) go było zamienić na dokument LaTeXowy:
%& --translate-file=il2-pl \documentclass{article} \usepackage{polski} \usepackage{graphicx} \newcommand\PICDIR{} % \renewcommand\index[1]{} %% eat \newcommand\xindex[1]{} % \newcommand\AWindex[2][NIL]{} % \newcommand\Piece[2][NIL]{\emph{#2}} % eat \renewcommand{\includegraphics}[2][NIL]{% \begin{center}\texttt{#2.eps}\end{center}} \renewcommand\dywiz{-} \setcounter{secnumdepth}{-1} \title{Polska literatura akordeonowa...
Polecenia indeksujące \index
, \xindex
,
\AWindex
oraz \Piece
zostały przedefiniowane:
zjadają swoje argumenty i nie wstawiają nic do składu. Przedefiniowałem
też \includegraphics
, bo plik .rtf
ze wstawionymi
rysunkami miał ponad 40 Mb. Skoro ostateczny skład ma być w InDesign,
to rysunki można wysłać osobno i w lepszym formacie.
BTW: konstrukcja \newcommand\polecenie[2][NIL]
przedefiniowuje polecenie, które ma dwa argumenty, w tym
jeden (pierwszy) jest opcjonalny,
tzn. użycie takiego polecenia ma postać: \qq[pierwszy]{drugi}
albo \qq{drugi}
.
Napis NIL
,
to domyślna wartość, tego (opcjonalnego) argumentu.
Kiedy mam potrzebę zamiany pliku LaTeXa na MS Word używam latex2rtf. Nie jest to program idealny, ale lepszego nie znam:
latex2rtf -i polish -C latin2 akordeony.ltx
Przełącznik -i polish
powinien wstawiać generowane
napisy w języku polskim (tj, Rysunek zamiast Figure
itp.).
Kłopot, bo tego nie robi (wersja 1.9.16a, beta).
Próbowałem na różne sposoby a rzecz wydaje się banalna, jednak
uparcie wstawiane są teksty angielskie (można to ew. poprawić edytując
plik RTF, np. Perlem).
Za to przełącznik -C
, ustawiający stronę kodową, działa.
Po uruchomieniu latex2rtf, pojawiło się kilka ostrzeżeń:
akordeony.ltx:3 Unknown style option polski ignored akordeony.ltx:4 Unknown style option graphicx ignored akordeony.ltx:9 No existing definition for \index akordeony.ltx:13 No existing definition for \includegraphics akordeony.ltx:14 No existing definition for \dywiz
Ale konwersja została dokonana (prawie) prawidłowo.
W szczególności
latex2rtf prawidłowo zinterpretował moje redefinicje i pominął
zwartość poleceń indeksujących a zamiast plików graficznych wstawił
ich nazwy.
Jedyny błąd jaki zauważyłem, to wstawianie zbędnego
odstępu pomiędzy \footnote
a następującym po numerze
przypisu znakiem przestankowym, tj. numer-odstęp-kropka, zamiast
numer-kropka.
Przy okazji konwersji z LaTeXa do MSW: dia potrafi wyeksportować dobrej jakości diagramy w formacie EMF.