Pàgines

divendres, 30 d’agost del 2013

Memoràndums amb texMemocat

Una classe  de documents per crear memoràndums senzills però complets

texMemo és una classe de documents creada per Rob Oakes i publicada al post texMemo: A Simple Memo Class for LaTeX and LyX del seu blog oak-tree. El seu principal avantatge és que és molt senzill d'utilitzar perquè només cal donar les quatre dades bàsiques (destinatari, remetent, tema i data), posar el contingut i deixar que LaTeX s'ocupi de la resta. A més, permet incloure fàcilment un logo que situa a la part superior dreta.

En un primer intent per catalanitzar el paquet ens hem adonat que l'autor no havia pensat en crear els comandaments perquè fos senzill fer una personalització als diferents idiomes. Per això de seguida vàrem veure que calia introduir canvis en aquesta classe de manera que el resultat final fos millor.

En aquest sentit hem canviat els texts fixos originals (To, From, etc) per comandaments que depenent de l'opció d'idioma de la classe automàticament apareguin traduïts (per exemple al català: \textto: Per a, \textfrom: De, etc).

Aprofitant que introduíem opcions a la classe, també hi he introduït alguns paquets que permetran millorar l'aspecte de capçaleres i peus , dels enllaços i d'altres aspectes menors. També hem introduït el títol Memoràndum (amb les traduccions per cadascuna de les tres opcions d'idioma anglès, català i castellà) que proposava l'autor del  post Writing a memo in LaTeX del blog texblog, because LaTeX matters.


test_texMemocat.pdf
Visualització Baixa
Resultat en format PDF 




test_texMemocat.tex
Baixa
Document tex font per estudiar-ne el codi o usar-la de plantilla. 





texMemocat.cls
Baixa
Classe texMemo millorada, adaptada al català i preparada per a fer-ne més traduccions. 





dimarts, 6 d’agost del 2013

Factures professionals

Factures amb el paquet invoice

El paquet invoice permet crear i calcular l’import d’una factura simplement introduint els paràmetres bàsic com ara el concepte, la quantitat, el preu i l’IVA.

Basant-nos en la classe de document carta (\documentclass{letter}) podem definir l’emissor de la factura, amb les seves dades corresponents, des del comandament 
\adress{DadesEmissor}
El receptor de la factura, i les dades de facturació, es defineix des de la definició de l’entorn letter:
\begin{letter}{DadesReceptor}
Finalment, podem aprofitar el comandament \data per definir la data i el número de la factura.

El paquet invoice  defineix un nou entorn anomenat invoice des d’on es defineix la moneda en què es factura i el percentatge de l’IVA. Per exemple:
\begin{invoice}{Euro}{21}
Dins d’aquest entorn tenim diferents comandaments:

  • \ProjectTitle{RaóDeLaFacturació} En una factura poden haver-hi diferents raons de facturació, per exemple diferents pressupostos. Sota cadascun hi haurà els diferents concepte, despeses i descomptes que, finalment se sumen. 
  • Els diferents conceptes s'incorporen amb el comandament \Fee{Concepte}{PreuUnitari}{Quantitat}
  • A més dels diferents conceptes en una factura s’hi poden afegir despeses puntuals sobre les que no es carrega IVA que es cobren en la mateixa moneda amb el comandament \EBC{DespesaConcepte}{Quantitat}. Si la despesa es va pagar en una altra moneda podem usar el comandament \EFC{DespesaConcepte}{Moneda}{Quantitat}{FactorDeConversió}{}invoice  farà els càlculs que correspongui perquè allò pagat en una altra moneda es carregui en la moneda de la factura. 
  • Si volem fer algun descompte l’introduïm amb el comandament \Discount{ConcepteDescompte}{QuantitatADescomptar} 

El paquet fa tots els càlculs necessaris perquè no calgui més que introduir les dades amb l’ajut del paquet fp. Hi ha un bug, reportat a tex.stackexchange que implicava al paquet per la inclusió de gràfics graphicx però que s’ha resolt. Al fitxer comprimit invoice.zip adjunt trobareu el fitxer d’estil invoice.sty rectificat i amb la declaració de l’opció d’idioma català (catalan). També hi ha el fitxer de definició de les variables d’idioma traduïdes al català invoice.def.



invoice-2.zip
Visualització Baixa






invoice.pdf
Visualització Baixa






invoice.tex
Baixa





Podeu estudiar el codi d’una factura al fitxer tex font i veure el resultat al PDF adjunt on s’ha utilitzat el tipus de lletra Paratype Sans Narrow.

Publicat per primera evgada el diumenge 24 de febrer de 2013.

shareLaTeX

Un editor en línia col·laboratiu amb integració a repositoris del núvol

En l’article anterior on vàrem parlar de writeLaTeX ja vàrem veure les possibilitats que ofereix un editor de LaTeX en línia. No insistirem en els mateixos aspectes pel cas de shareLaTeX que estudiarem en aquest article, sinó que veurem possibilitats que ofereix ara mateix aquest servei i que, molt probablement, acabaran oferint altres alternatives.

Es tracta de serveis comercials que ofereixen una part del seus serveis gratuïtament per engrescar als particulars, però amb la mirada posada en les institucions, on realment és important el treball col·laboratiu de diferents autors sobre un mateix document.

En aquest sentit shareLaTeX ofereix un servei gratuït, per sempre, amb un nombre il·limitat de projectes i de compilacions (això sí, de prioritat baixa) per al propietari i per un col·laborador. Si es vol augmentar qualsevol paràmetre (nombre de col·laboradors, prioritat de la compilació o integració a GoogleDrive, Dropbox o accés per git) cal contractar alguns dels seus plans comercials.

La gestió de projectes, del seu accés i dels col·laboradors és molt senzill i es fa a través del menú Projects.




Un altra opció molt interessant és —dins de cada projecte— la configuració (settings) des d’on determinem els col·laboradors, el document arrel, l’accés: privat, públic amb només lectura o edició pública. També des d’aquí podem triar el compilador entre LaTeX (que dóna com a sortida un DVI), pdfLaTeX o XeLaTeX que com sabem permet incloure tipus de lletra TTF i diferents codificacions llatí, ciríl·lic, thai, etc).

