Pàgines

dissabte, 4 de gener del 2020

Contingut de capçaleres i peus al marge del document

Feia temps que anava al darrere d'una disposició de pàgina (layout) que havia vist en alguns llibres impresos i que fa molt bonic. Es tracta de posar al marge de la pàgina el que habitualment va a la capçalera o al peu. És a dir, posar-hi el títol del llibre, l'autor, el número de pàgina, el de la secció, etc.

Havia provat de fer-ho jo i no me'n sortia, clar. Així que ho vaig buscar tex.stackexchange.com
però no ho sabia trobar. Tanmateix l'altre dia, inopinadament i mentre buscava una altra cosa, vaig trobar la inspiració: Page numbers vertically centered in the outer page margin
Després de treballar-hi una mica i de mil i una proves, finalment me'n vaig sortir i aconseguí el que volia.

La idea és amb l'ajut de scrlayer  crear una capa nova amb \DeclareNewLayer, que es porta al fons de la pàgina, en la qual es fa aparèixer al marge exterior de la pàgina (outermargin) el títol del document i el número de pàgina, que és el que m'interessava. Com que a l'exemple apareixia el text en horitzontal, l'he fet girar 90 graus i ara apareix en vertical, més elegant.

Per cert, estava treballant en un altre tema que em té capficat amb Komascript i és fer documents fàcilment llegibles amb una longitud de línia curta, d'un 70% de la longitud habitual del text que costa més de llegir. També vaig trobar una pista per a la solució a left or right text alignment in notes depending on odd or even page using scrlayer-notecolumn que, a més em va descobrir la potència del paquet scrlayer —de la suite Komascript—  que fins ara coneixia només per crear estils de pàgina amb capçaleres i peu complexos.

I, com sempre, mentre provava una cosa i l'altra anava repassant la documentació de Komascript on un sempre acaba trobant-hi coses noves i interessants, com ara la possibilitat de definir una pàgina de títol (titlepage) per a llibres i reports amb tota la informació disponible (títol, autor, editorial...) amb els seus propis marges no necessàriament coincidents amb els del text.

Hi buscava, en concret, la possibilitat de crear petites taules de contingut per a capítols, com ara les que fa el paquet minitoc i amb el qual Komascript no és compatible. Resulta que aquest capacitat no està desenvolupada a la suite, però algú n'ha trobat una solució fins que hi sigui: How to write a minitoc with plain KOMA-script? Podeu estudiar-ne el codi al fitxer tex font corresponent al document d'aquesta entrada.

Si voleu veure el document en format PDF, així com el tex font del qual procedeix, visiteu  https://sites.google.com/site/catalatex9/home/koma/contingutalmarge

dijous, 27 de desembre del 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 del 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 del 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