Pàgines

Es mostren els missatges amb l'etiqueta de comentaris comandament. Mostrar tots els missatges
Es mostren els missatges amb l'etiqueta de comentaris comandament. Mostrar tots els missatges

dimarts, 30 de juliol del 2013

Llistes amb ordinals

No fa massa, a la llista Usuarios hispanohablantes de TeX es va plantejar el tema de com aconseguir que en una llista numerada apareguessin els ordinals (primer, segon, etc) en lloc del números (1, 2,...).

La solució que es va trobar és la que s’exposa en aquest article on, a més, catalanitzem i ampliarem a altres casos la proposta original publicada pel Sr. Francisco Callejo Giménez.

La solució, per entendre-la millor, es pot dividir en tres fases:

1. Definir un nou comandament, \ordinal, que és el que escriurà el literal de l’ordinal en la llista. En el nostre cas només hem escrit fins a deu ordinals, però es podria continuar fins que calgués simplement afegint-los a la definició:
\newcommand{\ordinal}[1]{\ifcase\value{#1}\or
PRIMER\or SEGON\or TERCER\or QUART\or CINQUÈ\or
SISÈ\or SETÈ\or VUITÈ\or NOVÈ\or DESÈ\fi}
2. Definir un nou comptador: aquí anomenat ordenum:
\newcounter{ordenum}
3. Definir un nou entorn, anomenat ordenum, basat en l’entorn list de LaTeX:
\newenvironment{ordenum}
{\begin{list}{\stepcounter{ordenum}\ordinal{ordenum}.- }{}}
{\end{list}}
Aleshores al nostre document, quan vulguéssim una llista amb aquests ordinals simplement haurem d’escriure:
\begin{ordenum}
\item text
...
\end{ordenum}
El resultat es pot veure al fitxer PDF adjunt, però podem avançar que és semblant a això:
PRIMER text.
SEGON text.
TERCER text
etc.

Seguint la mateixa lògica podem ampliar a altres casos aquesta solució. Per exemple, en el cas d’una Acta de reunió pot ser interessant que aparegui l’ordinal: Primer punt, Segon punt,... O bé en un text legal el literal Article primer, Article segon,...

Per aconseguir-ho seguiríem les mateixes tres fases i podríem obtenir un codi semblant a aquest:
\newcommand{\puntord}[1]{\ifcase\value{#1}\or
\textbf{Primer punt}\or \textbf{Segon punt}\or \textbf{Tercer punt}\or \textbf{Quart punt}\or \textbf{Cinquè punt}\or \textbf{Sisè punt}\or \textbf{Setè punt}\or \textbf{Vuitè punt}\or \textbf{Novè punt}\or \textbf{Desè punt}\fi}
\newcounter{puntnum}
\newenvironment{puntnum}
{\begin{list}{\stepcounter{puntnum}\puntord{puntnum}:}{}}
{\end{list}}
Com és habitual trobareu adjunts a aquest article el document tex font i el PDF que en resulta de processar-lo.

Publicat per primer cop el diumenge 7 de desembre de 2008.

dimarts, 23 de juliol del 2013

Comandaments i declaracions

Quina diferència hi ha entre comandament i declaració?

Tot i que el resultat pot semblar similar cadascun té característiques pròpies. Per obtenir text amb, posem per cas, un tipus de lletra sans serif podem fer-ho per dues vies:


  • amb el comandament \textsf{text}
  • amb la declaració {\sffamily text} 

Quina diferència hi ha entre comandament i declaració? Per a què ens pot anar més bé cadascuna de les dues vies?

  • un comandament ens pot servir per formatar un tros petit de text, algunes paraules dins d’un text molt més llarg escrit en un altre format. Per exemple, amb el codi:  Vet aquí un {\textbf{tros}} de text obtenim la frase amb la paraula tros en negreta: Vet aquí un tros de text. 
  • una declaració, en canvi, se sol utilitzar quan redefinim els nostres propis comandaments. Per exemple, per fer que la capçalera dreta d’un document aparegui formatada en lletra negreta podem escriure: \rhead{\bfseries{text de la capçalera - \thepage}} 

Finalment recordem les equivalències entre els comandaments i les declaracions pel que fa al format de lletra:
comandament declaració resultat
\textrm{text} {\rmfamily text} lletra amb serif (roman)
\textsf{text} {\sffamily text}} lletra sans serif
\texttt{text} {\ttfamily text} lletra de màquina
\textmd{text} {\mdseries text} lletra de gruix mitjà
\textbf{text} {\bfseries text} lletra negreta
\textup{text} {\upshape text} lletra dreta
\textit{text} {\itshape text} lletra itàlica
\textsl{text} {\slshape text} lletra inclinada
\textsc{text} {\scshape text} lletres versaletes
\emph{text} {\em text} text emfatitzat
\textnormal{text} {\normalfont text} lletra normal

Publicat per primera vegada el diumenge 2 d'abril de 2006.

dissabte, 20 de juliol del 2013

Modificar manualment l’índex

A l’índex podem fer aparèixer algun element sense entitat a l’estructura del document.

A vegades al nostre document hi pot haver algun punt que trobem tant interessant que ens agradaria que aparegués a l’índex. Però si no pertany a l’estructura del document, és a dir, si no és cap secció ni subsecció, LaTeX no el reflectirà de forma automàtica quan li ordenem fer l’índex amb \tableofcontents.

Per solucionar-ho, però, tenim el comandament \addcontentsline que afegeix un determinat text del cos del document a l’índex. La seva sintaxi és: 
\addcontentsline{ext}{UnitatEstructura}{Text} 
on ext és l’extensió del fitxer auxiliar on es desa la informació de l’índex de què es tracti:


índex extensió del fitxer
taula de contingut toc
llista de figures lof
llista de taules lot

A UnitatEstructura, que pot prendre els valors chapter (capítol), section (secció), subsection (subsecció), etc. indiquem a quin nivell volem que aparegui el Text a l’índex.

Fixeu-vos en aquest exemple: quan al cos del nostre document escrivim
 \addcontentsline{toc}{subsection}{A destacar} 
en acabat de compilar el fitxer de sortida veurem que a l’índex general del document (toc) apareixerà el text A destacar amb el número de la pàgina on es troba i sagnat al nivell de les altres subseccions. Això sí, no apareix numerat.

Hi ha un altre comandament relacionat que és \addtocontents. Aquest el que fa és que aparegui a l’índex corresponent un determinat text que pot ocupar vàries línies. Però en aquest cas no hi ha ni el número de la pàgina on es troba ni queda sagnat a cap nivell. Pot servir-nos, tanmateix, per posar “etiquetes” en un índex si les trobem necessàries. La sintaxi és:
\addtocontents{toc}{línia 1\\línia 2}
on toc és l’extensió del fitxer auxiliar i línia 1\\línia 2 és el text que apareixerà en aquestes dues línies consecutives.

Estudieu el resultat en el document PDF i, en acabat, podeu trobar l’explicació en el document text font. 

Publicat per primer cop el dimarts 20 de setembre de 2005

Canviar les longituds en un document

LaTeX té predefinides una sèrie de longituds que podem canviar al nostre gust

Quan LaTeX compila un document fa una sèrie de càlculs complexos per col·locar cada cosa al seu lloc. Per tal de poder fer-ho amb exactitud cada classe de document té predefinits els valors d’una sèrie de longituds o distàncies.

Per exemple, l’amplada del paper, anomenada \paperwidth és la suma de diferents longituds: 

  • l’amplada del text escrit \textwidth que, per exemple, a la classe article i en paper a4 fa 12 cm (=360.0 punts) 
  • el marge interior esquerre d’impressió \oddsidemargin o distància des del text escrit fins al marge esquerre d’impressió; sol prendre un valor de 22.0 punts. 
  • el marge esquerre d’impressió, que és la suma de 1 polzada, una distància fixa a la part esquerra del paper, i la distància variable \hoffset o marge horitzontal de sortida, el qual pot prendre valors positius (per exemple, podem escriure al preàmbul: \hoffset=3cm) o valors negatius (per exemple:\hoffset=-2cm)  
  • l’amplada de l’espai reservat a les notes al marge o \marginparwidth 
  •  la distància de la línia de text a les notes al marge, anomenada \marginparsep i que sol ser de 7.0pt 

Com podem fer que la línia de text sigui més ampla? No s’hi val solament a definir-la més llarga, alhora cal reduir una altra variable, en aquest cas el marge horitzontal de sortida \hoffset.

Vegem-ne un exemple: Volem que en un full din a4 l’amplada del text sigui de 14 cm en lloc dels 12 habituals. En conseqüència haurem de redefinir, amb el comandament que afegeix a una longitud \addtolength, les dues variables \textwidth i \hoffset. Per això escriurem al preàmbul aquests dos comandaments: 
\addtolength{\textwidth}{2cm} %afegim 2cm als 12cm del text
 \addtolength{\hoffset}{-1cm} %restem 1cm a l'esquerra per a què la línia segueixi centrada 
Un altre exemple: és molt habitual que quan s’utilitza el paquet \fancyhdr per formatar capçaleres i peus de seguida omplim la capçalera i, al compilar, el sistema ens avisi que l’alçada reservada a la capçalera, anomenada \headheight i que val 12.0pt, s’ha quedat petita i cal redefinir-la. En aquest cas podem escriure al preàmbul:
 \setlength{\headheight}{20pt} %assigna 20 punts a l'alçada de la capçalera 
Observeu la diferència entre els dos comandaments: mentre \addtolength{\distància}{ncm} augmenta la \distància predefinida al sistema en n centímetres, el comandament \setlength{\distància}{npt} assigna a la \distància el valor n punts (o n cm, si convé).

Publicat per primera vegada el dijous 15 de setembre de 2005.

Definint nous comandaments

Els comandaments són ordres que donem a LaTeX per tal d’obtenir determinades accions.

Quan escrivim \newpage fem que LaTeX salti a una pàgina nova. O quan inserim en un document \tableofcontents volem que el sistema ens creï la Taula de continguts del document. Hi ha molts comandaments predefinits a LaTeX, però el sistema també ens permet crear-ne de nous segons les nostres necessitats.

Suposem que en un document de text ens referim molt sovint a una organització, per exemple a cataLàTeX. Per tal d’estalviar-nos feina cada cop que n’hem d’escriure el nom podem definir, al preàmbul del document, un comandament o macro, que així ho faci. Així, escrivint només un parell de caràcters obtindrem, després de compilar, tot el nom sencer. Seguint l’exemple hauríem d’escriure al preàmbul:
 \newcommand*{\cl}{cata\LaTeX{}} 
on definim el nou comandament (\newcommand) anomenat \cl de manera que al punt del cos del document on inserim els caràcters \cl obtindrem, un cop compilat el document, el resultat cataLaTeX 

La definició de nous comandaments ens pot ser molt útil en diferents camps: en documents de text on estalviem feina de teclejar caràcters o donar format en matemàtiques on un comandament, com ara \xsubq pot donar, com a resultat de la compilació, xn2 en altres notacions científiques, com la química o la física, on solament escrivint, posem per cas, \su podem obtenir la fórmula del sulfat de ferro(III) Fe2(SO4)3

A més, un comandament és com una funció i pot tenir fins a 9 arguments numerats #1, #2, ...,#9 cosa que ens dóna encara més possibilitats. Fixeu-vos en aquesta definició de la fórmula del sulfat d’un metall (argument #1) amb la seva valència (argument #2)
 \newcommand*{\su}{#1_{2}(SO_{4})_{#2}} 
quan al nostre document font tex escrivim \su{Al}{3} obtindrem, un cop compilat i passat a PDF, la fórmula Al2(SO4)3

Trobareu molta més informació en el document PDF adjunt i en el fitxer tex font. La recomanació és estudiar-los i comparar-los.

Publicat per primera vegada el dimarts 13 de setembre de 2005

dimecres, 17 de juliol del 2013

Documents molt llargs

LaTeX permet integrar en un document mestre les parts d’un treball llarg

Podem dividir-lo en trossos més petits per facilitar-ne l’edició. Ja sabem que LaTeX va ser creat per processar documents complets i complexos més que no pas textos, cosa que ja fan altres programes, com ara l’OpenOffice.org/libreOffice Writer.

Ara imagineu-vos que heu de fer un llibre o una tesi de, diguem, unes 400 pàgines. Aquest llibre, lògicament, estarà dividit en capítols, seccions, subseccions, etc, oi? Doncs aprofitarem aquesta divisió natural per treballar còmodament amb el manuscrit.

Fixeu-vos en aquest exemple: suposem que la nostra Tesi està composta per una Introducció, 3 Capítols i una Conclusió. Doncs en lloc de tenir un enorme document anomenat tesi.tex amb tot el contingut de la tesi podem fer que contingui únicament l’estructura del document, mentre que el cos de cada capítol va en un fitxer a banda:
introduccio.tex 
capitol1.tex 
capitol2.tex 
 capitol3.tex 
conclusio.tex 
Així el fitxer tesi.tex podria ser una cosa molt senzilla i semblant a això:
\documentclass[11pt]{book} 
\usepackage{paquet} %tots els paquets que necessitem al preàmbul
\begin{document} 
\input{introduccio} 
\input{capitol1} 
\input{capitol2} 
\input{capitol3} 
\input{conclusio} 
\end{document} 

El comandament \input el que fa és dir-li al compilador que vagi a buscar al mateix directori un fitxer amb extensió tex amb el nom indicat. I quin seria el contingut de cada fitxer? El text que nosaltres haguem escrit, però sense la definició de classe ni cap altre element del preàmbul.

Per exemple, introduccio.tex començaria directament així:
\chapter{Introducció}
Text de la introducció....
 

Observeu que tampoc acaba amb \end{document} perquè és tesi.tex qui l’ha de contenir.

Article publicat per primera vegada el 28/5/05

Referències creuades

Amb LaTeX és fàcil anar d’un punt a l’altre del document.

LaTeX permet introduir en qualsevol punt d’un document una referència a un altre punt, per exemple a un índex, un apèndix, una altra secció, etc.

Per poder usar referències creuades cal seguir aquestes dues senzilles passes:

  1. hem d’identificar cada punt al que, després, voldrem fer referència amb el comandament \label{nom_etiqueta} 
  2. un cop identificats els punt ens hi podem adreçar usant una d’aquests dues ordres: 
  • \pageref{nom_etiqueta} ens durà a la pàgina on hi ha la paraula referenciada amb \label{nom_etiqueta} 
  • \ref{nom_etiqueta} ens durà a la paraula referenciada mostrant el número de capítol o secció on es troba la paraula referenciada amb \label{nom_etiqueta} 
És molt important que les etiquetes no estiguin duplicades. I tenir en compte que hi podem posar el que vulguem perquè no es visualitzarà el text, només servirà de codi de referència. Atenció, però, a no usar caràcters estranys.

Exemple d'ús:
\section{Primera secció} \label{primera} %etiqueta identificativa de la secció
text...
Com dèiem en un altre punt \ref{primera} d'aquest document... 

Article publicat per primera vegada el 26/3/2005

Resum d’un document

El resum d'un document ha de contenir les idees més importants.

El resum d’un document ha de contenir les idees més importants i les conclusions a què s’arriba. Però també ha de convidar a la lectura de tot el document.

Amb LaTeX podem incloure un apartat que porti per títol Resum amb aquests comandaments al cos:
\begin{abstract} 
text del resum 
\end{abstract} 

No oblideu cridar al preàmbul el paquet babel per la traducció del títol Abstract per Resum:  
\usepackage[catalan]{babel}

Article publicat per primera vegada el 10/2/2005

Quelcom més que la data: \date

El comandament \date no solament escriu la data del dia en què es va crear el document. Pot contenir altres dades.

Si al preàmbul d’un document, sota el títol i l’autor, introduïm la macro \date obtindrem de forma automàtica la data d’avui.

Però si posem, per exemple: \date{gener 2005} forçarem a LaTeX a escriure gener 2005 al títol del document quan li fem escriure el títol amb la macro \maketitle

+info

Altres macros útils pel títol del document:
macro resultat
\date{gener 2005} gener 2005
\title{Títol} Títol (del document)
\author{Joan Queralt} Joan Queralt (l’autor o autors)
\thanks{Un tercer} "Un tercer" els agraïments a peu de pàgina sota una línia i en lletra petita


Article publicat per primera vegada el 29/1/2005