L’edició es pot fer dividint la pantalla en 3 parts: configuració a l’esquerra, document tex font al centre i previsualització a l’esquerra o bé ocultant una o dues de les columnes de manera que puguem treballar en pantalla completa sobre el document font o veure la previsualització a pantalla completa.










És senzill veure els informes de la compilació a través del menú logs i gràficament perquè l’editor assenyala amb una X vermella la línia on hi ha algun problema. Un cop compilat el projecte es pot descarregar bé el PDF bé tot el projecte (incloent tots els fitxers d’estil, imatges o bibliografia) que hi haguéssim pogut pujar en un fitxer comprimit zip.

Podeu estudiar el funcionament d’aquest servei web visitant el projecte de prova que hem preparat anomenat Presentació.

Publicat per primer cop el diumenge 10 de febrer de 2013.

writeLaTeX

Un editor en línia col·laboratiu amb previsualització immediata.

Treballar amb writeLaTeX no exigeix estar-hi registrat, si algun membre ens envia l’enllaç a un projecte seu podem editar-lo, previsualitzar-lo, processar-lo i descarregar el PDF resultant o bé els fitxers font que componen el projecte. Podeu comprovar-ho seguint aquest enllaç on hi ha una prova de mostra.

Tanmateix sempre és millor aconseguir gratuïtament un compte d’usuari per poder utilitzar a fons les possibilitats que ofereix. Un cop registrats la web ens proposa que seguim algun d’aquests camins:
 - Crear un document de text nou.
 - Crear una nova presentació.
 - Crear el nostre propi document en un fitxer en blanc.

 El lloc està a més enllaçat amb altres espais web amb exemples de documents que es poden fer amb LaTeX com ara howtotex.com o texample.net.

També podem trobar diferents exemples de plantilles de documents -per fer un CV, un article a doble columna, etc dins el mateix web.

Si hem triat crear un document de text veurem que entrem en una pantalla dividia per la meitat: a l’esquerra trobem el codi comentat i preparat per ser editat directament en pantalla. I a la dreta tenim la previsualització del document font que s’actualitza contínuament a mesura que editem el codi font.


Des del menú Fitxers (files) hi ha la possibilitat de carregar fitxers d’estil propis i usar-los, o bé fitxers d’imatge, bibliografia o de qualsevol altre tipus. Un cop els hem carregat els podem utilitzar en la compilació.

Quan hem acabat de compilar podem descarregar un fitxer comprimit amb tots els fitxers utilitzats en el projecte i el PDF resultant (writeLaTeX utilitza el compilador pdflatex, per ara no dóna suport a ConTeXt o XeLaTeX).

Però el que el fa especialment útil és que els projectes poden ser col·laboratius. writeLaTeX associa a cada projecte un enllaç que, si el propietari dóna a conèixer a un grup de col·laboradors, aquests poden accedir-hi i editar-lo exactament igual que si en fossin el propietari.

Hi ha aspectes millorables, tanmateix. Per exemple la gestió dels projectes o el fet de conèixer qui ha editat què (control de versions). Suposem que amb el temps els desenvolupadors aniran millorant aquests i altres aspectes.

Per concloure podem dir que és una excel·lent eina pels que volen començar a treballar amb LaTeX i pels que treballen en un ordinador que no tingui instal·lat LaTeX (el de la feina, un de prestat, un de poc potent, etc). Val la pena visitar-lo i usar-lo.

Publicat per primera vegada el diumenge 27 de gener de 2013.

MathJax: fórmules a pàgines web

MathJax ens permet incloure fórmules matemàtiques a les nostres pàgines web, ja sigui usant LaTeX, MathML o bé la notació ASCIIMath. Aquestes fórmules són processades amb javascript per produir equacions HTML, SVG o MathML que es poden visualitzar en qualsevol navegador web actualitzat.
És molt senzill incloure aquestes fórmules i veure-les un cop processades perMathJax. Per aconseguir-ho només cal seguir dos senzills passos:

El primer pas consisteix en incloure en l’encapçalament de la pàgina web la crida a l’script que farà el processament:

<script type="text/javascript"
 src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>

Amb això ja podrem escriure fórmules LaTeX -entre 4 símbols de $$, dos per començar i dos per tancar l’expressió- amb la tranquil·litat que dóna el fet de saber que es veuran perfectament a la web.
Podeu provar el següent codi en un editor HTML en línia, com ara el que ens ofereix w3schools i veureu immediatament el resultat.

<!DOCTYPE html>
<html>
<script type="text/javascript"
 src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
<body>
<h1>Prova de MathJax</h1>
<p>$$x=\frac{-b\pm\sqrt{b^2 -4ac}}{2a}$$</p>
</body>
</html>

