Pàgines

dissabte, 3 d’agost del 2013

Tipus de lletra OpenType amb XeLaTeX

XeTeX és un motor de composició TeX que permet utilitzar els tipus de lletra OpenType

Ara poden aparèixer a qualsevol documentPDF generat des de  LaTeX tots els tipus que tinguem instal·lats al nostre ordinador, tal com ho fan molts processadors de text com ara LibreOffice.

De XeTeX es deriva XeLateX, un motor que fa el mateix però per a fitxers LaTeX. Què cal fer? Hem d’aprendre un nou llenguatge i canviar els comandaments del vells fitxers LaTeX per poder usar-lo? No, en absolut, com veurem de seguida simplement cal:
  • Utilitzar la codificació UTF8 per escriure els nostres documents, especialment útil si inclouen més d’una llengua. - cridar un paquet, el fontspec. 
  • Mantenir la resta dels documents intactes. El que haurem de canviar serà l’ordre de processament. 
En lloc de l’habitual pdflatex haurem d’escriure xelatex per obtenir el fitxer pdf corresponent.

Comencem pel principi. Quins tipus de lletra podem usar? Totes les OpenType que tinguem instal·lades a la nostra màquina. Per saber exactament quines i el seu nom a Linux cal escriure a la línia de comandaments:
fc-list :lang=ca
Això ens donarà una llarga llista que pot començar com aquesta:
Verdana:style=Normal,obyčejné,Standard,Κανονικά,Regular,Normaali,Normál,
Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
Liberation Mono:style=Regular
Nimbus Sans L:style=Regular Italic
Japan:style=Regular
DejaVu Serif,DejaVu Serif Condensed:style=Condensed,Book
Times New Roman:style=Normal,obyčejné,Standard,Κανονικά,Regular,Normaali,
Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno, thường,Arrunta
TeXGyreChorus:style=MediumItalic
Tarablus:style=Regular
Editem el nostre fitxer LaTeX (podem reutilitzar documents antics) i al preàmbul cridem al paquet
\usepackage{fontspec} 
així com el paquet
\usepackage{xltxtra} 
que ofereix característiques extres.

Ara podem definir d’entre les nostres lletres instal·lades:

  • el tipus de lletra principal del document amb \setmainfont{TeXGyreSchola}
  • o bé el tipus de lletra família per família:
\setromanfont{Liberation Serif}
\setsansfont[Scale=MatchLowercase]{Liberation Sans}
\setmonofont[Scale=MatchLowercase]{Liberation Mono}
Per obtenir la sortida en PDF processem el fitxer amb l’ordre
xelatex nomdelfitxer.tex 
i ja tenim el document perfectament formatat i amb el tipus de lletra triat.

Observeu els documents adjunts on, per una banda, trobareu el document tex font i, per altra, el resultat en format PDF.

+info: documentació del paquet xetex

Publicat per primera vegada el diumenge 26 de juny de 2011.

divendres, 2 d’agost del 2013

Creació d’epub des de LaTeX amb pandoc

Pandoc és un programa que permet passar d’un llenguatge de marques a un altre. Al meu blog personal Bitàcola hi vaig fer una entrada fa un temps on resumia les possibilitats d’aquest programa. Doncs bé, com que es tracta d’un projecte actiu, ara han afegit la possibilitat d’obtenir epub com a format de sortida. És a dir, es pot passar d’algun dels diferents formats d’entrada (markdown, reStructuredText, textile, HTML o LaTeX) a epub. En aquest article veurem, naturalment, el pas de LaTeX a epub que, entre altres coses, ens permetrà llegir els nostres documents LaTeX en un lector de llibres electrònics, per exemple.

Partim d’un document tex (que trobareu adjunt a aquest article) estructurat en una pàgina de títol, dos capítols i diferents seccions i subseccions. El pas directe tex -> epub és possible amb pandoc, però té el problema que no interpreta les fórmules.

El format epub és un fitxer comprimit (zip) que conté 3 fitxers en format XML:

  1. un amb el format, 
  2. l’altre amb l’estructura i 
  3. el tercer amb el contingut. 

Per això no hi ha problema en el canvi de marques de LaTeX a XML, però ara per ara Pandoc no construeix les fórmules. Vam fer diferents provatures passant de LaTeX a HTML primer i després d’HTML a epub però tampoc no van funcionar.

De manera que finalment vam fer el pas LaTeX -> HTML amb el programa tex4ht i el comandament:
htlatex elmeuepub.tex 
tal com vam explicar en l’article De LaTeX a HTML. Amb això generem un fitxer html que visualitza les fórmules com a imatges en format .png.

Ara, manualment, hem de substituir al fitxer tex font les expressions de les fórmules per les imatges generades per tex4ht. Un cop feta la substitució ja podem crear l’epub.

