Pàgines

dijous, 27 de desembre de 2018

Facturació amb LaTeX

Ja hem parlat de com fer factures amb LaTeX en l'article Factures professionals amb l'ajuda del paquet invoice. Malauradament aquest paquet no està essent mantingut i ha quedat un xic desfasat. Per això ha aparegut el paquet invoice2, programat en LaTeX3 per substituir-lo.

invoice2 bàsicament el que fa és crear un entorn, anomenat també invoice, que calcula imports i IVAs dels diferents conceptes de la factura, en calcula el subtotal, li afegeix l'IVA i, finalment, calcula el total a pagar. També situa cadascun d'aquests valors en una taula de manera que sigui de fàcil visualització.

L'entorn invoice té aquesta estructura:

\begin{invoice}[opcions]
\invoiceitem[iva en format decimal]{unitats}{concepte}{preu sense iva}
\end{invoice}

Les opcions no són encara molt variades, és un paquet recent, però si tots els articles tenen el mateix tipus d'IVA, permet posar-lo un sol cop a l'encapçalament de la taula. També permet acolorir les files perquè sigui de més fàcil lectura, usar diferent tipus d'unitat monetària, etc.

Vet aquí un exemple d'ús on cada article té un IVA diferent, s'ha acolorit i  s'utilitza l'euro € com a moneda:

\begin{invoice}[currency-symbol={\euro{}},
currency-in-header,
colorize,
even-color={lightgray!50}]
\invoiceitem[.21]{6}{amp. Vi Castell de Siurana}{6.79}
\invoiceitem[.04]{2.75}{Kg Cigrons de Pedrosillo(import)}{3.31}
\invoiceitem[.10]{6}{caixes Galetes Núria}{3.4}
\end{invoice}

A l'exemple hem utilitzat un document creat amb komaletter per situar aquesta factura i donar-li una aparença més agradable. Però es pot situar en qualsevol mena de document.

Com que el paquet no té traducció catalana, l'hem creat i la trobareu en el fitxer invoice2-catalan.trsl contingut en el comprimit invoice2_komaletter.zip que inclou tots els fitxers font (fins i tot el de configuració de la komaletter asymTypB.lco actualitzat).

Podeu veure el resultat fent clic aquí.

diumenge, 4 de febrer de 2018

Caixes de text

A l'entrada Llibre de format actual vam veure com fer caixes per text amb una icona identificativa amb l'ajut del paquet bclogo. Ara veurem una altra manera, molt potent també però amb el paquet tcolorbox que permet definir diferents tipus de caixa en un document i, a més, referenciar-les internament.

Per defecte una caixa amb tcolorbox es crea com un entorn:

\begin{tcolorbox}
 Contingut de la caixa de text
\end{tcolorbox}

A cada caixa se la pot configurar especialment amb la configuració dels paràmetres corresponents.
Però potser és més interessant és definir un nou tipus de caixa de text en el preàmbul del document amb el comandament \newtcolorbox i, al cos del document, cridar-la simplement com si fos un entorn.

Així al preàmbul podem definir una caixa nova:

\newtcolorbox[auto counter,%comptador automàtic
      number within=section,% %numera per seccions: secció.número de caixa
      ]%
      {caixablava}[2][]%nom de la caixa de text
      {colback=blue!5!white,%color de fons
      colframe=blue!75!black,%color del marc
      fonttitle=\bfseries,%tipus de lletra del títol
      breakable,%es pot trencar entre pàgines
      pad at break*=0mm,
      title=Caixa Blava \thetcbcounter: #2,#1}%títol de la caixa: text fix, comptador i text variable

Quan al contingut del document volem que aparegui alguna d'aquestes caixes simplement escriurem aquest codi:

\begin{caixablava}[label=cb:referencia1]{Primera caixa}
    Contingut de la caixa
\end{caixablava}

Observi's que cada caixa pot tenir una etiqueta (label) que en el nostre cas hem identificat amb el prefix cb. S'ha fet així perquè amb l'ajut del paquet \prettyref després es pot referenciar la caixa per aquesta etiqueta (vegeu l'article Millores en les referències creuades amb prettyref).

Es poden definir diferents tipus de caixa per un document. Per exemple: una caixa d'Exemple, d'Atenció. d'ampliació... que només cal definir un cop, al preàmbul, i cridar-la després al contingut del document en el moment en què sigui menester. Si els posem una etiqueta a cada cqaixa després és fàcil referencial-les i adreçar al lector a la caixa i la pàgina on es troba.