Publicat per primera vegada el dimarts 1 de gener de 2013, dia de Cap d'Any.

Diagrames de Gantt o cronogrames

Abstract (en): A Gantt chart is a type of bar chart, developed by Henry Gantt, that illustrates a project schedule. Gantt charts illustrate the start and finish dates of the terminal elements and summary elements of a project. We can buid Gantt charts in LaTeX with pgfgantt package.

Els diagrames de Gantt o cronogrames són representacions gràfiques que permeten visualitzar les fites i dates dels projectes. Això permet que fer el seguiment dels projectes i la seva avaluació sigui molt més senzill. Amb pgfgantt podem crear-los en els documents LaTeX.

El paquet  pgfgantt proporciona l’entorn ganttchart que dibuixa un diagrama de Gantt en una imatge TikZ.

L’usuari, per personalitzar el diagrama, pot afegir diversos elements al gràfic, com ara:
  • títols amb el comandament \gantttitle
  • barres amb \ganttbar
  • fites amb \ganttmilestone
  • grups amb \ganttgroup
  • enllaços entre aquests elements amb el comandament \ganttlink
Cada element és una línia del diagrama que té un punt d’origen i un altre de final dins el calendari del projecte. Els enllaços permeten veure com estan relacionats entre sí els diferents elements i si, per exemple, perquè comenci un cal que s’acabi un altre.

Per crear una línia nova només cal escriure dues contrabarres \\ al final de l’element. Si no les posem els elements se situen en la mateixa línia.

Al document tex adjunt podeu trobar alguns exemples de cronogrames i estudiar-ne el codi. Al PDF adjunt en podeu veure el resultat.

A https://github.com/jqueralt/gantt trobareu les darreres versions dels fitxers.

Publicat per primera vegada el dissabte 8 de desembre de 2012.

De markdown a beamer amb pandoc

Una manera ràpida de crear presentacions

Abstract (en): Discussion about how to prepare a Beamer presentation from a markdown format text file with pandoc.

Si hi ha una feina pesada a l’hora de crear presentacions amb la classe beamer és escriure’n el codi. És igual que utilitzem una plantilla, sempre hi ha molta feina a escriure el codi.

Però hi ha una solució que ens simplifica la feina: escriure el contingut de la presentació en format markdown i en acabat amb l’ajuda de pandoc transformar-lo en format LaTeX o, directament, a un PDF generat per beamer.

Pandoc és un programa que permet passar d’un llenguatge de marques a un altre i del que hem parlat en l’article Creació d’epub des de LaTeX amb pandoc i al nostre blog personal Bitàcola. Ara en veure una nova i potent possibilitat relacionada amb la creació de presentacions.