Tanmateix pandoc ens permet afegir a l’epub les metadades del llibre electrònic (títol, autor, data de publicació, etc) així com donar-li format. Per això hem de preparar dos fitxers:

  • Un fitxer XML amb les metadades, l’hem anomenat metadades.xml i el trobareu adjunt a aquest post. 
  • Un fitxer CSS amb el full d’estils de l’epub. També trobareu el fitxer epub.css adjunt a aquest post. No és més que un full d’estils en cascada com els que s’utilitzen en les pàgines web. Si en voleu trobar més i molt ben presentats visiteu la pàgina Epub Zen Garden on n’hi ha de realment espectaculars.

Ara ja estem en condicions de generar l’epub amb aquesta ordre de pandoc:
pandoc -S --epub-metadata=metadades.xml --epub-stylesheet=epub.css -o resultat.epub elmeuepub.tex 
que fa que pandoc

  • utilitzi l’opció -S o —smart, és a dir que produeixi una sortida tipogràfica correcta (per exemple: converteix les cometes rectes en cometes tipogràfiques). 
  • inclogui a l’epub (—epub-metadata=metadades.xml) les metadades que hem inclòs al fitxer metadades.xml utilitzi el full d’estils epub.css (—epub-stylesheet=epub.css) 
  • que creï el fitxer de sortida resultat.epub (-o resultat.epub) 
  • que utilitzi el fitxer d’entrada elmeuepub.tex 

Si voleu veure el resultat només cal que descarregueu el fitxer resultat.epub que trobareu adjunt a aquest fitxer i el llegiu des del vostre lector de llibres electrònics o al vostre ordinador des d’un bon programa, com ara Calibre.
Publicat per primer cop el diumenge 8 de maig de 2011.

Opcions per a notes la peu: el paquet footmisc

En aquest lloc ja hem tractat en un parell d’ocasions anteriors sobre les notes al peu. A l’article Notes donàvem les característiques generals de les notes a LaTeX i a Agrupar les notes al final del document explicàvem com traslladar-les totes al final. En aquest nou article, però, veurem les diferents possibilitats que ens ofereix el paquet footmisc.

Es tracta d’un paquet que reuneix diferents opcions creades per diversos autors i que permeten millorar la visualització de les notes.

Com és habitual el paquet es crida des del preàmbul del document amb el comandament \usepackage]{footmisc} però podem usar diferents opcions:

  • perpage és una de les més interessants del paquet perquè reinicia el número de les notes en cada nova pàgina. 
  • para agrupa totes les notes d’una pàgina en un únic paràgraf. 
  • symbol* per aquells autors que no els agraden els números i prefereixen que siguin símbols els que adrecin i identifiquin les notes. 
  • side una altra opció molt interessant perquè escriu les notes al peu al marge de la pàgina, situant així la nota a l’alçada de la crida. 
  • norule elimina la línia sobre les notes. 
  • multiple insereix una coma entre els dos números de nota si una paraula en té més d’una.

Adjunts a aquest article trobareu el document tex font per estudiar el codi i usar-lo de plantilla i el resultat en PDF.

+info: documentació del paquet footmisc.

Publicat per primera vegada el dimarts 22 de març de 2011.

Emmarcar imatges i taules

És força reeixit llegit un manual i trobar que les imatges, les captures de pantalla o simplement les fotografies, es troben emmarcades per un suau degradat de color grisenc que les realça i els dóna una certa tridimensionalitat.

Aquests marcs es poden fer directament sobre el fitxer d’imatge, hi ha programes de retoc que ho fan, però amb LaTeX podem obtenir el mateix resultat sense altra feina que utilitzar el paquet gradientframe. Amb l’avantatge que aquest paquet també ens pot emmarcar taules, donant-les així més èmfasi.

La seva utilització és molt senzilla. En primer lloc cridem el paquet al preàmbul del document
\usepackage{gradientframe}
I quan volem emmarcar una imatge simplement afegim el comandament \gradientframe abans de l’\includegraphics:
\gradientframe{\includegraphics[scale=.5]{ocells.jpg}}
El paquet permet, a més, distanciar el marc de la imatge a través de l’opció:
\gradientframe[2mm]{\includegraphics[scale=.5]{ocells.jpg}}
Si el que volem és emmarcar una taula utilitzem el mateix comandament:
\gradientframe[2mm]{%
\begin{tabular}
... codi de la taula
\end{tabular}
}
Al PDF adjunt es pot veure una comparativa dels millors resultats en l’emmarcament d’imatges i taules. I al document tex font el codi emprat per aconseguir-ho.

Publicat per primera vegada el diumenge 20 de febrer de 2011.