Al document font adjunt caixadetext.tex es pot estudiar el codi i veure com definir diferents tipus de caixa. I es pot veure el resultat, i les referències creuades, al document PDF caixadetext.pdf adjunt.

diumenge, 29 d’octubre de 2017

Extres per a todonotes

En aquest article recollirem algunes millores que podem fer a les nostres notes creades amb el paquet todonotes. Estan basades en preguntes fetes a tex.stackexchange i tenen a veure en com introduir notes a la llista de feines i en com modificar el format de les notes.

Tipus de notes

Podem determinar, segons els color i el principi de la nota, quin serà el contingut de la nota bé adreçat a nosaltres mateixos per quan tornem a editar un document, bé par altres autors que col·laborativament treballin sobre el mateix. Així podem crear notes que expressin:
  • dubtes: marquem un dubte que, més endavant caldrà aclarir. El codi es basa en la creació d'un nou comandament, basat en el de creació de la nota, on donem informació addicional:
\newcommandx{\dubte}[2][1=]{\todo%

[author=\quihofa,linecolor=red,backgroundcolor=red!25,bordercolor=red,#1]%

{\textbf{No n'estic segur:}\\ #2}}
  • Observi's que s'utilitza el comandament \quihofa com autor de la nota per facilitar la identificació de l'autor. Per això prèviament cal haver definit \newcommand{\quihofa}{JoanQueralt}
  • canvis: de la mateixa manera definim un comandament similar amb un altre color i encapçalament:
    \newcommandx{\canvi}[2][1=]{\todo%
    
    [linecolor=blue,backgroundcolor=blue!25,bordercolor=blue,#1]%
    
    {\textbf{Per canviar:}\\ #2}}
    
  • informació o recordatoris (comandament \info)
  • millores, etc.

Format de les notes

El comandament todo que crea les notes del paquet todonotes es pot modificar redefinint-lo amb les noves característiques. Per exemple, hem aconseguit que el tipus de lletra dins les notes sigui sans serif redefinint el comandament d'aquesta manera al preàmbul i després de cridar al paquet:
\makeatletter
\renewcommand{\todo}[2][]{\@bsphack\@todo[#1]{\sffamily{#2}}\@esphack\ignorespaces}
\makeatother

Podeu veure un exemple del resultat d'aquestes modificacions al PDF adjunt i explorar el codi al fitxer todonotes.tex

diumenge, 1 de gener de 2017

El paquet silence

Finalment he descobert com apagar els advertiments (warnings) que koma-script fa cada cop que, per formatar els títols de seccions, utilitzes el paquet titlesec.

És important fer cas dels avisos que dóna LaTeX quan es processa un document perquè et diu quins errors hi ha (greu!), t'adverteix sobre coses que (potser) pots solucionar i, finalment, t'aconsella sobre canvis en determinats punts del document.

No es poden , per tant, obviar els missatges. Tot i això n'hi ha que són una mica enutjosos, com els que dóna el paquet koma-script quan l'utilitzes simultàniament amb titlesec. Es fa difícil no utilitzar titlesec per la facilitat enorme per formatar els títols de capítols, seccions i altres parts del document. Però a koma  no li agrada i apareix un advertiment que diu:

Class scrbook Warning: Usage of package `titlesec' together
(scrbook)              with a KOMA-Script class is not recommended.
(scrbook)              I'd suggest to use the package only
(scrbook)              if you really need it, because it breaks several
(scrbook)              KOMA-Script features, i.e., option `headings' and
(scrbook)              the extended optional argument of the section
(scrbook)              commands.
(scrbook)              Nevertheless, using requested
(scrbook)              package `titlesec' on input line 282.

Afortunadament ha aparegut el paquet silence que obvia determinats advertiments enutjosos i permet centrar-se en els avisos d'error en el processament de documents.

La manera d'utilitzar-lo és molt senzilla: al preàmbul del document només cal dir quins advertiments volem silenciar. Per exemple:

\RequirePackage{silence}

\WarningFilter{titlesec}{Non standard sectioning command}

\WarningFilter{scrbook}{Activating an ugly workaround}

\WarningFilter{scrreprt}{Usage of package}

\WarningFilter{scrbook}{Usage of package `titlesec' together}

\WarningFilter{scrreprt}{Activating an ugly workaround}


Es pot veure que primer cridem al paquet silence i despŕes diem, pel paquet que volem silenciar (el propi titlesec a la primera línia, o a scrbook o scrreprt) quins avisos volem evitar. Després d'utilitzar-lo un cop, i cansat sempre del mateix repetitiu avís, ja no puc prescindir-ne.

Una gran troballa.