Partim d’un fitxer de text escrit en format markdown que podem anomenar test.md. En aquest fitxer només hi posarem el contingut que vulguem que tingui la nostra presentació amb unes poques marques que tindran el següent significat un cop processades per pandoc:


  • Els títols de Nivell 1 (marcats amb el prefix #) seran les seccions de la presentació.
  • Els títols de Nivell 2 (prefixats amb ##) seran els títols de les diapositives.
  • Podem iniciar una diapositiva amb qualsevol moment amb una sèrie de guionets: ------------------
  • També, tot seguint la sintaxi de markdown, hi podem incloure enllaços, imatges així com qualsevol comandament LaTeX.

Un cop tenim el fitxer markdown test.md fet podem triar dos camins a seguir:

1. De markdown a LaTeX

Utilitzant pandoc podem transformar el fitxer de text markdown test.md en un fitxer de LaTeX que podem anomenar test.tex. L’ordre de pandoc és:
pandoc test.md --slide-level 2 -t beamer -o test.tex
el fitxer test.tex resultant conté tot el codi de beamer tan feixuc d’escriure.

Aleshores podem crear un fitxer, diguem-li matriu.tex amb les especificacions de la presentació, el tipus de lletra i els temes de beamer a usar, etc i que finalment cridi al contingut desat a test.tex de manera que només amb un parell de passades de pdflatex matriu.tex tindrem una presentació de beamer en format PDF en la que controlem fins al més mínim detall. Una presentació perfecta.

2. De markdown a (beamer)PDF

El camí directe que ens ofereix pandoc és transformar el fitxer test.md en un pdf amb la presentació de beamer anomenat, per exemple test.pdf. L’ordre de pandoc és:
pandoc --toc --slide-level 2 -V theme:NomTema -t beamer test.md -o test.pdf
Observem que aquesta ordre permet triar el tema de beamer que s’utilitzarà i que equival al comandament de beamer \usetheme{NomTema}.

Com és costum adjuntem els fitxers que han permès crear la presentació PDF adjunta. Trobareu tant el fitxer testbeamer.md, com testbeamer.tex i el fitxer matriu.tex que permet tenir un control més detallat del procés. Podreu trobar les darrers actualitzacions d’aquest fitxers a github: https://github.com/jqueralt/md2beamer

+info: Beamer presentations using pandoc, markdown, LaTeX, and a makefile

+info: Producing slide shows with Pandoc

Esperem que pandoc estalviï a partir d’ara força temps a l’hora de crear presentacions.

Publicat per primera vegada el dissabte 1 de setembre de 2012.

PDFs per a e-readers

Abstract (en): Discussion about how to prepare a LaTeX document in order to read in a e-reader the resultant PDF.

Des que disposem d’un lector de llibres electrònics (en concret del Cervantes 2 de bq readers) anem fent proves per poder-hi llegir els documents resultants del processament de documents de LaTeX. La millor solució, sobre la que molt aviat publicarem algun articles és, sens dubte, el format epub obtingut a partir de LaTeX, però en aquest article discutirem l’experiència de preparar PDFs per a ser llegits en la petita pantalla de l’e-reader.

El tema és bastant habitual als fòrums de tex.stackexchange.com i hem anat seguint amb interès tant les preguntes com les respostes. D’entre les aparegudes la més interessant és la que remet a la solució donada pel Projecte Gutemberg a la publicació del llibre Calculus Made Easy, de Silvanus Thompson . En el fitxer tex font es pot veure que plantegen la possibilitat d’obtenir un PDF preparat per a imprimir o bé, l’opció per defecte, obtenir-ne un per veure en la pantalla d’un e-reader. I aquesta és la solució que hem seguit en el nostre exemple.

Es basa en l’ús del paquet \usepackage{ifthen} amb el qual definim la variable \newboolean{ForPrinting}. si és certa crearà el PDF clàssic per imprimir, però si és falsa, el que volem, aleshores definim els comandaments:
%% Initialize values to ForPrinting=false
\newcommand{\Margins}{hmarginratio=1:1} % marges simètrics
\newcommand{\HLinkColor}{blue} % color dels enllaços
\newcommand{\PDFPageLayout}{SinglePage}
\ifthenelse{\boolean{ForPrinting}}{%
\setlength{\paperwidth}{8.5in}%
\setlength{\paperheight}{11in}%
\usepackage[body={5in,7in},\Margins]{geometry}
}{%
\setlength{\paperwidth}{5.5in}% modificada en .5 polzades
\setlength{\paperheight}{7.5in}% modificada en .5 polzades
\raggedbottom
\usepackage[body={4.5in,6.5in},\Margins,includeheadfoot]{geometry} %cos modificat en .5 polzades pels marges
}
En l’original les mides de la pàgina i del cos eren mitja polzada més grans, suposem que per e-readers amb pantalla un xic més gran. Però pel Cervantes 2 les hem reduïdes i el resultat és perfecte: les pàgines encaixen perfectament en pantalla i són llegibles amb tota claredat i comoditat.

Però, sempre n’hi ha d’haver algun, sembla que el lector de PDFs que du incorporat el firmware del Cervantes 2 no és prou bo i no permet llegir les fórmules complexes, només les més senzilletes (superíndexs i subíndexs). Llàstima.

Trobareu adjunts el fitxer tex amb el codi i el PDF resultant (preparat per anar al vostre Cervantes 2 o per ser llegit en pantalla). Es poden trobar les versions actualitzades dels documents a https://github.com/jqueralt/ebookpdf

La conclusió és que el format PDF no és l’ideal pels e-readers. Provarem amb l’epub i us ho explicarem en propers articles.

Publicat per primer cop el dijous 30 d'agost de 2012.

Millores en les referències creuades amb prettyref

Abstract (en): The package prettyref improves creating cross-references regarding hyperref.

En articles anteriors hem vist l’ús i algunes millores en les referencies creuades. En aquest article veurem què ens pot aportar el paquet prettyref a l’hora d’inserir referencies a seccions, figures, taules o equacions.

El paquet, que es crida al preàmbul amb \usepackage{prettyref}, només té un requisit i es que quan fem les etiquetes posem un codi per identificar cada element separat per dos punts de l’etiqueta. Per exemple:

  • una equació es pot etiquetar amb \label{eq:segongrau}
  • una secció amb \label{sec:nomseccio}
  •  una taula amb \label{tau:nomdelataula}, etc.

prettyref , que admet l’ús simultani de \ref, \pageref i \autoref, permet redefinir el comandament
\newrefformat{eq}{Equació \ref{#1} de la pàgina \pageref{#1}} 
perquè quan escrivim el comandament per fer les referències creuades ens aparegui un text complet i ben adreçat:
\newrefformat{eq}{Equació \ref{#1} de la pàgina \pageref{#1}}
\newrefformat{lem}{Lema \ref{#1}}
\newrefformat{teo}{Teorema \ref{#1} de la pàgina \pageref{#1}}
%\newrefformat{cap}{Capítol \ref{#1}}
\newrefformat{sec}{Secció \ref{#1}}
\newrefformat{tau}{Taula \ref{#1} de la pàgina \pageref{#1}}
\newrefformat{fig}{Figura \ref{#1} de la pàgina \pageref{#1}}
Al document tex adjunt hom pot estudiar el codi i veure’n el resultat, un cop processat, al PDF adjunt.
Es poden trobar les versions actualitzades dels documents a github.

Publicat per primera vegada el dissabte 18 d'agost de 2012.

Actualització de presentacions amb beamer

beamer ha tingut un desenvolupament força important en les darrers temps

En les darreres presentacions on hem utilitzat la classe beamer no utilitzàvem les novetats que darrerament s’hi han incorporat després que el seu autor passés el testimoni del desenvolupament de la classe a altres programadors. Per això hem volgut actualitzar alguns punts que ja havíem tractat anteriorment, per exemple en l’article Presentacions amb Beamer, a Transició de diapositives en PDF, a Trucs per presentacions o al més recent Pechakucha amb LaTeX.

Què hi podríem destacar? Potser els canvis més importants han vingut en la possibilitat de personalitzar de manera fàcil els temes i l’aspecte en general de les presentacions. Vegeu, per exemple, el PDF adjunt anomenat presentacio-3.pdf on amb l’ajut de l’estil Manhattan, d’en Sebastian Pipping, aconseguim una presentació semblant a les produïdes pel programa keynote de Mac.

Altres novetats són la facilitat per utilitzar logos, imatges en portada o imatges de fons. També és més fàcil ara definir nous blocs com a caixes de text, proposant el propi paquet la realització d’una mena de post-it per destacar contingut. També és molt fàcil fer botons amb que permeten navegar ràpidament entre les parts de la presentació o sortir a documents a la web. Finalment, podem incorporar animacions, vídeos i so al document pdf, però aquesta és una possibilitat que afegeix pes i que pot ser solucionada amb botons a enllaços a llocs externs on obrir les fitxers multimèdia.

Podreu veure aquestes possibilitats en la presentacio2.pdf i estudiar-ne el codi al document tex font. Com sempre la recomanació és obrir la presentació en pantalla completa i activar el mode de presentació. Veureu també les transicions de diapositiva que tan sorprenen als que desconeixen el format pdf perquè es conformen amb els pogüerpoins.

Publicat per primera vegada el dimarts 31 de juliol de 2012.

Glossaris amb el paquet glossaries

Usant makeindex per crear glossaris

En l’article Glossaris amb BibTeX ja vàrem veure com crear glossaris senzills amb l’ajut del paquet gloss i BibTeX   En aquesta ocasió veurem com fer-los amb el paquet glossaries, un paquet molt potent que utilitza la feina que fa en segon terme el paquet makeindex (o xindy) per crear glossaris amb enllaços a les pàgines d’ocurrència.

El paquet es crida al final del preàmbul del document després d’hyperref amb diferents opcions, per exemple:
\usepackage[style=treehypergroup,nolong,nosuper,%
%style=nolong,%
%style=nosuper,%
%style=long,%
%style=list,%
%style=super,%
toc,% % surt a la TaulaDeContinguts
translate=false,% % perquè aparegui la traducció catalana
%numberline, % a la TdC alinea al text i no als números
%acronym,% % per l'ús d'acrònims
numberedsection,% % numera (capítol o secció) el Glossari a la TdC
%description,% % permet el camp 'descripció' de les entrades
%footnote,% % posa els textos en notes al peu
%smallcaps,% % escriu els termes en versaletes
]{glossaries}
Ara cal crear les entrades del glossari amb el comandament
\newglossaryentry{etiqueta}{opcions}
per exemple:
\newglossaryentry{etiqueta}{%
name={Nom de l'entrada tal com apareixerà al document},%
description={Breu descripció. Per deixar-ho en blanc escriure description=\nopostdesc. Per fer paràgrafs: \glspar},%
descriptionplural={Plural de la descripció},%
first={Com es veurà l'entrada quan s'utilitzi per primer cop. Si està en blanc s'usa name},%
plural={Com es veu l'entrada quan s'usa \glspl. Si no es diu res s'afegirà al name una s final},%
firstplural={Com es veu l'entrada quan s'usa per primera vegada \glspl},%
symbol={Per associar un símbol a l'entrada, si es deixa en blanc s'associa \relax},%
symbolplural={Per posar el plural del símbol},%
sort={Per indicar com s'ha de classificar alfabèticament},%
type={Etiqueta del glossari al que pertany l'entrada, si no es diu res és el glossari per defecte.},%
see=[vegeu també]{Etiqueta d'una altra entrada per enllaçar-la},%
parent={etiqueta de l'entrada de la que penja pels glossaris en arbre}%
}
A l’exemple següent hem aprofitat el camp symbol per escriure en cursiva el nom científic de l’espècie, hem creat una referència creuada a una altra entrada al camp see i la fem penjar d’una entrada "pare" que recull les entrades d’espècies de rèptils:
\newglossaryentry{tortugaestany}{%
name={tortuga d'estany},%
description={és la tortuga d'aigua autòctona dels Països Catalans i es troba en un estat de conservació de perill d'extinció per culpa de la degradació del seu hàbitat i de la competència d'espècies introduïdes per l'home com la tortuga d'orelles vermelles o la tortuga d'orelles grogues},%
plural={tortugues d'estany},%
symbol={\textit{Emys orbicularis}},%
see=[vegeu també]{tortugarierol},%
parent={reptil}
}
Les entrades es poden posar al preàmbul del propi document, o millor encara, en un document a part que es crida amb el comandament
\loadglsentries{NomFitxerAmbEntradesSenseExtensió}
Finalment activem la creació del glossari amb \makeglossaries, similar al clàssic \makeindex.

Al lloc del document on volem que aparegui el glossari hi posem \printglossary[title=Títol].

El paquet no té traducció catalana per la qual cosa al preàmbul cal fer-ne la traducció dels termes:
\usepackage[catalan]{babel}
\usepackage[catalan]{translator}
\addto\captionscatalan{%
\renewcommand*{\glossaryname}{Glossari}%
\renewcommand*{\acronymname}{Relació d'entrades}%
\renewcommand*{\entryname}{Notació}%
\renewcommand*{\descriptionname}{Descripció}%
\renewcommand*{\symbolname}{Símbol}%
\renewcommand*{\pagelistname}{Pàgina}%
\renewcommand*{\glssymbolsgroupname}{Símbols}%
\renewcommand*{\glsnumbersgroupname}{Nombres}%
}%
Ara ja estem en disposició d’utilitzar els termes del glossari al document. Quan en el nostre text n’apareix un el podem inserir amb algun d’aquests comandaments:

  • \gls{etiqueta} escriurà el contingut del camp name tal com està definit. 
  • \Gls{etiqueta} escriurà el contingut del camp name amb la inicial majúscula. 
  • \glspl{etiqueta} escriurà el contingut del camp plural tal com està definit. 
  • \Glspl{etiqueta} escriurà el contingut del camp plural amb la inicial majúscula. 

Un cop tenim escrit el document hem de seguir aquestes passes per passar-lo a PDF:

1: Processem el document amb
pdflatex NomDelDocument
un parell de cops per crear totes les referències creuades i la TdC.

2: Creem el glossari amb el comandament
makeglossaries NomDelDocument
3: Finalment tornem a processar amb
pdflatex NomDelDocument
Podeu veure el resultat de l’ús del glossari amb l’estil d’arbre (entrades "pare" de la que pengen subentrades) al fitxer PDF adjunt. També trobareu adjunts el document tex font per estudiar-ne el codi o usar-lo de plantilla i el document amb les entrades del glossari.

Publicat per primera vegada el divendres 27 de juliol de 2012.

dilluns, 5 d’agost del 2013

Gràfics de barres amb datatool

datatool és un paquet que permet visualitzar dades a més de gestionar-les (2)

A l’article Gràfics de sectors circulars amb datatool vam veure com representar dades en gràfics de sectors. En el present article veurem com fer-ho en gràfics de barres.

El paquet databar del conjunt datatool permet generar gràfics de barres verticals o horitzontals a partir de les dades d’un fitxer extern en format CSV. Es tracta d’un paquet amb força opcions i comandaments que permeten personalitzar els gràfics obtinguts de manera que representin perfectament les nostres dades.

El paquet es crida al preàmbul del document:
\usepackage[%gray, % no posa colors
%horizontal % Crea gràfics horitzontals
]{databar}
Com que es tracta de gestionar i representar les dades d’un fitxer extern (poblacio.csv en el nostre exemple) abans de res hem de crear una base de dades que també hem anomenant poblacio:
%crea la base de dades 'poblacio' a partir del fitxer extern CSV:
\DTLloaddb{poblacio}{poblacio.csv}
Ara ja podem generar el gràfic amb el comandament \DTLbarchart amb les opcions desitjades:
\DTLbarchart{variable=\poblacio,% % defineix la variable sobre la que crea el gràfic
axes=both,% % mostra els 2 eixos (pot ser també none, x o y
ylabel={Població en milions de persones},% % etiqueta dels valors de l'eix Y
upperbarlabel={\poblacio},% % etiqueta amb el valor sobre la barra
verticalbars=true,% % barres verticals
barlabel=\continent,% % etiquetes de les barres
}
{poblacio}{\poblacio=Poblacio,\continent=Continent}
El paquet, però, permet representar no una sola variable sinó més d’una emprant aleshores el comandament \DTLmultibarchart i definint les variables que volem representar:
\DTLmultibarchart{variables={\poblacio,\esperanca},% representarem 2 variables
axes=both,% % mostra els 2 eixos (pot ser també none, x o y
ylabel={Població en milions de persones i esperança de vida en anys},% % etiqueta eix Y
verticalbars=true,% % barres verticals
barwidth=15pt,% % amplada de les barres en punts
uppermultibarlabels={\poblacio,\esperanca},% posa el valor al capdamunt de la barra
barlabel={\continent}% % etiqueta eix X
}%
{poblacio}{\poblacio=Poblacio,\continent=Continent,\esperanca=Esperanca}
Podeu veure el resultat al fitxer PDF adjunt així com estudiar les dades en el document poblacio.csv i el codi al document tex font.

Publicat per primera vegada el dimarts 17 de juliol de 2012.

Gràfics de sectors circulars amb datatool

datatool és un paquet que permet visualitzar dades a més de gestionar-les

A l’article Personalitzar documents amb datatool vam veure com podíem utilitzar el paquet datatool per gestionar dades carregades des d’un fitxer CSV extern a LaTeX. En aquest ocasió veurem com amb el paquet datapie de la suite datatool podem representar aquestes dades en forma de gràfic de sectors circulars.

Com en altres casos necessitem un fitxer extern amb dades i en format CSV (valors separats per comes) que utilitzarà datapie per representar-les. La primera fila correspon a la definició de les columnes i ens servirà per identificar cada camp.

Al preàmbul cridem el paquet datapie amb les possibles opcions:
\usepackage[%gray, %no posa colors
%rotateinner, %rota etiquetes internes segons el radi.
%rotateouter, %rota etiquetes externes segons el radi.
]{datapie}
Al cos del document carreguem el fitxer de dades i en fem una base de dades. En aquest exemple, com que volem representar la població humana que viu a cada continent, tenim:
\DTLloaddb{poblacio}{poblacio.csv}
on poblacio.csv és el fitxer extern amb les dades i poblacio la BD que es crearà.

Per crear el gràfic s’utilitza el comandament
\DTLpiechart{variable,opcions}{BD}{macros} 
propi de paquet datapie. Aquest comandament admet diferents opcions, per exemple:
\DTLpiechart{variable=\poblacio,% variable sobre la que es crea el gràfic
radius=3.5cm, % radi del gràfic
cutaway={1}, % per separar el sector 1 de la resta
%cutaway={1,2,3}, % per separar els sectors 1, 2 i 3
innerlabel={\DTLpiepercent\%}, % etiqueta interna en percentatge
outerlabel={\continent\ (\DTLpievariable)}, % etiqueta externa amb el valor de "nom"
%rotateinner, % gira els valors interiors
%rotateouter, % gira els valors exteriors
}{poblacio}{\continent=Continent,\poblacio=Poblacio}
El paquet admet força possibilitats de formatació del gràfic, com ara la possibilitat de separar-ne algun sector (com a l’exemple amb l’opció cutaway={1}), formatar el tipus de lletra de les etiquetes:
%canvia la família del tipus de lletra de les etiquetes
\renewcommand*{\DTLdisplayinnerlabel}[1]{\textsf{#1}} %internes
\renewcommand*{\DTLdisplayouterlabel}[1]{\textsf{#1}} %externes
resseguir els sectors amb una línia de color:
%dibuixa una línia al voltant dels segments
\renewcommand{\DTLpieoutlinecolor}{black!20} %color de la línia (per defecte negre)
\setlength{\DTLpieoutlinewidth}{.5pt} %gruix de la línia: 0.5pt
o determinar els colors de cada sector manualment:
% canvia l'ordre dels colors dels segments
\DTLsetpiesegmentcolor{1}{yellow!20}
\DTLsetpiesegmentcolor{2}{OliveGreen!20}
Al document tex adjunt es pot estudiar el codi al fitxer tex font que s'ha emprat per representar les dades del fitxer poblacio.csv i es pot veure el resultat al fitxer PDF.

Publicat per per primer cop el dissabte 14 de juliol de 2012.

Personalitzar documents amb datatool

Una manera fàcil de combinar correspondència

Ja vam parlar en l’article Combinar i personalitzar correspondència amb KOMA-Script sobre com crear cartes personalitzades amb el paquet scrltr2 del conjunt KOMA-Script . En aquesta ocasió, però, veurem com personalitzar documents de tota mena amb el concurs del potent paquet datatool.

 datatool és capaç de crear una base de dades a partir d’un fitxer CSV, un fitxer de text on els valors estan separats per comes. En un fitxer CSV ben formatat la primera fila conté el nom dels camps separats per comes i cada fila subsegüent és un registre amb els diferents camps.  datatool aleshores importa les dades del CSV i hi treballa amb tota la potència d’una base de dades. La detallada documentació del paquet informa que és capaç de gestionar una base de dades, de crear gràfics circulars, lineals o de barres i de personalitzar documentació.

En aquest article ens centrarem en aquest darrer aspecte i per estudiar el cas hem creat un document d’ajuda al professorat que en la primera part li proporciona informació global sobre les qualificacions dels estudiants en conjunt tot calculant diferents mitjanes de notes. La segona part del document són els butlletins de qualificació a lliurar a cada estudiant. Són pàgines independents personalitzades amb el nom de cada estudiant i llurs qualificacions amb indicació de la mitjana.

Per aconseguir-ho partim d’un fitxer en format CSV (dades.csv) amb els següents camps: Nom, Cognom1, Cognom2, Genere, Dni, Email, Assignatura1, Assignatura2, Assignatura3. Aquest fitxer dades.csv s’importa al document en forma de la base de dades anomenada estudiants amb el comandament
\DTLloaddb{estudiants}{dades.csv}
El comandament que fa la màgia és
\DTLforeach{nombasedades}{assignacions}{text} 
perquè per cada registre, cada fila de la base de dades nombasedades primer fa una assignació de camps a macros per, en acabat, usar aquestes macros al text. Vegem-ne un exemple:
\DTLforeach{estudiants}{%
\cognomP=Cognom1,\cognomS=Cognom2,\nom=Nom}{%
\cognomP\\%
\cognomS\\%
\nom}
Aquest comandament agafa cada fila, cada registre de la base de dades estudiants, i assigna cada camp a una macro (a la macro \cognomP li assigna el camp Cognom1, per exemple). Aleshores escriu un a sota de l’altre el contingut de les macros amb el contingut dels camps.

Basant-nos amb aquestes iteracions podem fer que una acció es repeteixi per cada registre obtenint així i amb un sol document font tants documents finals com registres tingui el fitxer de dades. Això és el que permet crear tants documents personalitzats com persones tinguem a la llista. El codi simplificat és el següent:
\DTLforeach{estudiants}{%
\nom=Nom,\cognomP=Cognom1,\cognomS=Cognom2,\asA=Assignatura1,\asB=Assignatura2,\asC=Assignatura3,\mitj=Mitjana% }{%
\vspace*{2cm}%
Comunicació de qualificacions\par
\vspace{3cm}
D'acord amb les dades dipositades en aquesta institució,\\%
en/na \textbf{\nom\ \cognomP\ \cognomS} amb DNI \dni ha obtingut aquestes qualificacions:\par
\begin{tabular}{ccc}
\bfseries Assignatura 1 & \bfseries Assignatura 2 & \bfseries Assignatura 3\\
\asA & \asB & \asC
\end{tabular}\par
resultant una nota mitjana de \DTLround{\mitj}{\mitj}{2}\mitj \par
\vspace{7cm}
Barcelona, \today \par
\newpage}
}
Observeu que primer es fa l’assignació a macros del contingut dels camps (p.ex: \nom=Nom)i després s’escriuen les dades personals i es crea una taula on es representen les qualificacions i, finalment s’escriu la mitjana arrodonida que també calcula un comandament del paquet datatool.

Fixeu-vos que dins la iteració hi ha el comandament \newpage que és el que fa que cada cop que s’acaba un registre es generi una pàgina nova on posar les dades del registre següent.

Val la pena estudiar el document tex font adjunt a l’article per veure les diferents possibilitats amb què podem treballar. També és interessant observar el PDF que en resulta on a les dues primeres pàgines hi ha la informació pel professorat i la resta del document serien els butlletins de qualificacions a repartir als estudiants.


catalatex_logo.png
Visualització Baixa






dades.csv
Baixa






mailmerge.pdf
Visualització Baixa






mailmerge.tex
Baixa





Publicat per primera vegada el dissabte 7 de juliol de 2012.

diumenge, 4 d’agost del 2013

El Diari de laboratori a LaTeX templates

LaTeX templates és un lloc web que vol popularitzar l’ús de LaTeX amb l’aportació per part de la comunitat de plantilles de documents de tipologia força variada per poder ser vistos, descarregats i emprats posteriorment.

És un lloc força nou a la xarxa, però ja es veu que pot ser ple d’agradables sorpreses.

Des de CataLaTeX hi vam enviar un primer treball, el Diari de laboratori que vàrem publicar el passat mes de març. Després d’un temps en estudi l’editor del lloc, en Velimir, finalment ha fet una plantilla molt més general i l’ha publicada al lloc sota l’epígraf de Laboratory books.



L’article es titula Compact Laboratory Book i hi apareix la descripció de la plantilla, l’autor original i un advertiment sobre la necessitat de tenir instal·lada la classe labbook. Veureu que el PDF d’exemple respecta els trets bàsics del Diari i que en millora la generalització.

No sabem si LaTeX templates voldrà publicar més plantilles de cataLaTeX, però el que sí ens estem plantejant és afegir un resum en anglès de cada nou article per augmentar-ne la difusió.

Esperem que trobeu LaTeX templates tant interessant i útil com nosaltres.

Publicat per primer cop el diumenge 3 de juny de 2012.

Pechakucha amb LaTeX

Un PechaKucha 20x20 és un tipus de presentació senzilla en la qual es mostren 20 imatges cadascuna durant 20 segons. Les imatges se succeeixen automàticament mentre el presentador va parlant.

En els esdeveniments d’Ignite els presentadors comparteixen les seves passions personals i professionals també amb 20 diapositives que avancen automàticament però en aquest cas cada 15 segons, cosa que fa que duri només 5 minuts.

Amb LaTeX, en concret amb la classe de diapositives beamer de la que hem parlat en alguns articles d’aquest lloc (feu clic per veure els articles sote l'etiqueta beamer), podem crear fàcilment aquest tipus de presentacions, els pechakucha o els ignite. A tex.stackexchange es va plantejar la pregunta de com fer-ho i les solucions donades són realment elegants i senzilles.

Consisteixen en crear una classe de presentacions, anomenada beamer-lightning.cls, que el que fa és definir un nou comandament, \slideduration, que controla el temps que es mostrarà una diapositiva.

Aquest comandament pot prendre 2 valors: 15 segons per a l’opció de la classe ignite, i 20 segons per a l’opció pechakucha. Després passa aquesta opció a beamer que farà la resta de la feina. I finalment defineix un nou entorn per crear les diapositives i donar-les un títol:
\newenvironment{slide}[1]
{\begin{frame}[environment=slide]
\transduration{\slideduration}
\frametitle{#1}}
{\end{frame}}
Amb això ja podem crear 3 tipus de presentacions:

Una presentació clàssica bàsicament amb text i que avança cada 15 o 20 segons. Vegeu el PDF adjunt anomenat pechakucha.pdf

El segon tipus és més interessant perquè utilitza el paquet pgffor (del conjunt pgf) que permet fer iteracions amb el comandament \foreach. D’aquesta manera si tenim 20 imatges anomenades imatge1, imatge2,...imatgeN podem associar el títol a cadascuna d’elles i anar creant les 20 diapositives de manera automàtica a cada pas de la iteració:
\foreach \slidetitle in {
{Abellerols, els colors de l'estiu}, Ànecs, L'aneguet lleig: el cigne, Fraret, Flamenc, {Inseparables, els Agapornis}} {
\begin{slide}{\slidetitle}
\begin{center}
\includegraphics[height=.75\paperheight]{imatge\thepage.jpg}
\end{center}
\end{slide}
}
Podeu veure el resultat en el document adjunt pechakucha2.pdf.

El tercer tipus és molt semblant a l’anterior però amb la diferència que la iteració no necessita que les imatges tinguin un nom consecutiu sinó qualsevol nom:
\foreach \slidetitle /\imagefile in {
Abellerols /imatge1,
Agapornis /agapornis,
Ànecs mandarins /anecs,
Cignes /cignes,
Flamenc /flamenc,
Fraret /fraret}
{
\begin{slide}{\slidetitle}
\begin{center}
\includegraphics[height=.75\paperheight]{\imagefile.jpg}
\end{center}
\end{slide}
}
Podeu veure el resultat en el document adjunt pechakucha3.pdf.

Podem veure, doncs, que amb aquesta solució tan elegant podem fer fàcilment presentacions perquè s’escurça molt el temps de realització. Podem dedicar-lo ara a triar bones imatges i títols perquè de la feina tècnica s’encarrega, com sempre, LaTeX.


 pechakucha2.pdf
Visualització Baixa






pechakucha2.tex
Baixa






pechakucha3.pdf
Visualització Baixa






pechakucha3.tex
Baixa






pechakucha.pdf
Visualització Baixa





Publicat per primera vegada el diumenge 18 de març de 2012.