\input texinfo @c $Id: latex2e-es.texi 1144 2023-01-14 23:15:43Z karl $ @comment %**start of header (Esto es para ejecutar Texinfo en una región). @setfilename latex2e-es.info @documentlanguage es @documentencoding utf-8 @set UPDATED Enero 2023 @include common.texi @settitle Manual de referencia extraoficial de @LaTeX{}2e (@value{UPDATED}) @comment %**end of header (Esto es para ejecutar Texinfo en una región). @c Los comandos de LaTeX 2.09 deberían estar presentes ahora, @c xx pero faltan cosas de latex2e. @c xx una lista aleatoria de algunos de los elementos que faltan se @c encuentra al final de este archivo @c xx lee las noticias de latex2e para conocer las novedades. @c @c xx ctan, distribuciones, componentes de TeX @c xx clases y paquetes: requerido, adicional, útil; oberdiek; tipos @c de letra @c xx fusiona índice permutado @c xx fusiona latex-manual de savannah @c xx fusiona estilo de visualización matemática @c xx comprueba sistemáticamente el tipo de átomo matemático indicado @c frente a fontdef.dtx, etc. @c xx revisa ltnews recientes para ver (muchos) cambios @c xx \write of non-ASCII chars (vincent mail del 14 de marzo de 2020 @c 21:39:41) @c xx \nonstopmode etc., si son oficialmente compatibles con LaTeX? @c xx LaTeX define \do en \begin{document} aunque no esté documentado @c xx JH explica nfss en alguna parte @c xx JH expande BiBTeX @c xx JH expande Teorema, matemáticas AMS @c xx JH algo en listas de códigos @c xx JH ligaduras @c @c xx \NewCommandCopy u otros. (Brian Dunn, 21 Dic 2021 06:50:17). @c @c xx La composición tipográfica source2e tiene un índice con todos @c los comandos @c xx del kernel, aunque algunos son internos y no se deberían incluir. @c xx classes.dtx et al. @c xx también http://ctan.org/pkg/macros2e. @c xx Ve también https://ctan.org/pkg/macros2e. @c @c xx Todos los caracteres especiales se deben describir @c definitivamente. @copying Este documento es un manual de referencia extraoficial para @LaTeX{}, un sistema de preparación de documentos, versión @value{UPDATED}. Este manual se tradujo originalmente de @file{LATEX.HLP} v1.0a en la Biblioteca de ayuda de VMS. La versión previa a la traducción fue escrita por George@tie{}D. Greenwade de la Universidad Estatal Sam Houston. La versión 2.09 de @LaTeX{}@tie{} fue escrita por Stephen Gilmore. La versión @LaTeX{}2e fue adaptada desde esta por Torsten Martinsen. Karl Berry hizo más actualizaciones y adiciones, y reconoce con gratitud que ha utilizado @cite{Hypertext Help con @LaTeX{}}, de Sheldon Green, y @cite{Resumen de comandos @LaTeX{}} (para @LaTeX{}@tie{}2.09) por L.@tie{}Botway y C.@tie{}Biemesderfer (publicado por los usuarios del Grupo @TeX{} como @cite{@TeX{}nicas} número 10), como material de referencia. También reconocemos con gratitud el material adicional que aparece en la referencia de latex2e por Martin Herbert Dietze. (De estas referencias no se copió texto directamente). @copyright{} 2010-2023 Nacho Pacheco --- Traducción.@* Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Karl Berry.@* Copyright 1988, 1994, 2007 Stephen Gilmore.@* Copyright 1994, 1995, 1996 Torsten Martinsen. @comment comienzo de la Licencia Se otorga permiso para hacer y distribuir copias textuales de este manual siempre y cuando, se conserve en todas las copias este aviso de derechos de autor y este aviso de permiso. @ignore Se otorga permiso para procesar este archivo a través de TeX e imprimir el resultado, siempre que el documento impreso lleve copia de este permiso y aviso idéntico a este excepto por la eliminación de este párrafo (Este párrafo no es relevante para el manual impreso). @end ignore Se otorga permiso para copiar y distribuir versiones modificadas de este manual bajo las condiciones para la copia literal, siempre que la totalidad del trabajo derivado resultante se distribuya bajo los términos de un aviso de permiso idéntico a este. Se otorga permiso para copiar y distribuir traducciones de este manual a otro idioma, en las condiciones anteriores para versiones modificadas. @comment fin de la Licencia @end copying @c Fusiona en un índice (elegido arbitrariamente para ser el índice de @c conceptos). @syncodeindex fn cp @dircategory TeX @direntry * LaTeX2e: (latex2e). Manual de referencia extraoficial de LaTeX. @end direntry @tex \global\hbadness=10000 % no se queja mucho @end tex @microtype on @html
Este es un manual de referencia extraoficial
para LaTeX. Ve abajo la Tabla de
contenido. Si deseas un tutorial, visita learnlatex.org o
esta lista.
Este manual tiene dos versiones. Una tiene páginas web separadas para cada sección o subsección. También está disponible como una página web única y como un pdf. Ten en cuenta que también hay una edición en Francés mantenida por separado.
Este documento es extraoficial. No ha sido revisado por los mantenedores de LaTeX. Nuestro objetivo es cubrir todos los comandos LaTeX (no privados). Tus comentarios y contribuciones, incluidos los informes de errores, son muy bienvenidos. Ve nuestra página del proyecto para obtener más información, incluida información de licencia e información sobre cómo puedes contribuir a este manual tanto como duplicarlo.
@end html @titlepage @title @LaTeX{}2e: Un manual de referencia extraoficial @subtitle @value{UPDATED} @author @url{@value{LTXREFMAN_HOME_PAGE}} @page @vskip 0pt plus 1filll @insertcopying @end titlepage @shortcontents @contents @c Símbolo de mejor esfuerzo @iftex @macro visiblespace @tex% {@tt@char`@ }% @end tex@c @end macro @macro BES {utf8,math} @math{\math\} @end macro @macro BESU {utf8,math} @code{@backslashchar{}\math\} @end macro @end iftex @ifnottex @macro visiblespace @w{ } @end macro @macro BES {utf8,math} @U{\utf8\} @end macro @macro BESU {utf8,math} @U{\utf8\} @end macro @end ifnottex @macro EnvIndex {env} @findex @r{environment}, @code{\env\} @findex @code{\env\} @r{environment} @end macro @macro PkgIndex {pkg} @cindex @r{package}, @code{\pkg\} @cindex @code{\pkg\} @r{package} @end macro @set NotInPlainTeX No disponible en @TeX{} simple. @set NeedsAMSSymb @value{NotInPlainTeX} En @LaTeX{} necesitas cargar el paquete @package{amssymb}. @set NeedsSTIX @value{NotInPlainTeX} En @LaTeX{} necesitas cargar el paquete @file{stix}. @ifnottex @node Top @top @LaTeX{}2e: Un manual de referencia extraoficial Este documento es un manual de referencia extraoficial (versión @value{UPDATED}) para @LaTeX{}2e, un sistema de preparación de documentos. @end ifnottex @menu * Acerca de este documento:: Informe de errores, etc. * Descripción:: ¿Qué es @LaTeX{}? * Clases de documentos:: Algunas de las diversas clases disponibles. * Tipos de letra:: Cursiva, negrita, máquina de escribir, etc. * Composición:: Controlar la composición de la página. * Seccionado:: Partes, Capítulos, Secciones, etc. * Referencias cruzadas:: Referencia automática. * Entornos:: Tal como enumerar y detallar. * Salto de línea:: Influir en los saltos de línea. * Salto de página:: Influir en los saltos de página. * Notas al pie:: Cómo producir notas a pie de página. * Definiciones:: Define tus propios comandos, etc. * Contadores:: Contadores internos utilizados por @LaTeX{}. * Longitudes:: Los comandos de longitud. * Crear párrafos:: Comandos de párrafo. * Fórmulas math:: Cómo crear fórmulas matemáticas. * Modos:: Modos de párrafo, matemáticas o LR. * Estilos de página:: Varios estilos de composición de página. * Espacios:: Espacio horizontal y vertical. * Cajas:: Hacer cajas. * Color:: Definición y uso de colores. * Gráficos:: Importar gráficos desde fuera de @LaTeX{}. * Inserciones especiales:: Inserción de caracteres reservados y especiales. * Dividir la entrada:: Lidiar con archivos grandes dividiéndolos. * Material de portada/contraportada:: Tablas de contenido, glosarios, índices. * Cartas:: La clase @code{letter}. * Entrada/salida:: Interacción del usuario. * Interfaz de línea de comandos:: Opciones comunes de la línea de comandos. * Plantillas de documentos:: Plantillas de inicio para varias clases de documentos. * Índice:: Índice general. @end menu @node Acerca de este documento @chapter Acerca de este documento @cindex página oficial para el manual Este es un manual de referencia extraoficial para el sistema de preparación de documentos @LaTeX{}2e, que es un paquete de macros para el programa de composición tipográfica @TeX{} (@pxref{Descripción}). La página oficial de este documento es @url{@value{LTXREFMAN_HOME_PAGE}}; Tiene páginas web separadas para cada tema. Alternativamente @url{https://latexref.xyz/dev/latex2e.html} tiene el documento completo en una sola página. Para otros formatos de salida, las fuentes y mucho más información, consulta @url{https://latexref.xyz/dev/}. @cindex @LaTeX{} vs.@: @LaTeX{}2e En este documento, principalmente usaremos `@LaTeX{}' en lugar de `@LaTeX{}2e', ya que la versión anterior de @LaTeX{}@tie{}(2.09) está congelada hace décadas. @cindex naturaleza extraoficial de este manual @cindex Equipo del proyecto @LaTeX{} @findex @email{@value{LTXREFMAN_BUGS}} @r{dirección de correo electrónico} @LaTeX{} es mantenido por un grupo de voluntarios (@url{https://latex-project.org}). La documentación oficial escrita por el proyecto @LaTeX{} está disponible en su sitio web. El presente documento es completamente extraoficial y, no ha sido escrito ni revisado por los mantenedores de @LaTeX{}. @cindex informar errores @cindex reportar errores No envíes informes de errores o cualquier otra cosa sobre este documento. En su lugar, envía todos los comentarios a @email{@value{LTXREFMAN_BUGS}}. Este documento es una referencia, no un tutorial. Hay una gran variedad de otra información disponible sobre @LaTeX{}, en todos los niveles. Aquí tienes algunas introducciones. @table @url @item https://ctan.org/pkg/latex-doc-ptr @findex latex-doc-ptr @r{document} Dos páginas de referencias recomendadas para la documentación de @LaTeX{}. @item https://ctan.org/pkg/first-latex-doc @findex first-latex-doc @r{document} Escribe tu primer documento, con un poco de texto y matemáticas. @item https://ctan.org/pkg/lshort @findex lshort @r{document} Una introducción más larga a @LaTeX{}, traducida a muchos idiomas. @item https://tug.org/begin.html Introducción al sistema @TeX{}, incluido @LaTeX{}, con más referencias @end table @node Descripción @chapter Descripción de @LaTeX{} @cindex descripción de @LaTeX{} @cindex conceptos básicos de @LaTeX{} @cindex Knuth, Donald E. @cindex Lamport, Leslie @cindex @LaTeX{} descripción @LaTeX{} es un sistema para la composición tipográfica de documentos. Originalmente fue creado por Leslie Lamport en 1984, pero ha sido mantenido por un grupo de voluntarios desde hace muchos años (@url{https://latex-project.org}). Se utiliza ampliamente, en particular, pero no exclusivamente, para matemáticas y documentos técnicos. @cindex UTF-8, codificación de entrada @LaTeX{} predeterminada Un usuario de @LaTeX{} escribe un archivo de entrada que contiene texto para componer junto con comandos intercalados. La codificación predeterminada para el texto es UTF-8 (a partir de 2018). Los comandos especifican, por ejemplo, cómo se debe formatear el texto. @LaTeX{} se implementa como un conjunto de las llamadas ``macros'' relacionadas que usa Donald@tie{}E. El programa de composición tipográfica @TeX{} de Knuth o uno de sus derivados, conocidos colectivamente como ``motores''. Así, el usuario produce una salida, normalmente PDF, entregando el archivo de entrada a un motor @TeX{}. (Las siguientes secciones describen todo esto con más detalle). (El término @LaTeX{} también se usa a veces para indicar el lenguaje en el que el documento de entrada está marcado, es decir, para especificar el conjunto de comandos disponible para un usuario de @LaTeX{}. @cindex Lamport @TeX{} @cindex pronunciación El nombre @LaTeX{} es la abreviatura de ``Lamport @TeX{}''. Se pronuncia LAH-teck o LAY-teck, o a veces LAY-tecks. Dentro de un documento, puedes producir el logo con @code{\LaTeX}. Cuando el uso del logotipo no es sensible, como en texto sin formato, escríbelo como @samp{LaTeX}. @menu * Comenzar y terminar:: El principio y final estándar de un documento. * Archivos de salida:: Archivos producidos. * Motores @TeX{}:: Programas que pueden compilar @TeX{} y @LaTeX{}. * Sintaxis del comando @LaTeX{}:: Sintaxis general de los comandos @LaTeX{}. * Entorno:: Un área de la fuente con un comportamiento distinto. * CTAN:: Nuestro repositorio. @end menu @node Comenzar y terminar @section Comenzar y terminar @anchor{Iniciar y finalizar}@c nombre anterior @cindex comenzar y terminar @cindex finalizar e iniciar @cindex Hola, mundo Los archivos @LaTeX{} tienen una estructura global simple, con un comienzo y fin estándar. Este es un pequeño ejemplo. @example \documentclass@{article@} \begin@{document@} Hola, mundo \LaTeX\. \end@{document@} @end example @noindent Cada documento @LaTeX{} tiene una línea @code{\begin@{document@}} y una línea @code{\end@{document@}}. @cindex clase de documento, definida @noindent Aquí, @samp{article} es la @dfn{clase de documento}. Se implementa en un archivo @file{article.cls}. Puedes utilizar cualquier clase de documento en tu sistema. Algunas clases de documentos están definidas por el mismo @LaTeX{} y hay una gran variedad de otras clases ampliamente disponibles. @xref{Clases de documentos}. @cindex preámbulo, definido Puedes incluir otros comandos @LaTeX{} entre los comandos @code{\documentclass} y @code{\begin@{document@}}. Esta área se llama @dfn{preámbulo}. El par @code{\begin@{document@}}, @code{\end@{document@}} define un @cindex entorno @dfn{entorno}; el entorno @samp{document} (y no otros) es obligatorio en todos los documentos @LaTeX{} (@pxref{document}). @LaTeX{} pone a tu disposición muchos entornos que están documentados aquí (@pxref{Entornos}). Muchos más están disponibles para ti desde paquetes externos, sobre todo los disponibles en CTAN (@pxref{CTAN}). Las siguientes secciones tratan sobre cómo producir PDF u otra salida desde un archivo de entrada @LaTeX{}. @node Archivos de salida @section Archivos de salida @LaTeX{} produce un archivo de salida principal y al menos dos archivos auxiliares. El nombre del archivo de salida principal termina en @file{.dvi} o @file{.pdf}. @table @code @item .dvi @findex .dvi @r{archivo} @findex latex @r{comando} @findex xdvi @r{comando} @findex dvips @r{comando} @findex dvipdfmx @r{comando} @findex dvitype @r{comando} @anchor{archivos de salida dvi} Si @LaTeX{} se invoca con el comando del sistema @command{latex} entonces produce un archivo independiente del dispositivo, con extensión @file{.dvi}. Puedes ver este archivo con un comando como @command{xdvi}, o lo puedes convertir a un archivo PostScript @code{.ps} con @command{dvips} o a un archivo de formato de documento portable @code{.pdf} con @command{dvipdfmx}. El contenido del archivo se puede volcar en forma legible por humanos con @command{dvitype}. Hay disponible una amplia gama de programas DVI utilitarios (@url{https://mirror.ctan.org/dviware}). @item .pdf @findex .pdf @r{archivo} @cindex pdf@TeX{} @findex pdflatex @r{comando} @anchor{archivos de salida pdf} Si @LaTeX{} se invoca a través del comando del sistema @command{pdflatex}, entre otros comandos (@pxref{Motores @TeX{}}), entonces la salida principal es un archivo de formato de documento portable (PDF). Típicamente este es un archivo independiente, incluyendo todos los tipos de letra e imágenes necesarias. @end table @LaTeX{} siempre produce al menos dos archivos adicionales. @table @code @item .log @cindex archivo de transcripción @cindex archivo de registro @findex .log @r{archivo} @anchor{registro de archivos de salida} Esta transcripción del archivo contiene información resumida, como una lista de paquetes cargados. También incluye mensajes de diagnóstico y quizás información adicional para cualquier error. @item .aux @cindex archivo auxiliar @findex @r{archivo} .aux @cindex referencias cruzadas, resolviendo @cindex reenviar referencias, resolviendo @cindex referencias, resolver @anchor{archivos de salida aux} La información auxiliar la utiliza @LaTeX{} para cosas como referencias cruzadas. Por ejemplo, la primera vez que @LaTeX{} encuentra una referencia directa --- una referencia cruzada a algo que aún no ha apareció en la fuente --- aparecerá en la salida como un doble signo de interrogación @code{??}. Cuando el lugar al que se hace referencia finalmente aparece en la fuente, entonces @LaTeX{} escribe su información de ubicación en este archivo @code{.aux}. En la siguiente invocación, @LaTeX{} lee la información de ubicación de este archivo y la usa para resolver la referencia, sustituyendo el doble signo de interrogación por la ubicación guardada. @end table @findex @r{archivo} .lof @cindex archivo de lista de figuras @findex .lot @r{archivo} @cindex archivo de lista de tablas @findex .toc @r{archivo} @cindex archivo de tabla de contenido @cindex contenido del archivo @LaTeX{} puede producir aún más archivos, caracterizados por el nombre de archivo terminado. Estos incluyen un archivo @code{.lof} que se usa para hacer una lista de figuras, un archivo @code{.lot} usado para hacer una lista de tablas, y un archivo @code{.toc} utilizado para hacer una tabla de contenido (@pxref{Tabla de contenido etc.}) Una clase particular puede crear otras; la lista no tiene límites. @node Motores @TeX{} @section Motores @TeX{} @cindex motores, @TeX{} @cindex implementaciones de @TeX{} @cindex UTF-8, compatibilidad del motor para @cindex Entrada Unicode, nativa @cindex Tipos de letra TrueType @cindex Tipos de letra OpenType @cindex Archivos de formato @TeX{} (@code{.fmt}) @cindex @LaTeX{} archivos de formato (@code{.fmt}) @cindex archivos de formato, @TeX{} @findex .fmt @r{archivo} @LaTeX{} es un gran conjunto de comandos que ejecuta un programa @TeX{} (@pxref{Descripción}). Tal conjunto de comandos se llama @dfn{format}, y está incorporado en un archivo @code{.fmt} binario, que se puede leer mucho más rápido que la fuente @TeX{} correspondiente. Esta sección ofrece una breve descripción general de los programas @TeX{} que comúnmente están disponibles (también @ref{Interfaz de línea de comandos}). @ftable @code @item latex @itemx pdflatex @findex etex @r{comando} @cindex motor pdf@TeX{} @cindex e-@TeX{} @anchor{motores tex de latex} En @TeX{} Live (@url{https://tug.org/texlive}), si se invoca a @LaTeX{} mediante el comando del sistema @command{latex} o @command{pdflatex}, luego se ejecuta el motor pdf@TeX{} (@url{https://ctan.org/pkg/pdftex}). Cuando se invoca como @command{latex}, la salida principal es un archivo @file{.dvi}; como con @command{pdflatex}, la salida principal es un archivo @file{.pdf}. pdf@TeX{} incorpora las extensiones e-@TeX{} al original del programa Knuth (@url{https://ctan.org/pkg/etex}), incluidas características de programación y composición tipográfica bidireccional, y tiene un montón de extensiones propias. e-@TeX{} está disponible por sí solo como el comando del sistema @command{etex}, pero este es simple @TeX{} (y produce @file{.dvi}). En otras distribuciones @TeX{}, @command{latex} puede invocar a e-@TeX{} en lugar de pdf@TeX{}. En cualquier caso, las extensiones e-@TeX{} se puede suponer que están disponibles en @LaTeX{}. @item lualatex @cindex Lua@TeX{} @anchor{tex motores lualatex} Si @LaTeX{} se invoca a través del comando del sistema @command{lualatex}, se ejecuta el motor Lua@TeX{} (@url{https://ctan.org/pkg/luatex}). Este programa permite escribir código en el lenguaje de programación Lua (@url{http://luatex.org}) para interactuar con la composición tipográfica de @TeX{}. Lua@TeX{} maneja la entrada Unicode UTF-8 de forma nativa, puede manejar OpenType y tipos de letra TrueType, y genera un archivo @file{.pdf} de forma predeterminada. También existe @command{dvilualatex} para generar un archivo @file{.dvi}. @item xelatex @cindex Xe@TeX{} @findex .xdv @r{archivo} @findex xdvipdfmx @anchor{tex motores xelatex} Si @LaTeX{} se invoca con el comando del sistema @command{xelatex}, se ejecuta el motor Xe@TeX{} (@url{https://tug.org/xetex}). Como Lua@TeX{}, Xe@TeX{} admite de forma nativa tipos de letra Unicode UTF-8, TrueType y OpenType, aunque la implementación es completamente diferente, principalmente usando bibliotecas externas en lugar de código interno. Xe@TeX{} produce un archivo @file{.pdf} como salida; no es compatible con la salida DVI. Internamente, Xe@TeX{} crea un archivo @code{.xdv}, una variante de DVI, y traduce eso a PDF usando el programa (@code{x})@code{dvipdfmx}, pero este proceso es automático. El archivo @code{.xdv} es útil solo para depuración. @item platex @itemx uplatex Estos comandos brindan soporte adicional significativo para japonés y otros idiomas; la variante @code{u} es compatible con Unicode. Ve @url{https://ctan.org/pkg/ptex} y @url{https://ctan.org/pkg/uptex}. @end ftable A partir de 2019, hay un comando y formato @code{-dev} complementario para todos los anteriores: @ftable @code @item dvilualatex-dev @itemx latex-dev @itemx lualatex-dev @itemx pdflatex-dev @itemx platex-dev @itemx uplatex-dev @itemx xelatex-dev @cindex candidatos de lanzamiento @cindex pruebas preliminares Estos son candidatos para un próximo lanzamiento de @LaTeX{}. El propósito principal es encontrar y abordar los problemas de compatibilidad antes de un lanzamiento oficial. Estos formatos @code{-dev} facilitan que cualquier persona ayude a probar documentos y código: puedes ejecutar, digamos, @code{pdflatex-dev} en lugar de @code{pdflatex}, sin cambiar nada más en tu entorno. De hecho, es más fácil y más útil ejecutar siempre versiones @code{-dev} en lugar de molestarte en cambiar de un lado a otro. Durante el momento de silencio después de un lanzamiento, los comandos serán equivalentes. No se trata de instantáneas diarias ni de código de desarrollo no probado. Se somete a las mismas pruebas de regresión exhaustiva realizadas por el equipo de @LaTeX{} antes de ser liberado. Para obtener más información, consulta ``El flujo de trabajo de lanzamiento de @LaTeX{} y los formatos @LaTeX{} @code{dev}'' por Frank Mittelbach, @cite{TUGboat} 40:2, @url{https://tug.org/TUGboat/tb40-2/tb125mitt-dev.pdf}. @end ftable @node Sintaxis del comando @LaTeX{} @section Sintaxis del comando @LaTeX{} @cindex sintaxis del comando @findex \ @r{caracteres de inicio de comandos} @findex [...] @r{(para argumentos opcionales)} @findex @{...@} @r{(para argumentos obligatorios)} En el archivo de entrada @LaTeX{}, un nombre de comando comienza con un carácter de barra invertida, @code{\}. El nombre en sí consiste entonces en (a)@tie{}una cadena de letras o (b)@tie{}una única no letra. Los nombres de los comandos de @LaTeX{} distinguen entre mayúsculas y minúsculas, por lo que @code{\pagebreak} es diferente de @code{\Pagebreak} (este último no es un comando estándar). La mayoría de los nombres de los comandos están en minúsculas, pero en cualquier caso debes ingresar todos estos comandos en el mismo caso en que están definidos. Un comando puede ir seguido de cero, uno o más argumentos. Estos argumentos pueden ser obligatorios u opcionales. Los argumentos requeridos están contenidos entre llaves, @code{@{...@}}. Los argumentos opcionales están contenidos entre corchetes, @code{[...]}. En general, pero no universalmente, si el comando acepta un argumento opcional, viene primero, antes de cualquier argumento requerido. Dentro de un argumento opcional, para usar el carácter de corchete de cierre@tie{}(@code{]} ---``bracket'') ocúltalo entre llaves, como en@tie{}@code{\item[corchete de cierre @{]@}]}. Del mismo modo, si un argumento opcional viene al final, sin argumento requerido después de él, entonces, para hacer que el primer carácter del siguiente texto sea un corchete de apertura, ocúltalo entre llaves. @LaTeX{} tiene la convención de que algunos comandos tienen un formato @code{*} que está relacionado con la forma sin un @code{*}, como @code{\chapter} y @code{\chapter*}. La diferencia exacta en el comportamiento varía de comando a comando. Este manual describe todas las opciones aceptadas y las formas @code{*} para el comando que cubre (salvo omisiones involuntarias, alias@:: bugs). @PkgIndex{expl3} @PkgIndex{xparse} @cindex sintaxis @LaTeX{}3 A partir del lanzamiento 2020-10-01 de @LaTeX{}, @package{expl3} y los paquetes @package{xparse} son parte del formato @LaTeX{}2e. Ellos proporcionan una sintaxis del lenguaje de programación subyacente completamente diferente. No intentaremos cubrirlos en este documento; ve la documentación del paquete relacionado y otros manuales de @LaTeX{}. @node Entorno @section Entorno Sinopsis: @example \begin@{@var{nombre-entorno}@} ... \end@{@var{nombre-entorno}@} @end example Un @dfn{entorno} es un área de la fuente @LaTeX{}, dentro de la cual hay un comportamiento distinto. Por ejemplo, para poesía en @LaTeX{} coloca las líneas entre @code{\begin@{verse@}} y @code{\end@{verse@}}. @example \begin@{verse@} Había una vez un hombre de Nantucket \\ ... \end@{verse@} @end example @xref{Entornos}, para obtener una lista de entornos. Particularmente notable es que todo documento @LaTeX{} debe tener un entorno @code{document}, un par @code{\begin@{document@} ... \end@{document@}}. El @var{nombre-entorno} al principio debe coincidir exactamente con el de el fin. Esto incluye el caso donde @var{nombre-entorno} termina en una estrella@tie{}(@code{*}); los textos @code{\begin} y @code{\end} deben incluir la estrella. Los entornos pueden tener argumentos, incluidos argumentos opcionales. Este ejemplo produce una tabla. El primer argumento es opcional (y provoca que la tabla se alinee en su fila superior) mientras que el segundo argumento es requerido (especifica el formato de las columnas). @example \begin@{tabular@}[t]@{r|l@} ... filas de la tabla ... \end@{tabular@} @end example @node CTAN @section CTAN: La red integral de archivo @TeX{} @cindex CTAN La red integral de archivos @TeX{}, CTAN, es el repositorio de material gratuito de la comunidad @TeX{} y @LaTeX{}. Es un conjunto de sitios de Internet de todo el mundo que ofrecen material relacionado con @LaTeX{} para descargar. Visita CTAN en la web en @url{https://ctan.org}. Este material está organizado en paquetes, paquetes discretos que típicamente ofrecen alguna funcionalidad coherente y son mantenidos por una persona o un pequeño número de personas. Por ejemplo, muchos editores tienen un paquete que permite a los autores dar formato a los artículos según especificaciones del editor. Además de las existencias masivas, el sitio web @code{ctan.org} ofrece funciones como la búsqueda por nombre o por funcionalidad. @cindex DANTE e.V. CTAN no es un solo anfitrión, sino un conjunto de anfitriones, uno de los cuales es el llamado ``maestro''. El anfitrión maestro administra activamente el material, por ejemplo, aceptando cargas de material nuevo o paquetes actualizados. Durante muchos años, ha sido alojado por el grupo @TeX{} alemán, DANTE e.V. @cindex espejos de CTAN Otros sitios alrededor del mundo ayudan con la duplicación, es decir, sincronizar automáticamente sus colecciones con el sitio maestro y luego, a su vez, ponen sus copias a disposición del público. Esto proporciona a los usuarios cercanos a su ubicación mejor acceso y alivia la carga en el sitio maestro. La lista de espejos está en @url{https://ctan.org/mirrors}. @node Clases de documentos @chapter Clases de documentos @cindex clases de documentos @cindex documentos, clases de @findex \documentclass La clase general del documento se define con este comando, que normalmente es el primer comando en un archivo fuente @LaTeX{}. @example \documentclass[@var{options}]@{@var{class}@} @end example @findex article @r{class} @findex report @r{class} @findex book @r{class} @findex letter @r{class} @findex diapositivas @r{clase} Los siguientes nombres de @var{class} de documento están integrados en @LaTeX{}. (Muchas otras clases de documentos están disponibles como paquetes separados; @pxref{Descripción}). @table @code @item article @anchor{clase de documento article} Para un artículo de revista, una presentación y varios usos generales. @item book @anchor{clase de documento book} Libros completos, incluidos capítulos y posiblemente una contra portada en el anverso, como un prefacio, y asunto posterior, como un apéndice (@pxref{Material de portada/contraportada}). @item letter @anchor{clase de documento letter} Correo, opcionalmente incluyendo etiquetas postales (@pxref{Cartas}). @item report @anchor{clase de documento report} Para documentos de longitud entre un @code{article} y un @code{book}, como informes técnicos o tesis, que pueden contener varios capítulos. @item slides @anchor{clase de documento slides} Para presentación de diapositivas---rara vez utilizado hoy día. El paquete @package{beamer} es quizás el más frecuentemente utilizado (@url{https://ctan.org/pkg/beamer}). @xref{Plantilla beamer}, para una pequeña plantilla para un documento beamer. @end table Las @var{options} estándar se describen en la siguiente sección. @menu * Opciones de la clase documento:: Opciones globales. * Paquetes adicionales:: Atrae paquetes. * Construcción de clase y paquete:: Crea nuevas clases y paquetes. @end menu @node Opciones de la clase documento @section Opciones de la clase documento @cindex opciones de la clase documento @cindex opciones, clase de documento @cindex opciones de clase @cindex opciones globales Puedes especificar @dfn{opciones globales} u @dfn{opciones de clase} al comando @code{\documentclass} encerrándolas entre corchetes. Para especificar más de una @var{opción}, sepáralas con una coma. @example \documentclass[@var{option1},@var{option2},...]@{@var{class}@} @end example Aquí está la lista de las opciones de clase estándar. @findex 10pt @r{option} @findex 11pt @r{option} @findex 12pt @r{opción} Todas las clases estándar excepto @code{slides} aceptan las siguientes opciones para seleccionar el tamaño del tipo de letra (el valor predeterminado es @code{10pt}): @example 10pt 11pt 12pt @end example @findex a4paper @r{option} @findex a5paper @r{option} @findex b5paper @r{option} @findex executivepaper @r{option} @findex legalpaper @r{option} @findex letterpaper @r{opción} Todas las clases estándar aceptan estas opciones para seleccionar el tamaño del papel (estos muestran alto por ancho): @table @code @item a4paper 210 por 297@dmn{mm} (alrededor de 8.25 por 11.75@tie{}pulgadas) @item a5paper 148 por 210@dmn{mm} (alrededor de 5.8 por 8.3@tie{}pulgadas) @item b5paper 176 por 250@dmn{mm} (alrededor de 6.9 por 9.8@tie{}pulgadas) @item executivepaper 7.25 por 10.5@tie{}pulgadas @item legalpaper 8.5 por 14@tie{}pulgadas @item letterpaper 8.5 por 11@tie{}pulgadas (el predeterminado) @end table @findex \pdfpagewidth @findex \pdfpageheight @PkgIndex{geometría} Al usar uno de los motores pdf@LaTeX{}, Lua@LaTeX{} o Xe@LaTeX{} (@pxref{Motores @TeX{}}), otras opciones a que @code{letterpaper} configura el área de impresión, pero también debes establecer el tamaño físico del papel. Una manera de hacer eso es poner @code{\pdfpagewidth=\paperwidth} y @code{\pdfpageheight=\paperheight} en el preámbulo de tu documento. @PkgIndex{geometría} El paquete @package{geometry} proporciona formas flexibles de configurar el área de impresión y tamaño de página física. @findex draft @r{option} @findex final @r{option} @findex fleqn @r{option} @findex landscape @r{option} @findex leqno @r{option} @findex openbib @r{option} @findex titlepage @r{option} @findex notitlepage @r{opción} Varias otras opciones: @table @code @item draft @itemx final @cindex cajas negras, omitir Marca cajas (@code{draft}) o no marcar (@code{final}) cajas demasiado llenas con un recuadro negro al margen; el valor predeterminado es @code{final}. @item fleqn @cindex ecuaciones a la izquierda @cindex ecuaciones centradas @cindex ecuaciones, vaciar a la izquierda vs.@: centradas Coloca las fórmulas mostradas alineadas a la izquierda; de manera predeterminada están centradas. @item landscape @cindex orientación landscape @cindex orientación retrato Selecciona el formato apaisado; el valor predeterminado es retrato. @item leqno @cindex números de ecuación de la izquierda @cindex números de ecuación de la derecha @cindex números de ecuación, izquierda vs.@: derecha Poner números de ecuación en el lado izquierdo de las ecuaciones; de manera predeterminada es el lado derecho. @item openbib @cindex Formato de bibliografía, abierto Utiliza el formato de bibliografía ``abierta''. @item titlepage @itemx notitlepage @cindex página de título, separada o corrida Especifica si hay una página separada para la información del título y para el resumen también, si lo hay. El valor predeterminado para la clase @code{report} es @code{titlepage}, para las otras clases es @code{notitlepage}. @end table Las siguientes opciones no están disponibles con la clase @code{slides}. @findex onecolumn @r{option} @findex twocolumn @r{option} @findex oneside @r{option} @findex twoside @r{option} @findex openright @r{option} @findex openany @r{option} @table @code @item onecolumn @itemx twocolumn Composición tipográfica en una o dos columnas; el valor predeterminado es @code{onecolumn}. @item oneside @itemx twoside @findex \evensidemargin @findex \oddsidemargin @c xx TODO vuelve a alinear en la versión francesa, que es más @c precisa. Selecciona el diseño de uno o dos lados; el valor predeterminado es @code{oneside}, excepto que en la clase @code{book} el valor predeterminado es @code{twoside}. Para la impresión a una cara, el texto se centra en la página. Para impresión a dos caras, el parámetro @code{\evensidemargin} (@code{\oddsidemargin}) determina la distancia en páginas pares (impares) entre el lado izquierdo de la página y el margen izquierdo del texto, con @code{\oddsidemargin} siendo el 40% de la diferencia entre @code{\paperwidth} y @code{\textwidth} y @code{\evensidemargin} es el resto. @item openright @itemx openany Determina si un capítulo debe comenzar en una página de la derecha; el valor predeterminado es @code{openright} para @code{book} y @code{openany} para @code{report}. @end table @findex clock @r{opción para la clase @code{slides}} La clase @code{slides} ofrece la opción @code{clock} para imprimir lo hora en la parte inferior de cada nota. @node Paquetes adicionales @section Paquetes adicionales @cindex cargando paquetes adicionales @cindex paquetes, cargando adicionales @cindex paquetes adicionales, cargando @findex \usepackage Carga un paquete @var{pkg}, con las opciones de paquete dadas en la lista @var{options} separada por comas, como aquí. @example \usepackage[@var{options}]@{@var{pkg}@}. @end example Para especificar más de un paquete, lo puedes separar con una coma, como en @code{\usepackage@{@var{pkg1},@var{pkg2},...@}}, o usa múltiples comandos @code{\usepackage}. @cindex opciones globales @cindex globales, opciones Cualquier opción dada en el comando @code{\documentclass} que sea desconocida para la clase document seleccionada se pasa a los paquetes cargados con @code{\usepackage}. @node Construcción de clase y paquete @section Construcción de clase y paquete @cindex comandos de clase de documento @cindex comandos, clase de documento @cindex nuevos comandos de clase Puedes crear nuevas clases de documentos y nuevos paquetes. Por ejemplo, si tus memorandos deben cumplir con algunos requisitos locales, como un encabezado estándar para cada página, entonces podrías crear una nueva clase @code{smcmemo.cls} y comienza tus documentos con @code{\documentclass@{smcmemo@}}. Lo que separa a un paquete de una clase de documento es que los comandos en un paquete son útiles en todas las clases, mientras que los de una clase de documento son específicos de esa clase. Por lo tanto, un comando para establecer encabezados de página es para un paquete mientras que un comando para hacer que los encabezados de página digan @code{Memo desde el departamento de matemáticas SMC} es para una clase. @cindex diferencia de clase y paquete @cindex diferencia entre clase y paquete Dentro de un archivo de clase o paquete, puedes usar el signo @code{@@} como carácter en nombres de comandos sin tener que rodear el código que contiene ese comando con @code{\makeatletter} y @code{\makeatother}. @xref{\makeatletter y \makeatother}. Esto te permite crear comandos que los usuarios no redefinirán accidentalmente. Otra técnica es prefijar comandos específicos de clase o paquete con alguna cadena para evitar que tu clase o paquete interfiera con otros. Por ejemplo, la clase @code{smcmemo} podría tener comandos @code{\smc@@tolist}, @code{\smc@@fromlist}, etc. @menu * Estructura de clase y paquete:: Composición del archivo. * Comandos class y package:: Lista de comandos. @end menu @node Estructura de clase y paquete @subsection Estructura de clase y paquete @cindex estructura de clase y paquete @cindex composición del archivo de clase @cindex composición del archivo del paquete @cindex opciones, clase de documento @cindex opciones, paquete @cindex opciones de clase @cindex opciones de paquete Un archivo de clase o un archivo de paquete normalmente consta de cuatro partes. @enumerate @item En la @dfn{parte de identificación}, el archivo dice que es un paquete o clase @LaTeX{} y se describe a sí mismo, usando @code{\NeedsTeXFormat} y los comandos @code{\ProvidesClass} o @code{\ProvidesPackage}. @item La @dfn{parte de declaraciones preliminares} declara algunos comandos y también puede cargar otros archivos. Generalmente, estos comandos serán los necesarios para el código utilizado en la siguiente parte. Por ejemplo, una clase @code{smcmemo} se puede llamar con una opción para leer un archivo con una lista de personas para el encabezado, como @code{\documentclass[mathto]@{smcmemo@}}, y por lo tanto necesitas definir un comando @code{\newcommand@{\setto@}[1]@{\def\@@tolist@{#1@}@}} usado en ese archivo. @item En @dfn{manejar la parte de opciones} la clase o paquete declara y procesa sus opciones. Las opciones de clase permiten que un usuario comience su documento como @code{\documentclass[@var{lista de opciones}]@{@var{nombre de clase}@}}, para modificar el comportamiento de la clase. Un ejemplo es cuando declaras @code{\documentclass[11pt]@{article@}} para establecer el valor predeterminado para el tamaño del tipo de letra del documento. @item Finalmente, en la @dfn{parte de más declaraciones} la clase o paquete suele hacer la mayor parte de su trabajo: declarar nuevas variables, comandos y tipos de letra y cargar otros archivos. @end enumerate Aquí hay un archivo de clase inicial, que se debe guardar como @file{stub.cls} donde @LaTeX{} lo pueda encontrar, por ejemplo en el mismo directorio que el archivo @file{.tex}. @example \NeedsTeXFormat@{LaTeX2e@} \ProvidesClass@{stub@}[2017/07/06 auxiliar para comenzar a crear clases desde] \DeclareOption*@{\PassOptionsToClass@{\CurrentOption@}@{article@}@} \ProcessOptions\relax \LoadClass@{article@} @end example @cindex ejemplo de archivo de clase @noindent Se identifica a sí mismo, maneja las opciones de clase a través del valor predeterminado pasándolos todos a la clase @code{article}, y luego carga la clase @code{article} para proporcionar la base para el código de esta clase. Para obtener más información, consulta la guía oficial para escritores de clases y paquetes, la clase Guide, en @url{https://www.latex-project.org/help/documentation/clsguide.pdf} (muchas de las descripciones aquí se derivan de este documento), o el tutorial @url{https://www.tug.org/TUGboat/tb26-3/tb84heff.pdf}. @node Comandos class y package @subsection Comandos class y package @cindex Comandos class y package @cindex comandos, clase y paquete Estos son los comandos diseñados para ayudar a los escritores de clases o paquetes. @table @code @item \AtBeginDvi@{especiales@} @findex \AtBeginDvi Guarda en un cuadro de registro las cosas que se escriben en el archivo @file{.dvi} al comienzo del envío de la primera página del documento. @item \AtEndOfClass@{@var{code}@} @itemx \AtEndOfPackage@{@var{code}@} @findex \AtEndOfClass @findex \AtEndOfPackage Gancho para insertar @var{code} para que se ejecute cuando @LaTeX{} termine procesando la clase o paquete actual. Puedes usar estos ganchos varias veces; el @code{código} se ejecutará en el orden en que lo llames. Consulta también @ref{\AtBeginDocument}. @item \CheckCommand@{@var{cmd}@}[@var{num}][@var{default}]@{@var{definition}@} @itemx \CheckCommand*@{@var{cmd}@}[@var{num}][@var{default}]@{@var{definition}@} @findex \CheckCommand @findex \CheckCommand* @cindex nuevo comando, comprobar Similar a @code{\newcommand} (@pxref{\newcommand y \renewcommand}) pero no define @var{cmd}; en su lugar, comprueba que la definición actual de @var{cmd} es o no es exactamente como la @var{definition} @cindex comando long @dfn{long} como se esperaba. Un comando largo es un comando que acepta @code{\par} dentro de un argumento. Se espera que el comando @var{cmd} sea largo con la versión sin estrella de @code{\CheckCommand}. Levanta un error cuando la comprobación falla. Esto te permite comprobar antes de empezar a redefinir @code{cmd} tú mismo que ningún otro paquete ya haya redefinido este comando. @item \ClassError@{@var{class name}@}@{@var{error text}@}@{@var{help text}@} @itemx \ClassWarning@{@var{class name}@}@{@var{warning text}@} @itemx \ClassWarningNoLine@{@var{class name}@}@{@var{warning text}@} @itemx \ClassInfo@{@var{class name}@}@{@var{info text}@} @itemx \ClassInfoNoLine@{@var{class name}@}@{@var{info text}@} @itemx \PackageError@{@var{package name}@}@{@var{error text}@}@{@var{help text}@} @itemx \PackageWarning@{@var{package name}@}@{@var{warning text}@} @itemx \PackageWarningNoLine@{@var{package name}@}@{@var{warning text}@} @itemx \PackageInfo@{@var{package name}@}@{@var{info text}@} @itemx \PackageInfoNoLine@{@var{package name}@}@{@var{info text}@} @findex \ClassError @findex \PackageError @findex \ClassWarning @findex \PackageWarning @findex \ClassWarningNoLine @findex \PackageWarningNoLine @findex \ClassInfo @findex \PackageInfo @findex \ClassInfoNoLine @findex \PackageInfoNoLine Produce un mensaje de error, o mensajes de advertencia o informativo. Para @code{\ClassError} y @code{\PackageError} el mensaje es @var{texto de error}, seguido del indicador de error @code{?} de @TeX{}. Si el usuario luego, pide ayuda escribiendo @code{h}, ve el mensaje @var{texto de ayuda}. Los cuatro comandos de advertencia son similares excepto que escriben @var{texto de advertencia} en la pantalla sin mensaje de error. Los cuatro comandos escriben @var{texto info} solo en el archivo de transcripción. Las versiones de @code{NoLine} no muestran el número de la línea que genera el mensaje, mientras que las otras versiones muestran ese número. Para dar formato a los mensajes, incluido el @var{texto de ayuda}: usa @code{\protect} para evitar que un comando se expanda, obtén un salto de línea con @code{\MessageBreak}, y obtén un espacio con @code{\space} cuando un carácter de espacio no lo permite, como después de un comando. Ten en cuenta que @LaTeX{} añade un punto a los mensajes. @item \CurrentOption @findex \CurrentOption Expande al nombre de la opción que se está procesando actualmente. Sólo se pueden usar dentro del argumento @var{code} de @code{\DeclareOption} o @code{\DeclareOption*}. @item \DeclareOption@{@var{option}@}@{@var{code}@} @itemx \DeclareOption*@{@var{code}@} @findex \DeclareOption @findex \DeclareOption* @cindex opciones de clase @cindex opciones de paquete @cindex opciones, clase @cindex opciones, paquete Hace que una opción esté disponible para que un usuario la invoque en su comando @code{\documentclass}. Por ejemplo, la clase @code{smcmemo} podría tener una opción @code{\documentclass[logo]@{smcmemo@}} que permita a los usuarios colocar el logo institucional en la primera página. El archivo de clase debe contener @code{\DeclareOption@{logo@}@{@var{code}@}} (y más tarde, @code{\ProcessOptions}). Si solicitas una opción que no ha sido declarada, de manera predeterminada esta producirá una advertencia como @code{Opciones globales no utilizadas: [badoption]}. Cambia este comportamiento con la versión destacada @code{\DeclareOption*@{@var{code}@}}. Por ejemplo, muchas clases extienden una clase existente, usando un comando como @code{\LoadClass@{article@}}, y para pasar opciones adicionales al código de uso de clase subyacente como este. @example \DeclareOption*@{% \PassOptionsToClass@{\CurrentOption@}@{article@}% @} @end example Otro ejemplo es que la clase @code{smcmemo} puede permitir a los usuarios mantener listas de destinatarios de notas en archivos externos. Entonces el usuario podría invocar @code{\documentclass[math]@{smcmemo@}} y leerá el archivo @code{math.memo}. Este código maneja el archivo si existe y de lo contrario pasa la opción a la clase @code{article}. @example \DeclareOption*@{\InputIfFileExists@{\CurrentOption.memo@}@{@}@{% \PassOptionsToClass@{\CurrentOption@}@{article@}@}@} @end example @item \DeclareRobustCommand@{@var{cmd}@}[@var{num}][@var{default}]@{@var{definition}@} @item* \DeclareRobustCommand*@{@var{cmd}@}[@var{num}][@var{default}]@{@var{definition}@} @findex \DeclareRobustCommand @findex \DeclareRobustCommand* @cindex nuevo comando, definición Como @code{\newcommand} y @code{\newcommand*} (@pxref{\newcommand y \renewcommand}) pero estos declaran un comando robusto, incluso si algún código dentro de la @var{definición} es frágil. (Para una discusión de comandos robustos y frágiles @pxref{\protect}). Usa este comando para definir nuevos comandos robustos o para redefinir comandos existentes y hacerlos robustos. A diferencia de @code{\newcommand}, estos no dan un error si la macro @var{cmd} ya existe; en su lugar, se coloca un mensaje de registro en el archivo de transcripción si se redefine un comando. Los comandos definidos de esta manera son un poco menos eficientes que los definidos usando @code{\newcommand} así que, a menos que los datos del comando sean frágiles y el comando se use dentro de un argumento en movimiento, usa @code{\newcommand}. @PkgIndex{etoolbox} El paquete @package{etoolbox} ofrece los comandos @code{\newrobustcmd}, @code{\newrobustcmd*}, así como los comandos @code{\renewrobustcmd}, @code{\renewrobustcmd*} y los comandos @code{\providerobustcmd} y @code{\providerobustcmd*}. Estos son similares a @code{\newcommand}, @code{\newcommand*}, @code{\renewcommand}, @code{\renewcommand*}, @code{\providecommand} y @code{\providecommand*}, pero define un @var{cmd} robusto con dos ventajas en comparación con @code{\DeclareRobustCommand}: @enumerate @item Utilizan el mecanismo de protección de bajo nivel e-@TeX{} en lugar del mecanismo @code{\protect} @LaTeX{} de nivel superior, por lo que no incurren la ligera pérdida de rendimiento mencionada anteriormente, y @item Hacen la misma distinción entre @code{\new@dots{}}, @code{\renew@dots{}} y @code{\provide@dots{}}, como comandos estándar, por lo que no solo hacen un mensaje de registro cuando redefines @var{cmd} que ya existe, en ese caso necesitas usar @code{\renew@dots{}} o @code{\provide@dots{}} o recibes un error. @end enumerate @item \IfFileExists@{@var{filename}@}@{@var{true code}@}@{@var{false code}@} @itemx \InputIfFileExists@{@var{filename}@}@{@var{true code}@}@{@var{false code}@} @findex \IfFileExists @findex \InputIfFileExists Ejecuta @var{código verdadero} si @LaTeX{} encuentra el archivo @file{@var{nombre de archivo}} o @var{código falso} de lo contrario. En el primer caso se ejecuta @var{código verdadero} y entonces ingresa el archivo. Así el comando @example \IfFileExists@{img.pdf@}@{% \includegraphics@{img.pdf@}@}@{\typeout@{!! img.pdf no encontrado@} @end example @noindent incluirá el gráfico @file{img.pdf} si se encuentra y de lo contrario dará un aviso. Este comando busca el archivo en todas las rutas de búsqueda que usa @LaTeX{}, no solo en el directorio actual. Mirar solo en el directorio actual hace algo como @code{\IfFileExists@{./filename@}@{@var{código verdadero}@}@{@var{código falso}@}}. Si solicitas un nombre de archivo sin una extensión @code{.tex} entonces @LaTeX{} primero buscará el archivo agregando la extensión @code{.tex}; para obtener más información sobre cómo @LaTeX{} maneja las extensiones de archivo @ref{\input}. @item \LoadClass[@var{options list}]@{@var{class name}@}[@var{release date}] @itemx \LoadClassWithOptions@{@var{class name}@}[@var{release date}] @findex \LoadClass @findex \LoadClassWithOptions Carga una clase, como con @code{\documentclass[@var{lista de opciones}]@{@var{nombre de clase}@}[@var{información de publicación}]}. Un ejemplo es @code{\LoadClass[twoside]@{article@}}. La @var{options list}, si está presente, es una lista separada por comas. La @var{fecha de lanzamiento} es opcional. Si está presente debe tener la forma @var{AAAA/MM/DD}. @c Por cierto, hay at-macros documentadas en macros2e.pdf para @c comprobar la versión y, condicionalmente, realizar algunas acciones @c en la versión posterior o no en algunas fechas. Si solicitas una @var{fecha de lanzamiento} y la fecha del paquete instalado en tu sistema es anterior, recibes una advertencia en la pantalla y en el registro como esta. @example Has solicitado, en la línea de entrada 4, la versión `2038/01/19' de la clase de documento ``article'', pero solo la versión `2014/09/29 v1.4h La clase de documento LaTeX estándar' está disponible. @end example La versión del comando @code{\LoadClassWithOptions} usa la lista de opciones para la clase actual. Esto significa que ignora cualquier opción pasada a través de @code{\PassOptionsToClass}. Este es un comando de conveniencia que te permite construir clases sobre las existentes, como la clase @code{article} estándar, sin tener que rastrear qué opciones se pasaron. @item \ExecuteOptions@{@var{options-list}@} @findex \ExecuteOptions Para cada opción @var{option} en la @var{lista de opciones}, en orden, este comando ejecuta el comando @code{\ds@@@var{option}}. Si este comando no está definido, entonces esa opción se ignora silenciosamente. Se puede utilizar para proporcionar una lista de opciones predeterminada antes @code{\ProcessOptions}. Por ejemplo, si en un archivo de clase deseas que el predeterminado sea el tipo de letra de 11 puntos, entonces podrías especificar @code{\ExecuteOptions@{11pt@}\ProcessOptions\relax}. @item \NeedsTeXFormat@{@var{format}@}[@var{formato de fecha}] @findex \NeedsTeXFormat Especifica el formato con el que se debe ejecutar esta clase. A menudo emitido como la primera línea de un archivo de clase, y se usa con mayor frecuencia como: @code{\NeedsTeXFormat@{LaTeX2e@}}. Cuando un documento que usa esa clase es procesado, el nombre de formato proporcionado aquí debe coincidir con el formato que en realidad se está ejecutando (incluyendo que la cadena @var{format} es sensible a mayúsculas y minúsculas). Si no coincide, la ejecución se detiene con un error como @samp{Este archivo necesita formato `LaTeX2e' pero es `xxx'.} Para especificar una versión del formato que sabes que tiene ciertas características, incluye el @var{formato de fecha} opcional en el que esas características fueron implementadas. Si está presente, debe tener el formato @code{YYYY/MM/DD}. Si la versión del formato instalada en tu sistema es anterior al @var{formato de fecha}, entonces recibes una advertencia como esta. @example Has solicitado la liberación `2038/01/20' de LaTeX, pero solo la versión `2016/02/01' está disponible. @end example @item \OptionNotUsed @findex \OptionNotUsed Agrega la opción actual a la lista de opciones no utilizadas. Solo se puede usar dentro del argumento @var{code} de @code{\DeclareOption} o @code{\DeclareOption*}. @c No puedo reproducir este comportamiento como está documentado en @c clsguide. En ausencia de una declaración @code{\DeclareOption*}, @c @LaTeX{} emite una advertencia en la consola como @code{Advertencia @c de LaTeX: Global no utilizadas opción(es): [opción no utilizada].} @c con la lista de opciones no utilizadas cuando llega a @c @code{\begin@{document@}}. @item \PassOptionsToClass@{@var{options list}@}@{@var{class name}@} @itemx \PassOptionsToPackage@{@var{options list}@}@{@var{package name}@} @findex \PassOptionsToClass @findex \PassOptionsToPackage Agrega las opciones en la lista separada por comas @var{lista de opciones} a las opciones utilizadas por cualquier futuro comando @code{\RequirePackage} o @code{\usepackage} para el paquete @var{nombre del paquete} o la clase @var{nombre de clase}. El motivo de estos comandos es: puedes cargar un paquete cualquier cantidad de veces sin opciones, pero, si deseas opciones, solo las puedes proporcionar cuando cargues el paquete por primera vez. Al cargar un paquete con opciones más de una vez obtendrás un error como @code{Conflicto de opción para el paquete Foo.} (@LaTeX{} arroja un error incluso si no hay conflicto entre opciones). Si tu propio código trae un paquete dos veces, entonces puedes colapsar eso a una vez, por ejemplo reemplazando los dos @code{\RequirePackage[landscape]@{geometry@}} y @code{\RequirePackage[margins=1in]@{geometry@}} con el comando único @code{\RequirePackage[landscape,margins=1in]@{geometry@}}. Sin embargo, imagina que estás cargando @file{firstpkg} y dentro de ese paquete que carga @file{secondpkg}, y necesitas que el segundo paquete sea cargado con la opción @code{draft}. Entonces antes de hacer el primer paquete debes poner en cola las opciones para el segundo paquete, así. @example \PassOptionsToPackage@{draft@}@{secondpkg@} \RequirePackage@{firstpkg@} @end example @noindent (Si @code{firstpkg.sty} carga una opción en conflicto con lo que deseas entonces posiblemente tengas que alterar tu fuente). Estos comandos son útiles para usuarios generales, así como para clases y paquetes. Por ejemplo, supongamos que un usuario quiere cargar el paquete @code{graphicx} con la opción @code{draft} y también quieres usar una clase @code{foo} que carga el paquete @code{graphicx}, pero sin esa opción. El usuario podría iniciar su archivo @LaTeX{} con @code{\PassOptionsToPackage@{draft@}@{graphicx@}\documentclass@{foo@}}. @item \ProcessOptions @itemx \ProcessOptions*@var{\@@options} @findex \ProcessOptions @findex \ProcessOptions* Ejecuta el código para cada opción que el usuario haya invocado. Incluirlo en el archivo de clase como @code{\ProcessOptions\relax} (debido a la existencia del comando con asterisco). Las opciones vienen en dos tipos. @dfn{Opciones locales} se han especificado para este paquete particular en el argumento @var{options} de @code{\PassOptionsToPackage@{@var{options}@}}, @code{\usepackage[@var{options}]}, o @code{\RequirePackage[@var{options}]}. @dfn{Opciones globales} son las dadas por el usuario de la clase en @code{\documentclass[@var{options}]} (si una opción se especifica tanto local como globalmente, entonces es local). Cuando se llama a @code{\ProcessOptions} para un paquete @file{pkg.sty}, lo siguiente sucede: @enumerate @item Para cada opción @var{option} declarada hasta ahora con @code{\DeclareOption}, busca si esa opción es una opción global o local para @code{pkg}. Si es así, ejecuta el código declarado. Esto se hace en el orden en que estas opciones fueron dadas en @file{pkg.sty}. @item Para cada opción local restante, ejecuta el comando @code{\ds@@}@var{option} si se ha definido en algún lugar (que no sea por una @code{\DeclareOption}); de lo contrario, ejecuta el código de opción predeterminada dada en @code{\DeclareOption*}. Si no se ha introducido ningún código de opción predeterminado declarado entonces da un mensaje de error. Esto se hace en el orden en que se especificaron estas opciones. @end enumerate Cuando se llama a @code{\ProcessOptions} para una clase, funciona en la misma manera salvo que todas las opciones son locales y el @var{code} predeterminado para @code{\DeclareOption*} es @code{\OptionNotUsed} en lugar de un error. La versión destacada @code{\ProcessOptions*} ejecuta las opciones en el orden especificado en las llamadas a comandos, en lugar de en el orden de declaración en la clase o paquete. Para un paquete esto significa que las opciones globales se procesan primero. @item \ProvidesClass@{@var{class name}@}[@var{release date} @var{brief additional information}] @itemx \ProvidesClass@{@var{class name}@}[@var{release date}] @itemx \ProvidesPackage@{@var{package name}@}[@var{release date} @var{brief additional information}] @itemx \ProvidesPackage@{@var{package name}@}[@var{release date}] @findex \ProvidesClass @findex \ProvidesPackage Identifica la clase o paquete, imprimiendo un mensaje en pantalla y en el archivo de registro. Cuando cargas una clase o paquete, por ejemplo con @code{\documentclass@{smcmemo@}} o @code{\usepackage@{test@}}, @LaTeX{} ingresa un archivo. Si el nombre del archivo no coincide con la clase o nombre del paquete declarado en él, entonces recibes una advertencia. Así, si invocas @code{\documentclass@{smcmemo@}}, y el archivo @file{smcmemo.cls} tiene la instrucción @code{\ProvidesClass@{xxx@}} luego recibes una advertencia como @code{Has solicitado la clase de documento `smcmemo', pero la clase del documento proporciona 'xxx'.} Esta advertencia no evita que @LaTeX{} procese el resto del archivo de clase normalmente. Si incluyes el argumento opcional, debes incluir una fecha, antes de cualquier espacio, en la forma @code{AAAA/MM/DD}. El resto del argumento opcional es de forma libre, aunque tradicionalmente identifica la clase, y se escribe en la pantalla durante la compilación y en el archivo de registro. Por lo tanto, si tu archivo @file{smcmemo.cls} contiene la línea @code{\ProvidesClass@{smcmemo@}[2008/06/01 v1.0 SMC clase memo]} y la primera línea de tu documento es @code{\documentclass@{smcmemo@}} entonces verás @code{Clase de documento: smcmemo 2008/06/01 v1.0 SMC clase memo}. La fecha en el argumento opcional permite a los usuarios de clases y paquetes preguntar para ser advertido si la versión de la clase o paquete es anterior a la @var{fecha de lanzamiento}. Por ejemplo, un usuario puede ingresar @code{\documentclass@{smcmemo@}[2018/10/12]} o @code{\usepackage@{foo@}[[2017/07/07]]} para requerir una clase o paquete con ciertas características especificando que no se debe lanzar antes que la fecha dada. (Aunque, en la práctica, los usuarios de paquetes rara vez incluyen una fecha, y los usuarios de clases casi nunca lo hacen). @item \ProvidesFile@{@var{filename}@}[@var{additional information}] @findex \ProvidesFile Declara un archivo que no sea la clase principal y los archivos del paquete, como archivos de configuración o archivos de definición del tipo de letra. Pon este comando en ese archivo y obtienes en el registro una cadena como @code{File: test.config 2017/10/12 archivo de configuración para test.cls} para @var{filename} igual a @samp{test.config} e @var{información adicional} igual a @samp{2017/10/12 archivo de configuración para test.cls}. @item \RequirePackage[@var{options list}]@{@var{package name}@}[@var{release date}] @itemx \RequirePackageWithOptions@{@var{package name}@}[@var{release date}] @findex \RequirePackage @findex \RequirePackageWithOptions Carga un paquete, como el comando @code{\usepackage} (@pxref{Paquetes adicionales}). El equipo de desarrollo de @LaTeX{} recomienda encarecidamente el uso de estos comandos sobre el @code{\input} de @TeX{}@tie{}estándar; ve la Guía de clase. Un ejemplo es @code{\RequirePackage[landscape,margin=1in]@{geometry@}}. La @var{lista de opciones}, si está presente, es una lista separada por comas. La @var{fecha de lanzamiento}, si está presente, debe tener el formato @var{AAAA/MM/DD}. Si la fecha de lanzamiento del paquete instalado en tu sistema es anterior que la @var{fecha de lanzamiento}, recibes una advertencia como @code{Has solicitado, en la línea de entrada 9, la versión `2017/07/03' del paquete jhtest, pero solo está disponible la versión `2000/01/01'}. La versión @code{\RequirePackageWithOptions} usa la lista de opciones para la clase actual. Esto significa que ignoras cualquier opción que se le pase a través de @code{\PassOptionsToClass}. Este es un comando de conveniencia para facilitar la construcción de clases sobre las existentes sin tener que rastrear cuáles opciones se pasaron. La diferencia entre @code{\usepackage} y @code{\RequirePackage} es pequeña. El comando @code{\usepackage} está diseñado para el archivo del documento mientras que @code{\RequirePackage} está diseñado para paquetes y archivos de clase. Por lo tanto, usar @code{\usepackage} antes del comando @code{\documentclass} hace que @LaTeX{} dé un error como @code{\usepackage antes de \documentclass}, pero allí puedes usar @code{\RequirePackage}. @end table @node Tipos de letra @chapter Tipos de letra @anchor{Tipografía}@c nombre antiguo @cindex tipografía @cindex tipos de letra @LaTeX{} viene con poderosas capacidades de tipos de letra. Por un lado, este nuevo esquema de selección de tipos de letra te permite trabajar fácilmente con las familias de tipos de letra en tu documento (por ejemplo, @ref{Estilos de tipos de letra}). Y, los documentos @LaTeX{} pueden usar la mayoría de los tipos de letra disponibles actualmente, incluyendo versiones de Times Roman, Helvetica, Courier, etc. (Nota sin embargo que, muchos tipos de letra no son compatibles con matemáticas). El primer tipo de letra en el mundo @TeX{} fue la familia Computer Modern, desarrollado por Donald Knuth. Es el predeterminado para los documentos @LaTeX{} y sigue siendo el más utilizado. Pero cambiar a otro tipo de letra a menudo solo implica algunos comandos. Por ejemplo, poner lo siguiente en tu preámbulo te da un tipo de letra similar a Palatino, que es hermoso y más legible en línea que muchos otros tipos de letra, al mismo tiempo que te permite tipografía de matemáticas. (Este ejemplo es de Michael Sharpe, @url{https://math.ucsd.edu/~msharpe/RcntFnts.pdf}). @example \usepackage[osf]@{newpxtext@} % osf para texto, no matemáticas \usepackage@{cabin@} % sans serif \usepackage[varqu,varl]@{inconsolata@} % máquina de escribir sans serif \usepackage[bigdelims,vvarbb]@{newpxmath@} % bb de STIX \usepackage[cal=boondoxo]@{mathalfa@} % mathcal @end example @noindent Además, los motores @command{xelatex} o @command{lualatex} permiten que uses cualquier tipo de letra en tu sistema que esté en formato OpenType o TrueType (@pxref{Motores @TeX{}}). El catálogo de tipos de letra @LaTeX{} (@url{https://tug.org/FontCatalogue}) muestra gráficos de ejemplo del tipo de letra y fuente que se puede copiar y pegar para usar muchos tipos de letra, incluyendo muchos compatibles con matemáticas. Pretende abarcar todos los tipos de letra Latin alfabéticas libres disponibles para un uso sencillo con @LaTeX{}. También hay más información disponible en los grupos de usuarios @TeX{}, en @url{https://www.tug.org/fonts/}. @menu * paquete fontenc:: Codificación del tipo de letra. * Estilos de tipos de letra:: Selecciona romana, cursiva, etc. * Tamaños de los tipos de letra:: Selecciona el tamaño del punto. * Comandos de bajo nivel del tipo de letra:: Selecciona codificación, familia, serie, forma. @end menu @node paquete fontenc @section paquete @code{fontenc} @cindex font codificación @cindex UTF-8, tipo de letra compatible con @cindex T1 @cindex OT1 @findex fontenc Sinopsis: @example \usepackage[@var{font_encoding}]@{fontenc@} @end example o @example \usepackage[@var{font_encoding1}, @var{font_encoding2}, ...]@{fontenc@} @end example Especifica la codificación del tipo de letra. Una codificación de tipo de letra es una asignación de códigos de caracteres a los glifos del tipo de letra que se utilizan para escribir @PkgIndex{fontspec} Este paquete solo se aplica si usas el motor @code{pdflatex} (@pxref{Motores @TeX{}}). Si usas el comando @command{xelatex} o el motor @command{lualatex} entonces usa el paquete @package{fontspec}. La familia de tipos de letra original de @TeX{}, Computer Modern, tiene un conjunto de caracteres limitado. Por ejemplo, para hacer caracteres acentuados comunes, debes usar @code{\accent} (@pxref{\accent}) pero esto deshabilita la separación silábica. Los usuarios @TeX{} han acordado una serie de estándares para acceder a conjuntos de caracteres más grandes proporcionados por los tipos de letra modernos. Si estás usando @command{pdflatex} entonces pon esto en el preámbulo @example \usepackage[T1]@{fontenc@} @end example @noindent te brinda soporte para los idiomas europeos ampliamente extendidos, incluidos francés, alemán, italiano, polaco y otros. En particular, si tienes palabras con letras acentuadas entonces @LaTeX{} las dividirá y tu salida se puede copiar y pegar. (La segunda línea opcional te permite ingresar directamente caracteres acentuados en tu archivo fuente). @PkgIndex{lmodern} @PkgIndex{cm-super} Si estás utilizando una codificación como @code{T1} y los caracteres aparecen borrosos o no se amplían bien, entonces tus tipos de letra pueden estar en mapas de bits, a veces llamado raster o Type@tie{}3. Quieres tipos de letra vectoriales. Utiliza un paquete como @package{lmodern} o @package{cm-super} para obtener un tipo de letra que extiende el valor predeterminado de @LaTeX{} usando tipos de letra vectoriales. Para cada @var{font_encoding} dado como opción pero aún no declarado, este paquete carga los archivos de definición de codificación, denominados @file{@var{font_encoding}enc.def}. También establece @code{\encodingdefault} para ser la última codificación en la lista de opciones. Estos son los valores comunes para @var{font_encoding}. @table @code @item OT1 La codificación original para @TeX{}. Limitada a caracteres en su mayoría en inglés. @item OMS, OML Símbolos matemáticos y codificación de letras matemáticas. @item T1 Texto @TeX{} extendido. A veces se llama la codificación de Cork para la reunión de usuarios del grupo donde se desarrolló. Da acceso a la mayoría de los caracteres acentuados europeos. La opción más común para este paquete. @item TS1 Codificación de Text Companion. @end table @noindent El valor predeterminado de @LaTeX{} es cargar @code{OML}, @code{T1}, @code{OT1} y luego @code{OMS}, y establece el valor predeterminado en @code{OT1}. Incluso si no usas letras acentuadas, es posible que debas especificar una codificación de tipo de letra si tu tipo de letra lo requiere. Si usas codificación@code{T1}@tie{} en los tipos de letra que no sean las familias Modern predeterminadas, es posible que debas cargar el paquete que selecciona tus tipos de letra antes de cargar @file{fontenc}, para evitar que el sistema cargue cualquier tipo de letra codificada@tie{}@code{T1} de la predeterminada. El equipo de @LaTeX{} reserva nombres de codificación que comienzan con: @samp{T} para codificaciones de texto estándar con 256 caracteres, @samp{TS} para símbolos que extienden las codificaciones T correspondientes, @samp{X} para codificaciones de prueba, @samp{M} para codificaciones matemáticas estándar con 256 caracteres, @samp{A} para aplicaciones especiales, @samp{OT} para codificaciones de texto estándar con 128 caracteres y @samp{OM} para codificaciones matemáticas estándar con 128 caracteres (@samp{O} significa @samp{obsoleto}). Este paquete proporciona una serie de comandos, que se detallan a continuación. Muchos de ellos son específicos de codificación, por lo que si has definido un comando que funciona para una codificación pero la codificación actual es diferente, entonces el comando no está en vigor. @menu * \DeclareFontEncoding:: Define una codificación. * \DeclareTextAccent:: Define un acento en la codificación. * \DeclareTextAccentDefault:: Recurso para usar un acento en la codificación. * \DeclareTextCommand y \ProvideTextCommand:: Nuevo comando específico de codificación. * \DeclareTextCommandDefault y \ProvideTextCommandDefault:: Respaldo para comandos específicos de codificación. * \DeclareTextComposite:: Accede directamente a un glifo acentuado, en la codificación. * \DeclareTextCompositeCommand:: Ejecuta el código en la ranura, en la codificación. * \DeclareTextSymbol:: Define un símbolo en la codificación. * \DeclareTextSymbolDefault:: Respaldo para un símbolo en la codificación. * \LastDeclaredEncoding:: Guarda la codificación declarada más recientemente. * \UseTextSymbol y \UseTextAccent:: Cambia temporalmente a otra codificación. @end menu @node \DeclareFontEncoding @subsection @code{\DeclareFontEncoding} @cindex codificación del tipo de letra, declarado @cindex codificación, tipo de letra @cindex acentos, definir @findex \DeclareFontEncoding Sinopsis: @example \DeclareFontEncoding@{@var{encoding}@}@{@var{text-settings}@}@{@var{math-settings}@} @end example Declara la codificación del tipo de letra @var{encoding}. También guarda el valor de @var{encoding} en @code{\LastDeclaredEncoding} (@pxref{\LastDeclaredEncoding}). El archivo @file{t1enc.def} contiene esta línea (seguida de muchas otras). @example \DeclareFontEncoding@{T1@}@{@}@{@} @end example Los @var{text-settings} son los comandos que @LaTeX{} ejecutará cada vez que cambias de una codificación a otra con los comandos @code{\selectfont} y @code{\fontencoding}. Los @var{math-settings} son los comandos que @LaTeX{} usará siempre que el tipo de letra se accede como un alfabeto matemático. @LaTeX{} ignora cualquier carácter de espacio dentro de @var{text-settings} y @var{math-settings}, para evitar espacios no deseados en la salida. Si inventas una codificación, debes elegir un nombre de dos o tres letras comenzando con @samp{L} para @samp{local}, o @samp{E} para @samp{experimental}. Ten en cuenta que @LaTeX{} puede leer varias veces los archivos de codificación de salida, por lo que usar, por ejemplo, @code{\newcommand} puede causar un error. Además, tales archivos deben contener la línea @code{\ProvidesFile} (@pxref{Comandos class y package}). Ten en cuenta también que debes usar los comandos @code{\...Default} solo en un paquete, no en los archivos de definición de codificación, ya que esos archivos solo deben contener declaraciones específicas para esa codificación. @node \DeclareTextAccent @subsection @code{\DeclareTextAccent} @cindex font codificación @cindex acentos, definir @findex \DeclareTextAccent Sinopsis: @example \DeclareTextAccent@{@var{cmd}@}@{@var{encoding}@}@{@var{slot}@} @end example Define un acento, para colocarlo encima de otros glifos, en la codificación @var{encoding} en la ubicación @var{slot}. @cindex slot, tipo de letra Un @dfn{slot} es el número que identifica un glifo dentro de un tipo de letra. Esta línea de @file{t1enc.def} declara que para hacer un acento circunflejo como en @code{\^A}, el sistema pondrá el acento en el slot@tie{}2 sobre el carácter @samp{A}, que se representa en ASCII como@tie{}65. (Esto se mantiene a menos que haya un @code{DeclareTextComposite} relevante o una declaración @code{\DeclareTextCompositeCommand}; @pxref{\DeclareTextComposite}). @example \DeclareTextAccent@{\^@}@{T1@}@{2@} @end example Si @var{cmd} ya se ha definido, entonces @code{\DeclareTextAccent} no da error pero si registra la redefinición en el archivo de transcripción. @node \DeclareTextAccentDefault @subsection @code{\DeclareTextAccentDefault} @cindex acentos, definir @findex \DeclareTextAccent @findex \DeclareTextAccentDefault Sinopsis: @example \DeclareTextAccentDefault@{\@var{cmd}@}@{@var{encoding}@} @end example Si hay un comando específico de codificación de acento \@var{cmd} pero no hay un @code{\DeclareTextAccent} asociado para esa codificación, entonces este comando tomará el relevo, diciendo que lo use como se describe para @var{encoding}. Por ejemplo, para hacer que la codificación @code{OT1} sea la codificación predeterminada para el acento @code{\"}, declara esto. @example \DeclareTextAccentDefault@{\"@}@{OT1@} @end example @noindent Si emites un @code{\"} cuando la codificación actual no tiene una definición para ese acento entonces @LaTeX{} usará la definición desde @code{OT1} Es decir, este comando es equivalente a esta llamada (@pxref{\UseTextSymbol y \UseTextAccent}). @example \DeclareTextCommandDefault[1]@{\@var{cmd}@} @{\UseTextAccent@{@var{encoding}@}@{\@var{cmd}@}@{#1@}@} @end example Ten en cuenta que @code{\DeclareTextAccentDefault} funciona para cualquier comando @file{fontenc} de argumento único, no solo el comando de acento. @node \DeclareTextCommand y \ProvideTextCommand @subsection @code{\DeclareTextCommand} y @code{\ProvideTextCommand} @anchor{\DeclareTextCommand} @anchor{\ProvideTextCommand} @findex \DeclareTextCommand @findex \ProvideTextCommand Sinopsis, una de: @example \DeclareTextCommand@{\@var{cmd}@}@{@var{encoding}@}@{@var{defn}@} \DeclareTextCommand@{\@var{cmd}@}@{@var{encoding}@}[@var{nargs}]@{@var{defn@}} \DeclareTextCommand@{\@var{cmd}@}@{@var{encoding}@}[@var{nargs}][@var{optargdefault}]@{@var{defn}@} @end example o una de: @example \ProvideTextCommand@{\@var{cmd}@}@{@var{encoding}@}@{@var{defn}@} \ProvideTextCommand@{\@var{cmd}@}@{@var{encoding}@}[@var{nargs}]@{@var{defn}@} \ProvideTextCommand@{\@var{cmd}@}@{@var{encoding}@}[@var{nargs}][@var{optargdefault}]@{@var{defn}@} @end example Define el comando @code{\@var{cmd}}, que será específico para una codificación. El nombre del comando @var{cmd} debe estar precedido por una barra invertida, @code{\}. Estos comandos solo pueden aparecer en el preámbulo. Redefinir \@var{cmd} no provoca un error. El comando definido será robusto incluso si el código en @var{defn} es frágil (@pxref{\protect}). Por ejemplo, el archivo @file{t1enc.def} contiene esta línea. @example \DeclareTextCommand@{\textperthousand@}@{T1@}@{\%\char 24 @} @end example Con eso, puedes expresar partes por mil. @example \usepackage[T1]@{fontenc@} % en el preámbulo ... El límite legal es \(0.8 \)\textperthousand. @end example @noindent Si cambias la codificación del tipo de letra a @code{OT1}, obtendrás un error como @samp{Error de LaTeX: Comando \textperthousand no disponible en codificación OT1}. @findex \DeclareTextSymbol La variante @code{\ProvideTextCommand} hace lo mismo, excepto que no hace nada si @code{\@var{cmd}} ya está definido. El comando @code{\DeclareTextSymbol} es más rápido que este por simple asociación de slot a glifo (@pxref{\DeclareTextSymbol}) Los argumentos opcionales @var{nargs} y @var{optargdefault} juegan el mismo rol aquí como en @code{\newcommand} (@pxref{\newcommand y \renewcommand}). Brevemente, @var{nargs} es un número entero de 0 a 9 especificando el número de argumentos que el comando definido @code{\@var{cmd}} toma. Este número incluye cualquier argumento opcional. Omitir este argumento es lo mismo que especificar 0, lo cual significa que @code{\@var{cmd}} no tendrá argumentos. Y, si @var{optargdefault} está presente, entonces el primer argumento de @code{\@var{cmd}} es opcional, con el valor predeterminado @var{optargdefault} (que puede ser la cadena vacía). Si @var{optargdefault} no está presente, entonces @code{\@var{cmd}} tampoco toma un argumento opcional. @node \DeclareTextCommandDefault y \ProvideTextCommandDefault @subsection @code{\DeclareTextCommandDefault} y @code{\ProvideTextCommandDefault} @anchor{\DeclareTextCommandDefault} @anchor{\ProvideTextCommandDefault} @findex \DeclareTextCommandDefault @findex \ProvideTextCommandDefault Sinopsis: @example \DeclareTextCommandDefault@{\@var{cmd}@}@{@var{defn}@} @end example o: @example \ProvideTextCommandDefault@{\@var{cmd}@}@{@var{defn}@} @end example Proporciona una definición predeterminada para @code{\@var{cmd}}, para cuando ese comando no está definido en la codificación actualmente en vigor. Este valor predeterminado debería utilizar únicamente codificaciones que sepas que están disponibles. Esto hace que @code{\copyright} esté disponible. @example \DeclareTextCommandDefault@{\copyright@}@{\textcircled@{c@}@} @end example @noindent Utiliza solo una codificación (OMS) que siempre está disponible. El @code{\DeclareTextCommandDefault} no debería aparecer en la definición de codificación de archivos ya que esos archivos solo deben declarar comandos para su uso cuando seleccionas esa codificación. En cambio, debería estar en un paquete. Al igual que con los comandos no predeterminados relacionados, @code{\ProvideTextCommandDefault} tiene exactamente el mismo comportamiento que @code{\DeclareTextCommandDefault} excepto que no hace nada si @code{\@var{cmd}} ya está definido (@pxref{\DeclareTextCommand y \ProvideTextCommand}). Entonces, los paquetes lo pueden usar para proporcionar respaldos que otros paquetes pueden mejorar. @node \DeclareTextComposite @subsection @code{\DeclareTextComposite} @cindex acentos, definir @findex \DeclareTextComposite Sinopsis: @example \DeclareTextComposite@{\@var{cmd}@}@{@var{encoding}@}@{@var{simple_object}@}@{@var{slot}@} @end example Accede a un glifo acentuado directamente, es decir, sin tener que poner un acento sobre un carácter separado. Esta línea de @file{t1enc.def} significa que @code{\^o} provocará a @LaTeX{} para componer la minúscula@tie{}@samp{o} tomando el carácter directamente desde el slot 224 en el tipo de letra. @example \DeclareTextComposite@{\^@}@{T1@}@{o@}@{244@} @end example @xref{paquete fontenc}, para obtener una lista de codificaciones comunes. El @var{simple_object} debe ser un solo carácter o un solo comando. El argumento @var{slot} suele ser un entero positivo representado en decimal (aunque son posibles octal o hexadecimal). Normalmente \@var{cmd} ya se ha declarado para esta codificación, ya sea con @code{\DeclareTextAccent} o con un solo argumento @code{\DeclareTextCommand}. En @file{t1enc.def}, sigue la línea anterior al comando @code{\DeclareTextAccent@{\^@}@{T1@}@{2@}}. @node \DeclareTextCompositeCommand @subsection @code{\DeclareTextCompositeCommand} @cindex acentos, definir @findex \DeclareTextCompositeCommand Sinopsis: @example \DeclareTextCompositeCommand@{\@var{cmd}@}@{@var{encoding}@}@{@var{arg}@}@{@var{code}@} @end example Una versión más general de @code{\DeclareTextComposite} que ejecuta código arbitrario con @code{\@var{cmd}}. Esto permite que los acentos en @samp{i} actúen como acentos en dotless@tie{}i, @code{\i}. @example \DeclareTextCompositeCommand@{\'@}@{OT1@}@{i@}@{\'\i@} @end example @xref{paquete fontenc}, para obtener una lista de codificaciones comunes. Normalmente @code{\@var{cmd}} ya se habrá declarado con @code{\DeclareTextAccent} o como un argumento @code{\DeclareTextCommand}. @node \DeclareTextSymbol @subsection @code{\DeclareTextSymbol} @cindex símbolo, definir @findex \DeclareTextSymbol Sinopsis: @example \DeclareTextSymbol@{\@var{cmd}@}@{@var{encoding}@}@{@var{slot}@} @end example Define un símbolo en la codificación @var{encoding} en la ubicación @var{slot}. Los símbolos definidos de esta manera son para usar en texto, no matemáticas. Por ejemplo, esta línea de @file{t1enc.def} declara el número del glifo a usar para @BES{00AB,\hbox{\guillemotleft}}, el guillemet izquierdo. @example \DeclareTextSymbol@{\guillemotleft@}@{T1@}@{19@} @end example @noindent El comando @code{\DeclareTextCommand@{\guillemotleft@}@{T1@}@{\char 19@}} tiene el mismo efecto pero es más lento (@pxref{\DeclareTextCommand y \ProvideTextCommand}). @xref{paquete fontenc}, para obtener una lista de codificaciones comunes. El @var{slot} se puede especificar en decimal u octal (como en @code{'023}), o hexadecimal (como en @code{"13}), aunque el decimal tiene la ventaja de que las comillas simples o dobles se pueden redefinir por otro paquete. Si @code{\@var{cmd}} ya se ha definido, entonces @code{\DeclareTextSymbol} no da un error pero registra la redefinición en el archivo de transcripción. @node \DeclareTextSymbolDefault @subsection @code{\DeclareTextSymbolDefault} @cindex acentos, definir @findex \DeclareTextSymbol @findex \DeclareTextSymbolDefault Sinopsis: @example \DeclareTextSymbolDefault@{\@var{cmd}@}@{@var{encoding}@} @end example Si hay un comando de símbolo específico de codificación @code{\@var{cmd}} pero no hay un @code{\DeclareTextSymbol} asociado para esa codificación, entonces este comando tomará el relevo, diciendo que obtenga el símbolo como se describe para @var{encoding}. Por ejemplo, para declarar que si la codificación actual no tiene significado para @code{\textdollar} entonces usa el de @code{OT1}, declara esto. @example \DeclareTextSymbolDefault@{\textdollar@}@{OT1@} @end example Es decir, este comando es equivalente a esta llamada (@pxref{\UseTextSymbol y \UseTextAccent}). @example \DeclareTextCommandDefault@{\@var{cmd}@} @{\UseTextSymbol@{@var{encoding}@}@{\@var{cmd}@}@} @end example Ten en cuenta que @code{\DeclareTextSymbolDefault} se puede usar para definir un predeterminado para cualquier comando @file{fontenc} de cero argumentos. @node \LastDeclaredEncoding @subsection @code{\LastDeclaredEncoding} @findex \LastDeclaredEncoding Sinopsis: @example \LastDeclaredEncoding @end example Obtiene el nombre de la codificación declarada más recientemente. El comando @code{\DeclareFontEncoding} almacena el nombre para que se pueda recuperar con este comando (@pxref{\DeclareFontEncoding}). Esto se basa en @code{\LastDeclaredEncoding} en lugar de dar explícitamente el nombre de la codificación. @example \DeclareFontEncoding@{JH1@}@{@}@{@} \DeclareTextAccent@{\'@}@{\LastDeclaredEncoding@}@{0@} @end example @node \UseTextSymbol y \UseTextAccent @subsection @code{\UseTextSymbol} y @code{\UseTextAccent} @anchor{\UseTextSymbol} @anchor{\UseTextAccent} @findex \UseTextSymbol @findex \UseTextAccent Sinopsis: @example \UseTextSymbol@{@var{encoding}@}@{\@var{cmd}@} @end example o: @example \UseTextAccent@{@var{encoding}@}@{\@var{cmd}@}@{@var{text}@} @end example Utiliza un símbolo o acento que no sea de la codificación actual. En general, para usar un comando @file{fontenc} en una codificación donde no está definido, y si el comando no tiene argumentos, lo puedes usar con algo como esto: @example \UseTextSymbol@{OT1@}@{\ss@} @end example @noindent que es equivalente a esto (observa que las llaves exteriores forman un grupo, por lo que @LaTeX{} vuelve a la codificación anterior después de @code{\ss}): @example @{\fontencoding@{OT1@}\selectfont\ss@} @end example De manera similar, para usar un comando @file{fontenc} en una codificación donde no está definido, y si el comando tiene un argumento, lo puedes usar así: @example \UseTextAccent@{OT1@}@{\'@}@{a@} @end example @noindent que es equivalente a esto (nuevamente, ten en cuenta las llaves exteriores que forman un grupo): @example @{fontencoding@{OT1@}\selectfont\'@{\fontencoding@{@var{enc_in_use}@}\selectfont a@}@} @end example @noindent Aquí, @var{enc_in_use} es la codificación vigente antes de esta secuencia de comandos, de modo que @samp{a} se escribe utilizando la codificación actual y solo se toma el acento de @code{OT1}. @node Estilos de tipos de letra @section Estilos de tipos de letra @cindex estilos de tipos de letra @cindex estilos de letra @cindex estilos de texto Los siguientes comandos de estilo de letra son compatibles con @LaTeX{}. @cindex Forma de declaración de los comandos de estilo del tipo de letra En la tabla de abajo de los comandos enumerados, los comandos @code{\text...}, se usan con un argumento como en @code{\textit@{@var{text}@}}. Esta es la forma preferida. Pero se muestra después entre paréntesis si la correspondiente @dfn{forma de declaración}, que suele ser útil. Esta forma no toma argumentos, como en @code{@{\itshape @var{text}@}}. El alcance de la forma de declaración dura hasta el siguiente comando de estilo de tipo o el final del grupo actual. Además, cada uno tiene un entorno como @code{\begin@{itshape@}...\end@{itshape@}}, que describiremos al final de la sección. Estos comandos, en cualquiera de las tres formas, son acumulativos; por ejemplo puedes obtener negrita sans serif diciendo cualquiera de @code{\sffamily\bfseries} o @code{\bfseries\sffamily}. @anchor{\nocorrlist} @anchor{\nocorr} @findex \nocorrlist @findex \nocorr Una ventaja de estos comandos es que automáticamente insertan correcciones en cursiva si es necesario (@pxref{\/}). En concreto, insertan la corrección en cursiva a menos que el siguiente carácter esté en la lista @code{\nocorrlist}, que de manera predeterminada consta de punto y coma. Para suprimir la inserción automática de la corrección en cursiva, utiliza @code{\nocorr} al principio o al final del argumento del comando, como @code{\textit@{\nocorr text@}} o @code{\textsc@{text \nocorr@}}. @table @code @item \textrm (\rmfamily) @findex \textrm @findex \rmfamily Roman. @item \textit (\itshape) @findex \textit @findex \itshape Italics. @item \textmd (\mdseries) @findex \textmd @findex \mdseries Medium weight (predeterminado). @item \textbf (\bfseries) @findex \textbf @findex \bfseries Boldface. @item \textup (\upshape) @findex \textup @findex \upshape Upright (predefinido). @item \textsl (\slshape) @findex \textsl @findex \slshape Slanted. @item \textsf (\sffamily) @findex \textsf @findex \sffamily Sans serif. @item \textsc (\scshape) @findex \textsc @findex \scshape Small caps. @item \texttt (\ttfamily) @findex \texttt @findex \ttfamily Typewriter. @item \textnormal (\normalfont) @findex \textnormal @findex \normalfont Tipo de letra del documento principal. @end table @cindex emphasis @findex \emph Aunque también cambia los tipos de letra, el comando @code{\emph@{@var{text}@}} es semántico, para que se enfatice @var{text}, y no se debe usar como sustituto de @code{\textit}. Por ejemplo, @code{\emph@{@var{start text} \emph@{@var{middle text}@} @var{end text}@}} resultará en @var{start text} y @var{end text} en cursiva, pero @var{middle text} estará en romano. @LaTeX{} también proporciona los siguientes comandos, que incondicionalmente cambia al estilo dado, es decir, @emph{no} son acumulativos. Están usados como declaraciones: @code{@{\@var{cmd}...@}} en lugar de @code{\@var{cmd}@{...@}}. (Los comandos incondicionales a continuación son una versión anterior de tipo de letra traspuesta. Los comandos anteriores son una mejora en la mayoría de las circunstancias. Pero a veces un cambio de tipo de letra incondicional es necesario). @ftable @code @item \bf @cindex tipo de letra negrita Cambia a negrita. @item \cal @cindex script de letras para matemáticas @cindex letras caligráficas para matemáticas Cambia a letras caligráficas para matemáticas. @item \it @cindex italic font cursivas. @item \rm @cindex roman font Roman. @item \sc @cindex small caps font Small caps. @item \sf @cindex sans serif font Sans serif. @item \sl @cindex tipo de letra inclinada @cindex oblique font Slanted (oblicua). @item \tt @cindex tipo de letra de máquina de escribir @cindex tipo de letra monoespacio @cindex fixed-width font Typewriter (monoespacio, ancho fijo). @end ftable El comando @code{\em} es la versión incondicional de @code{\emph}. Los siguientes comandos se utilizan en modo matemático. Ellos no son acumulativos, por lo que @code{\mathbf@{\mathit@{@var{symbol}@}@}} no crea una negrita y cursiva @var{symbol}; en cambio, solo estará en cursiva. Esto se debe a que, por lo general, los símbolos matemáticos necesitan tratamiento tipográfico, independientemente del entorno circundante. @table @code @item \mathrm @findex \mathrm Roman, para usar en modo matemático. @item \mathbf @findex \mathbf Negrita (boldface), para usar en modo matemático. @item \mathsf @findex \mathsf Sans serif, para usar en modo matemático. @item \mathtt @findex \mathtt Typewriter, para usar en modo matemático. @item \mathit @itemx (\mit) Italics, para usar en modo matemático. @item \mathnormal @findex \mathnormal Para usar en modo matemático, por ejemplo, dentro de otra declaración de estilo de tipo. @item \mathcal @findex \mathcal Letras caligráficas, para uso en modo matemático. @end table @anchor{\mathversion} @findex \mathversion @cindex matemáticas, negrita @cindex bold math Además, el comando @code{\mathversion@{bold@}} se puede usar para cambiar a letras y símbolos en negrita en fórmulas @code{\mathversion@{normal@}} restaura el valor predeterminado. @anchor{\oldstylenums} @findex \oldstylenums @cindex numerales, estilo antiguo @cindex números de estilo antiguo @cindex lining numerals Finalmente, el comando @code{\oldstylenums@{@var{numerals}@}} compone los llamados números de ``estilo antiguo'', que tienen diferentes alturas y profundidades (y a veces anchos) del ``revestimiento" estándar de números, que tienen todos la misma altura que las letras mayúsculas. Los tipos de letra predeterminados de @LaTeX{} admiten esto y respetarán @code{\textbf} (pero no otros estilos; no hay números en estilo cursiva antiguo en Informática Moderna). Muchos otros tipos de letra también tienen números de estilo antiguo; a veces se proporcionan opciones de paquetes para que sean las predeterminadas. Preguntas frecuentes entrada: @url{https://www.texfaq.org/FAQ-osf}. @node Tamaños de los tipos de letra @section Tamaños de los tipos de letra @cindex Tamaños de los tipos de letra @cindex tamaños de letra @cindex tamaños de texto Los siguientes comandos de tamaño de letra estándar son compatibles con @LaTeX{}. La tabla muestra el nombre del comando y el tipo de letra en el tamaño real correspondiente utilizado (en puntos) con @samp{10pt}, @samp{11pt} y @samp{12pt} opciones de tamaño del documento, respectivamente (@pxref{Opciones de la clase documento}). @findex \tiny @findex \scriptsize @findex \footnotesize @findex \small @findex \normalsize @findex \large @findex \Large @findex \LARGE @findex \huge @findex \Huge @multitable {@code{\normalsize} (predeterminado)@ @ } {24.88@ @ } {24.88@ @ } {24.88} @headitem Comando @tab @code{10pt} @tab @code{11pt} @tab @code{12pt} @item @code{\tiny} @tab 5 @tab 6 @tab 6 @item @code{\scriptsize} @tab 7 @tab 8 @tab 8 @item @code{\footnotesize} @tab 8 @tab 9 @tab 10 @item @code{\small} @tab 9 @tab 10 @tab 10.95 @item @code{\normalsize} (predeterminado) @tab 10 @tab 10.95 @tab 12 @item @code{\large} @tab 12 @tab 12 @tab 14.4 @item @code{\Large} @tab 14.4 @tab 14.4 @tab 17.28 @item @code{\LARGE} @tab 17.28 @tab 17.28 @tab 20.74 @item @code{\huge} @tab 20.74 @tab 20.74 @tab 24.88 @item @code{\Huge} @tab 24.88 @tab 24.88 @tab 24.88 @end multitable @cindex forma de declaración de los comandos de tamaño del tipo de letra Los comandos se enumeran aquí en forma de declaración (no de entorno), ya que así es como se usan típicamente. Por ejemplo: @example \begin@{quotation@} \small El Tao que se puede nombrar no es el Tao eterno. \end@{quotation@} @end example @noindent Aquí, el alcance del @code{\small} dura hasta el final del entorno @code{quotation}. También terminaría en el siguiente comando de estilo de tipo o el final del grupo actual, por lo tanto lo podrías encerrar entre llaves @code{@{\small Este texto está escrito en letra pequeña.@}}. Tratar de usar estos comandos en matemáticas, como con @code{$\small mv^2/2$}, da como resultado @samp{Advertencia de fuentes LaTeX: Comando \small inválido en modo matemático}, y el tamaño del tipo de letra no cambia. Para trabajar con una fórmula demasiado grande, a menudo la mejor opción es usar el entorno @code{displaymath} (@pxref{Fórmulas math}), o uno de los entornos del paquete @package{amsmath}. Para matemáticas en línea, como en una tabla de fórmulas, una alternativa es algo como @code{@{\small $mv^2/2$@}}. (A veces @code{\scriptsize} y @code{\scriptstyle} se confunden. Ambos cambian el tamaño del tipo de letra, pero el último también cambia una serie de otros aspectos de cómo se componen las matemáticas. @xref{Estilos math}). @cindex Forma de entorno de comandos de tamaño de fuente También se define un @dfn{entorno form} de cada uno de estos comandos; por ejemplo, @code{\begin@{tiny@}...\end@{tiny@}}. Sin embargo, en la práctica esta forma puede conducir fácilmente a espacios no deseados al principio y/o final del entorno sin una cuidadosa consideración, por lo que generalmente es menos propenso a errores apegarse a la forma de declaración. (Aparte: Técnicamente, debido a la forma en que @LaTeX{} define @code{\begin} y @code{\end}, casi todos los comandos que no toman un argumento técnicamente tiene una forma de entorno. Pero en casi todos los casos, solo sería causa de confusión al usarlo. La razón de mencionar la forma de entorno de las declaraciones de tamaño del tipo de letra específicamente es que este uso particular no es raro). @node Comandos de bajo nivel del tipo de letra @section Comandos de bajo nivel del tipo de letra @cindex comandos de tipo de letra de bajo nivel @cindex comandos de tipo de letra, bajo nivel Estos comandos están destinados principalmente a los escritores de macros y paquetes. Los comandos enumerados aquí son solo un subconjunto de los disponibles. @c xx pero debería estar completo @c xx algo sobre leer ENCFAM.fd en última instancia? @table @code @anchor{comandos de tipos de letra de bajo nivel fontencoding} @item \fontencoding@{@var{encoding}@} @findex \fontencoding Selecciona la codificación del tipo de letra, la codificación del tipo de letra de salida. Hay un gran número de codificaciones válidas. Las más comunes son @code{OT1}, La codificación original de Knuth para Computer Modern (la predeterminada), y @code{T1}, también conocida como la codificación de Cork, que admite caracteres acentuados utilizados por los idiomas europeos más extendidos (alemán, francés, italiano, polaco y otros), lo que permite a @TeX{} separar con guiones las palabras que contengan letras acentuadas. Para más, ve @url{https://ctan.org/pkg/encguide}. @anchor{comandos de tipo de letra de bajo nivel fontfamily} @item \fontfamily@{@var{family}@} @findex \fontfamily @cindex familias, de tipos de letra @cindex catálogo de fuentes Selecciona la familia del tipo de letra. La página web @url{https//tug.org/FontCatalogue/} proporciona una forma de navegar a través de muchos de los tipos de letra que se usan fácilmente con @LaTeX{}. Aquí hay ejemplos de algunas familias comunes. @multitable {tipos de letra} {Computadora Máquina de escribir moderna más espacio} @item @code{pag} @tab Avant Garde @item @code{fvs} @tab Bitstream Vera Sans @item @code{pbk} @tab Bookman @item @code{bch} @tab Charter @item @code{ccr} @tab Computer Concrete @item @code{cmr} @tab Computer Modern @item @code{cmss} @tab Computer Modern Sans Serif @item @code{cmtt} @tab Computer Modern Typewriter @item @code{pcr} @tab Courier @item @code{phv} @tab Helvetica @item @code{fi4} @tab Inconsolata @item @code{lmr} @tab Latin Modern @item @code{lmss} @tab Latin Modern Sans @item @code{lmtt} @tab Latin Modern Typewriter @item @code{pnc} @tab New Century Schoolbook @item @code{ppl} @tab Palatino @item @code{ptm} @tab Times @item @code{uncl} @tab Uncial @item @code{put} @tab Utopia @item @code{pzc} @tab Zapf Chancery @end multitable @anchor{comandos de tipo de letra de bajo nivel fontseries} @item \fontseries@{@var{series}@} @findex \fontseries @cindex serie, de tipos de letra Selecciona la serie de tipos de letra. Una @dfn{serie} combina un @dfn{weight} y un @dfn{width}. Por lo general, un tipo de letra solo admite algunas de las posibles combinaciones. Algunos valores comunes de series combinadas incluyen: @multitable {xx} {Medium (normal)xx} @item @code{m} @tab Medium (normal) @item @code{b} @tab Bold @item @code{c} @tab Condensed @item @code{bc} @tab Bold condensed @item @code{bx} @tab Bold extended @end multitable @cindex grosor, tipos de letra Los posibles valores de grosor, individualmente, son: @multitable {xx} {Medium (normal) xx} @item @code{ul} @tab Ultra light @item @code{el} @tab Extra light @item @code{l} @tab Light @item @code{sl} @tab Semi light @item @code{m} @tab Medium (normal) @item @code{sb} @tab Semi bold @item @code{b} @tab Bold @item @code{eb} @tab Extra bold @item @code{ub} @tab Ultra bold @end multitable @cindex anchos, de tipos de letra Los valores posibles para el ancho, individualmente, son (el significado y relación de estos términos varía con los tipos de letra individuales): @multitable {xx} {Ultra condensed} @item @code{uc} @tab Ultra condensed @item @code{ec} @tab Extra condensed @item @code{c} @tab Condensed @item @code{sc} @tab Semi condensed @item @code{m} @tab Medium @item @code{sx} @tab Semi expanded @item @code{x} @tab Expanded @item @code{ex} @tab Extra expanded @item @code{ux} @tab Ultra expanded @end multitable Al formar la cadena @var{series} a partir del peso y el ancho, la @code{m} suelta significa grosor medio o ancho medio, a menos que ambos, el grosor y el ancho sean @code{m}, en cuyo caso usa solo una (@samp{@code{m}}). @anchor{comandos de tipos de letra de bajo nivel fontshape} @item \fontshape@{@var{shape}@} @findex \fontshape @cindex formas, de tipos de letra Selecciona la forma del tipo de letra. Las formas válidas son: @multitable {xx} {Slanted (oblique)xx} @item @code{n} @tab Upright (normal) @item @code{it} @tab Italic @item @code{sl} @tab Slanted (oblique) @item @code{sc} @tab Small caps @item @code{ui} @tab Upright italics @item @code{ol} @tab Outline @end multitable Las dos últimas formas no están disponibles para la mayoría de las familias de tipos de letra, y a menudo también faltan las versalitas. @anchor{comandos fontsize de bajo nivel} @item \fontsize@{@var{size}@}@{@var{skip}@} @findex \fontsize @cindex tamaño del tipo de letra @findex \baselineskip Establece el tamaño del tipo de letra y el espacio entre líneas. La unidad de ambos parámetros el valor predeterminado es puntos (@code{pt}). El interlineado es el espacio vertical nominal entre líneas, línea base a línea base. Se almacena en el parámetro @code{\baselineskip}. El @code{\baselineskip} predeterminado para el tipo de letra Computer Modern es 1.2 veces el @code{\fontsize}. Cambiar @code{\baselineskip} directamente no es recomendable ya que su valor se restablece cada vez que ocurre un cambio de tamaño; en su lugar usa @code{\baselinestretch}. (@pxref{\baselineskip y \baselinestretch}). @anchor{lines de comandos de tipo de letra de bajo nivel} @item \linespread@{@var{factor}@} @findex \linespread Equivalente a @code{\renewcommand@{\baselinestretch@}@{@var{factor}@}}, y por lo tanto debe ir seguido de @code{\selectfont} para tener cualquier efecto. Mejor especificado en el preámbulo. @xref{\baselineskip y \baselinestretch}, por usar el paquete @package{setspace} en su lugar. @anchor{comandos de tipos de letra de bajo nivel selectfont} @item \selectfont @findex \selectfont Los efectos de los comandos de tipo de letra descritos anteriormente no suceden hasta que se llama a @code{\selectfont}, como en @code{\fontfamily@{@var{familyname}@}\selectfont}. A menudo es útil poner esto en una macro:@* @code{\newcommand*@{\myfont@}@{\fontfamily@{@var{familyname}@}\selectfont@}}@* (@pxref{\newcommand y \renewcommand}). @anchor{comandos de tipos de letra de bajo nivel usefont} @item \usefont@{@var{enc}@}@{@var{family}@}@{@var{series}@}@{@var{shape}@} @findex \usefont Lo mismo que invocar a @code{\fontencoding}, @code{\fontfamily}, @code{\fontseries} y @code{\fontshape} con los parámetros dados, seguidos de @code{\selectfont}. Por ejemplo: @example \usefont@{ot1@}@{cmr@}@{m@}@{n@} @end example @end table @node Composición @chapter Composición @cindex comandos de composición Comandos para controlar la composición general de página. @menu * \onecolumn:: Utiliza una composición de una columna. * \twocolumn:: Utiliza una composición de dos columnas. * \flushbottom:: Hace que todas las páginas de texto tengan la misma altura. * \raggedbottom:: Permite páginas de texto de diferente altura. * Parámetros de composición de página:: @code{\headheight} @code{\footskip}. * \baselineskip y \baselinestretch:: Espacio entre líneas. * Flotantes:: Figuras, tablas, etc. @end menu @node \onecolumn @section @code{\onecolumn} @findex \onecolumn @cindex one-column output Sinopsis: @example \onecolumn @end example Inicia una nueva página y genera una salida de una sola columna. Si al documento le es dada la opción de clase @code{onecolumn} entonces este es el valor predeterminado del comportamiento (@pxref{Opciones de la clase documento}). Este comando es frágil (@pxref{\protect}). @node \twocolumn @section @code{\twocolumn} @findex \twocolumn @cindex texto multicolumna @cindex salida de dos columnas Sinopsis: @example \twocolumn \twocolumn[@var{texto preliminar de una columna}] @end example Inicia una nueva página y genera un resultado de dos columnas. Si se entrega al documento la opción de clase @code{twocolumn} entonces esta es la predeterminada (@pxref{Opciones de la clase documento}). Este comando es frágil (@pxref{\protect}). Si el argumento opcional @var{texto preliminar de una columna} está presente, se escribe en el modo de una columna antes de que comience la composición tipográfica de dos columnas. Estos parámetros controlan la composición tipográfica en la salida de dos columnas: @ftable @code @item \columnsep @anchor{doscolumnas columnasep} La distancia entre columnas. El valor predeterminado es 35 puntos. Cámbialo con un comando como @code{\setlength@{\columnsep@}@{40pt@}}. Lo debes cambiar antes de que comience el modo de dos columnas; en el preámbulo es un buen lugar. @item \columnseprule @anchor{doscolumnas columnasseprule} El ancho de la regla entre columnas. El valor predeterminado es 0pt, lo cual significa que no hay regla. De lo contrario, la regla aparece a medio camino entre las dos columnas. Cámbialo con un comando como @code{\setlength@{\columnseprule@}@{0.4pt@}}, antes de comenzar el modo de dos columnas. @item \columnwidth @anchor{doscolumnas columnwidth} El ancho de una sola columna. En el modo de una columna esto es igual a @code{\textwidth}. En el modo de dos columnas de manera predeterminada, @LaTeX{} establece el ancho de cada una de las dos columnas, para que @code{\columnwidth} sea la mitad de @code{\textwidth} menos @code{\columnsep}. @end ftable En un documento de dos columnas, los entornos destacados @code{table*} y @code{figure*} tienen dos columnas de ancho, mientras que los entornos sin estrellas @code{table} y @code{figure} ocupan solo una columna (@pxref{figure} y @pxref{table}). @LaTeX{} coloca flotantes con estrellas en la parte superior de una página. Los siguientes parámetros controlan el comportamiento flotante de la salida de dos columnas. @ftable @code @anchor{doscolumnas dbltopfraction} @item \dbltopfraction La fracción máxima en la parte superior de una página de dos columnas que pueden ocupar flotantes de dos columnas de ancho. El valor predeterminado es 0.7, lo cual significa que la altura de un entorno @code{table*} o @code{figure*} no debe superar @code{0.7\textheight}. Si la altura de tu entorno flotante estrellado excede esto, entonces puedes tomar una de las siguientes acciones para evitar que flote hasta el final del documento: @itemize @bullet @item Usa el especificador de ubicación @code{[tp]} para decirle a @LaTeX{} que intente poner el voluminoso flotante en una página por sí mismo, así como en la parte superior de una página. @item Utiliza el especificador de ubicación @code{[t!]} para anular el efecto de @code{\dbltopfraction} para este flotante en particular. @item Aumenta el valor de @code{\dbltopfraction} a un número adecuadamente grande, para evitar ir a páginas flotantes tan pronto como sea posible. @end itemize Lo puedes redefinir, como con @code{\renewcommand@{\dbltopfraction@}@{0.9@}}. @item \dblfloatpagefraction @anchor{doscolumnas dblfloatpagefraction} Para una página flotante de dos columnas de ancho flotantes, esta es la fracción mínima que deben ocupar los flotantes, limitando la cantidad de espacio en blanco. El valor predeterminado de @LaTeX{} es @code{0.5}. Cámbialo con @code{\renewcommand}. @item \dblfloatsep @anchor{doscolumnas dblfloatsep} En una página flotante de flotantes de dos columnas de ancho, esta longitud es la distancia entre flotantes, tanto en la parte superior como en la inferior de la página. El valor predeterminado es @code{12pt plus2pt minus2pt} para un documento establecido en @code{10pt} o @code{11pt} y @code{14pt plus2pt minus4pt} para un documento establecido en @code{12pt}. @item \dbltextfloatsep @anchor{doscolumnas dbltextfloatsep} Esta longitud es la distancia entre un flotante de varias columnas en la parte superior o la parte inferior de una página y el texto principal. El valor predeterminado es @code{20pt plus2pt minus4pt}. @item \dbltopnumber @anchor{doscolumnas dbltopnumber} En una página flotante de flotantes de dos columnas de ancho, este contador da el número máximo de flotantes permitidos en la parte superior de la página. El valor predeterminado de @LaTeX{} es @code{2}. @end ftable @c De egreg en https://tex.stackexchange.com/a/142232/339 Este ejemplo usa el argumento opcional de @code{\twocolumn} para crear un título que abarca el artículo de dos columnas: @example \documentclass[twocolumn]@{article@} \newcommand@{\authormark@}[1]@{\textsuperscript@{#1@}@} \begin@{document@} \twocolumn[@{% dentro de este argumento opcional va texto de una columna \centering \LARGE El título \\[1.5em] \large Autor uno\authormark@{1@}, Autor dos\authormark@{2@}, Autor tres\authormark@{1@} \\[1em] \normalsize \begin@{tabular@}@{p@{.2\textwidth@}@@@{\hspace@{2em@}@}p@{.2\textwidth@}@} \authormark@{1@}Departamento uno &\authormark@{2@}Departamento dos \\ Escuela uno &Escuela dos \end@{tabular@}\\[3em] % espacio debajo de la parte del título @}] Texto de dos columnas aquí. @end example @node \flushbottom @section @code{\flushbottom} @findex \flushbottom Hace que todas las páginas del documento después de esta declaración tengan la misma altura, estirando el espacio vertical donde sea necesario para llenar la página. Esto se usa con más frecuencia cuando se hacen documentos de dos caras ya que las diferencias en las páginas opuestas pueden ser evidentes. Si @TeX{} no puede estirar satisfactoriamente el espacio vertical en una página luego obtienes un mensaje como @samp{Infralleno \vbox (maliciosos 10000) ocurrió mientras \output está activa}. Si lo consigues, una opción es cambiar a @code{\raggedbottom} (@pxref{\raggedbottom}). Alternativamente, puedes ajustar el @code{textheight} para hacer páginas compatibles, o puedes agregar un poco de pegamento de estiramiento vertical entre líneas o entre párrafos, como en @code{\setlength@{\parskip@}@{0ex plus0.1ex@}}. Tu última opción es, en una etapa de edición final, ajustar la altura de las páginas individuales (@pxref{\enlargethispage}). El estado @code{\flushbottom} es el predeterminado solo si seleccionas la opción @code{twocolumn} de la clase documento (@pxref{Opciones de la clase documento}), y para índices hechos con @code{makeidx}. @node \raggedbottom @section @code{\raggedbottom} @findex \raggedbottom @cindex estirar, omitiendo vertical Hace que todas las páginas posteriores tengan la altura natural del material en esa página; no se estirarán las longitudes verticales elásticas. Así, en documentos de dos caras las páginas opuestas pueden tener diferentes alturas. Este comando puede ir en cualquier punto del cuerpo del documento. @xref{\flushbottom}. Este es el valor predeterminado a menos que selecciones la opción @code{twocolumn} de la clase documento (@pxref{Opciones de la clase documento}). @node Parámetros de composición de página @section Parámetros de composición de página @cindex parámetros de la composición de página @cindex parámetros, composición de página @cindex composición, parámetros de página para @cindex encabezado, parámetros para @cindex pie de página, parámetros para @cindex ejecutando encabezados y pie de página @ftable @code @item \columnsep @itemx \columnseprule @itemx \columnwidth @findex \columnsep @findex \columnseprule @findex \columnwidth @anchor{parámetros columnasep del diseño de página} @anchor{parámetros columnseprule del diseño de página} @anchor{parámetros columnwidth del diseño de página} La distancia entre las dos columnas, el ancho de una regla entre las columnas y el ancho de las columnas, cuando la opción de clase de documento @code{twocolumn} está en vigor (@pxref{Opciones de la clase documento}). @xref{\twocolumn}. @item \headheight @findex \headheight @anchor{parámetros headheight del diseño de página} Altura de la caja que contiene la cabecera móvil. El valor predeterminado en las clases @code{article}, @code{report} y @code{book} son @samp{12pt}, en todos los tamaños de letra. @item \headsep @findex \headsep @anchor{parámetros headep del diseño de página} Distancia vertical entre la parte inferior de la línea de cabecera y la parte superior del texto principal. El valor predeterminado en las clases @code{article} y @code{report} es @samp{25pt}. En la clase @code{book} el valor predeterminado es: si el documento está configurado en 10pt, entonces es @samp{0.25in}, y en 11pt o 12pt es @samp{0.275in}. @item \footskip @findex \footskip @anchor{parámetros de diseño de página footskip} Distancia desde la línea base de la última línea de texto hasta la línea base de el pie de página. El valor predeterminado en las clases @code{article} y @code{report} es @samp{30pt}. En la clase @code{book} el valor predeterminado es: cuando el tamaño de letra es de 10 puntos, el predeterminado es @samp{0.35in}, mientras que en 11pt es @samp{0.38in}, y en 12pt es @samp{30pt}. @item \linewidth @findex \linewidth @anchor{parámetros linewidth del diseño de página} Ancho de la línea actual, disminuido para cada @code{lista} anidada (@pxref{list}). Es decir, el valor nominal de @code{\linewidth} es igual a @code{\textwidth} pero para cada @code{\linewidth} de la lista anidada se reduce por la suma del @code{\leftmargin} de esa lista y @code{\rightmargin} (@pxref{itemize}). @c El valor predeterminado varía con el tamaño del tipo de letra, el @c ancho del papel, el modo de dos columnas, etc. Para un documento @c @code{article} configurado en 10 puntos, el valor predeterminado es @c @samp{345pt}, mientras que en modo de dos columnas se convierte en @c @samp{229.5pt}. @item \marginparpush @itemx \marginsep @itemx \marginparwidth @findex \marginparpush @findex \marginsep @findex \marginparwidth @anchor{parámetros marginparpush del diseño de página} @anchor{parámetros marginsep del diseño de página} @anchor{parámetros marginparwidth del diseño de página} El espacio vertical mínimo entre dos notas marginales, el espacio horizontal entre el cuerpo del texto y las notas marginales, y el ancho horizontal de las notas. Normalmente, las notas marginales aparecen en el exterior de la página, pero la declaración @code{\reversemarginpar} cambia eso (y @code{\normalmarginpar} lo vuelve a cambiar). Los valores predeterminados para @code{\marginparpush} tanto en @code{book} como en las clases @code{article} son: @samp{7pt} si el documento se establece en 12pt, y @samp{5pt} si el documento está configurado en 11 o 10 puntos. Para @code{\marginsep}, en la clase @code{article} el valor predeterminado es @samp{10pt} excepto si el documento está configurado en 10pt y en modo de dos columnas donde el valor predeterminado es @samp{11pt}. Para @code{\marginsep} en la clase @code{book}, el valor predeterminado es @samp{10pt} en modo de dos columnas y @samp{7pt} en modo de una columna. Para @code{\marginparwidth} tanto en las clases @code{book} como @code{article}, en el modo de dos columnas, el valor predeterminado es el 60 % de @code{\paperwidth @minus{} \textwidth}, mientras que en el modo de una columna es el 50% de esa distancia. @item \oddsidemargin @itemx \evensidemargin @findex \oddsidemargin @findex \evensidemargin @anchor{parámetros oddsidemargin del diseño de página} @anchor{parámetros evensidemargin del diseño de página} @c xx TODO vuelve a alinear en la versión francesa que es más @c completa/precisa. La longitud de @code{\oddsidemargin} es la distancia adicional entre el lado izquierdo de la página y el margen izquierdo del texto, en las páginas impares cuando se elige la opción de clase documento @code{twoside} y en todas las páginas cuando @code{oneside} está en vigor. Cuando @code{twoside} está en vigor, en páginas pares, la distancia adicional a la izquierda es @code{\evensidemargin}. El valor predeterminado de @LaTeX{} es que @code{\oddsidemargin} es el 40% de la diferencia entre @code{\paperwidth} y @code{\textwidth}, y @code{\evensidemargin} es el resto. @item \paperheight @findex \paperheight @anchor{parámetros paperheight del diseño de página} La altura del papel, a diferencia de la altura del área de impresión. Normalmente se establece con una opción de la clase documento, como en @code{\documentclass[a4paper]@{article@}} (@pxref{Opciones de la clase documento}). @item \paperwidth @findex \paperwidth @anchor{parámetros paperwidth del diseño de página} El ancho del papel, a diferencia del ancho del área de impresión. Normalmente se establece con una opción de la clase documento, como en @code{\documentclass[a4paper]@{article@}} (@pxref{Opciones de la clase documento}). @item \textheight @findex \textheight @anchor{parámetros textheight del diseño de página} La altura vertical normal del cuerpo de la página. Si el documento se establece en un tamaño de letra nominal de 10pt entonces para un @code{article} o @code{report} el valor predeterminado es @samp{43\baselineskip}, mientras que para un @code{book} es @samp{41\baselineskip}. Con un tamaño de letra de 11pt, el valor predeterminado es @samp{38\baselineskip} para todas las clases de documento. A 12pt es @samp{36\baselineskip} para todas las clases. @item \textwidth @findex \textwidth @anchor{parámetros textwidth del diseño de página} El ancho horizontal completo de todo el cuerpo de la página. Para un documento @code{article} o @code{report}, el valor predeterminado es @samp{345pt} cuando el tamaño de letra elegido es 10pt, el valor predeterminado es @samp{360pt} a 11pt, y es @samp{390pt} a 12pt. Para un documento @code{book}, el valor predeterminado es @samp{4.5in} con un tamaño de letra de 10pt y @samp{5in} con 11pt o 12pt. En la salida de varias columnas, @code{\textwidth} sigue siendo el ancho de todo el cuerpo de la página, mientras que @code{\columnwidth} es el ancho de una columna (@pxref{\twocolumn}). En las listas (@pxref{list}), @code{\textwidth} sigue siendo el ancho de todo el cuerpo de la página (y @code{\columnwidth} el ancho de toda la columna), mientras que @code{\linewidth} puede disminuir para las listas anidadas. Dentro de una minipágina (@pxref{minipage}) o @code{\parbox} (@pxref{\parbox}), todos los parámetros relacionados con el ancho se establecen en el ancho especificado, y vuelven a sus valores normales al final de @code{minipage} o @code{\parbox}. @item \hsize @findex \hsize @anchor{parámetros hsize del diseño de página} Esta entrada se incluye para completar: @code{\hsize} es el parámetro primitivo @TeX{} utilizado cuando el texto se divide en líneas. No se debería usar en documentos @LaTeX{} normales. @item \topmargin @findex topmargin @anchor{parámetros topmargin del diseño de página} @c xxx TODO se vuelve a alinear en la versión francesa que es más @c precisa. Espacio entre la parte superior de la página @TeX{} (una pulgada desde la parte superior del papel, de manera predeterminada) y la parte superior de la cabecera. El valor se calcula basado en muchos otros parámetros: @code{\paperheight @minus{} 2in @minus{} \headheight @minus{} \headsep @minus{} \textheight @minus{} \footskip}, y luego dividido por dos. @item \topskip @findex \topskip @anchor{parámetros topskip del diseño de página} Distancia mínima entre la parte superior del cuerpo de la página y la línea base de la primera línea de texto. Para las clases estándar, el valor predeterminado es igual que el tamaño de letra, por ejemplo, @samp{10pt} en un tamaño de letra de 10pt. @end ftable @node \baselineskip y \baselinestretch @section @code{\baselineskip} y @code{\baselinestretch} @anchor{\baselineskip} @anchor{\baselinestretch} @findex \baselineskip @findex \baselinestretch @findex \linespread @cindex espacio entre lineas @cindex espacio interlinea @cindex inicial @cindex doble espacio El @code{\baselineskip} es una longitud elástica (@pxref{Longitudes}). Da la @dfn{inicial}, la distancia normal entre líneas en un párrafo, desde línea base a línea base. Por lo general, los autores de documentos no cambian directamente @code{\baselineskip} mientras escribían. En su lugar, se establece mediante el comando de selección @code{\fontsize} del tamaño de letra de bajo nivel (@pxref{comandos fontsize de bajo nivel}). El valor de @code{\baselineskip} se restablece cada vez que sucede un cambio de tipo de letra, por lo que cualquier cambio directo a @code{\baselineskip} desaparecerá la próxima vez que haya un cambio de letra. Para cómo influir en el espaciado de línea, ve la explicación de @code{\baselinestretch} a continuación. Por lo general, el diseñador del tipo de letra asigna el tamaño de letra y el salto de línea base. Estos números son nominales en el sentido de que si, por ejemplo, el archivo de estilo de una letra tiene el comando @code{\fontsize@{10pt@}@{12pt@}} entonces eso no significa que los caracteres en el tipo de letra tenga una altura de 10@dmn{pt}; por ejemplo, los paréntesis y las mayúsculas acentuadas pueden ser más altas. Ni tampoco significa que si las líneas están separadas menos de 12@dmn{pt} entonces corren el riesgo de tocarse. Más bien estos números son juicios tipográficos. (A menudo, el @code{\baselineskip} es un veinte por ciento más grande que el tamaño de la letra). @c adaptado de preguntas frecuentes El @code{\baselineskip} no es una propiedad de cada línea sino del párrafo completo. Como resultado, texto grande en medio de un párrafo, como una sola enorme @code{@{\Huge Q@}}, se aplastará en su línea. @TeX{} se asegurará de que no raspe la línea de arriba, pero no cambiará el @code{\baselineskip} para esa línea para hacer espacio extra arriba. Para solucionarlo, usa un @code{\strut} (@pxref{\strut}). El valor de @code{\baselineskip} que usa @TeX{} para el párrafo es el valor en vigor en la línea en blanco o comando que finaliza la unidad párrafo. Entonces, si un documento contiene este párrafo, sus líneas se estrecharán juntas, en comparación con las líneas en los párrafos circundantes. @c Adaptado de "Lapsos en TeX" de B Beeton TB 42:1 p 13. @example Mucha gente ve un salto de página entre el texto y una ecuación mostrada como mal estilo, por lo que en efecto la pantalla es parte del párrafo. Porque esto se muestra en footnotesize, todo el párrafo tiene el espaciado de línea base que coincide con ese tamaño. @{\footnotesize $$a+b = c$$@} @end example @findex \lineskip @findex \lineskiplimit @findex \prevdepth El proceso para crear párrafos es que cuando se agrega una nueva línea, si la profundidad de la línea anterior más la altura de la nueva línea es menor que @code{\baselineskip}, entonces, @TeX{} inserta pegamento vertical para compensar la diferencia. Hay dos puntos finos. El primero es que si las líneas estarían demasiado juntas, más cerca que @code{\lineskiplimit}, entonces, @TeX{} en su lugar usa @code{\lineskip} como el pegamento entre líneas. El segundo es que @TeX{} en realidad no usa la profundidad de la línea anterior. En su lugar, usa @code{\prev depth}, que generalmente contiene esa profundidad. Pero al comienzo del párrafo (o cualquier lista vertical) o justo después de una regla, @code{\prevdepth} tiene el valor -1000@dmn{pt} y este valor especial le dice a @TeX{} que no inserte ningún pegamento entre líneas en el inicio de párrafo. En las clases estándar @code{\lineskiplimit} es 0@dmn{pt} y @code{\lineskip} es 1@dmn{pt}. Por el párrafo anterior entonces, la distancia entre líneas se puede aproximar a cero, pero si llega a ser cero (o menos de cero), entonces las líneas saltan a 1@dmn{pt} aparte. A veces los autores deben, con fines de edición, poner el documento en espacio doble o espacio y medio. La forma correcta de influir en la distancia entre líneas es a través de @code{\baselinestretch}. Escala @code{\baselineskip} y tiene un valor predeterminado de 1.0. Es un comando, no una longitud, y no surte efecto hasta que ocurre el cambio del tipo de letra, así que establece el factor de escala de esta manera: @code{\renewcommand@{\baselinestretch@}@{1.5@}\selectfont}. La forma más sencilla de cambiar el espacio entre líneas para un documento es poner @code{\linespread@{@var{factor}@}} en el preámbulo. Para espacios dobles, toma @var{factor} como 1.6 y como un espacio y medio usa 1.3. Estos números son aproximados: por ejemplo, dado que el @code{\baselineskip} es aproximadamente 1.2 veces el tamaño de letra, multiplicado por 1.6 suministra una proporción del tamaño de letra de salto de referencia de aproximadamente 2. (El comando @code{\linespread} se define como @code{\renewcommand@{\baselinestretch@}@{@var{factor}@}} por lo que también no tendrá efecto hasta que ocurra una configuración del tipo de letra. Pero eso siempre se lleva a cabo al comienzo de un documento, por lo que no es necesario que lo sigas con @code{\selectfont}). @PkgIndex{setspace} Un enfoque más simple es el paquete @package{setspace}. El ejemplo básico: @example \usepackage@{setspace@} \doublespacing % o \onehalfspacing para 1.5 @end example @noindent En el preámbulo, estos comenzarán el documento con ese tamaño. Pero también puedes usar estas declaraciones en el cuerpo del documento para cambiar el espacio desde ese punto en adelante, y en consecuencia hay @code{\singlespacing} para devolver el espacio a la normalidad. En el cuerpo del documento, una mejor práctica que usar las declaraciones es usar entornos, como @code{\begin@{doublespace@} ... \end@{doublespace@}}. El paquete también tiene comandos para hacer espaciado arbitrario: @code{\setstretch@{@var{factor}@}} y @code{\begin@{spacing@}@{@var{factor}@} ... \end@{spacing@}}. Este paquete también mantiene el interlineado de espacio simple en lugares donde eso es típicamente deseable, como notas al pie y subtítulos de figura. Consulta la documentación del paquete. @node Flotantes @section Flotantes Algunos elementos tipográficos, como figuras y tablas, no se pueden romper a través de las páginas. Deben estar escritos fuera del flujo normal de texto, por ejemplo, flotando en la parte superior de una página posterior. @LaTeX{} puede tener varias clases diferentes de material flotante. El valor predeterminado son las dos clases, @code{figure} (@pxref{figure}) y @code{table} (@pxref{table}), pero puedes crear una nueva clase con el paquete @package{float}. Dentro de cualquier clase float, @LaTeX{} siempre respeta el orden, de modo que la primera figura en un documento fuente debe estar compuesta tipográficamente antes que la segunda figura. Sin embargo, @LaTeX{} puede mezclar las clases, por lo que puede suceder que mientras que la primera tabla aparece en la fuente antes de la primera figura, aparece en la salida después de ella. La colocación de flotantes está sujeta a parámetros, que se indican a continuación, que limitan el número de flotantes que pueden aparecer en la parte superior de una página, y el fondo, etc. Si hay tantos flotantes en cola que los límites impiden para que no encajen en una página, entonces @LaTeX{} coloca lo que puede y aplaza el resto a la página siguiente. De esta manera, los flotantes pueden terminar siendo tipografíados lejos de su lugar en la fuente. En particular, un flotante que es grande puede migrar al final del documento. En cuyo caso, porque todos los flotantes en una clase deben aparecer en orden secuencial, cada flotante siguiente en esa clase también aparece al final. @cindex colocación de flotantes @cindex especificador, ubicación flotante Además de cambiar los parámetros, para cada flotante puedes ajustar dónde el algoritmo de colocación flotante intenta colocarlo usando su argumento @var{placement}. Los valores posibles son una secuencia de las letras debajo. El valor predeterminado para @code{figure} y @code{table}, en ambas clases, @code{article} y @code{book}, es @code{tbp}. @table @code @item t (Top)---en la parte superior de una página de texto. @item b (Bottom)---en la parte inferior de una página de texto. (Sin embargo, @code{b} no es permitido para flotantes de ancho completo (@code{figure*}) con producción en doble columna. Para mejorar esto, usa @file{stfloats} o el paquete @file{dblfloatfix}, pero ve la discusión en las advertencias en las preguntas frecuentes: @url{https://www.texfaq.org/FAQ-2colfloat}. @item h (Here)---en la posición en el texto donde el entorno @code{figure} aparece. Sin embargo, @code{h} no está permitido por sí mismo; @code{t} se añade automáticamente. @cindex aquí, poniendo flotantes @PkgIndex{float} Para forzar absolutamente que un flotante aparezca ``aquí'', puedes @code{\usepackage@{float@}} y usa el especificador @code{H} que define. Para obtener más información, consulta la entrada de preguntas frecuentes en @url{https://www.texfaq.org/FAQ-figurehere}. @item p @cindex página flotante (Página de flotantes)---en una @dfn{página flotante} separada, que es una página que no contiene texto, solo flotantes. @item ! Se utiliza además de uno de los anteriores; solo para este flotante, @LaTeX{} ignora las restricciones tanto en el número de flotantes que pueden aparecer y las cantidades relativas de texto flotante y no flotante en la página. El especificador @code{!} @emph{no} significa ``pon el flotante aquí'', ve más arriba. @end table Nota: el orden en que aparecen las letras en el argumento @var{placement} no cambia el orden en que @LaTeX{} intenta colocar el flotante; por ejemplo, @code{btp} tiene el mismo efecto que @code{tbp}. Todo lo que @var{placement} hace es que si una letra no está presente entonces el algoritmo no intenta esa ubicación. Por lo tanto, el valor predeterminado de @LaTeX{} de @code{tbp} es probar cada ubicación excepto colocar el flotante donde ocurre en la fuente. Para evitar que @LaTeX{} mueva flotantes al final del documento o un capítulo puede usar un comando @code{\clearpage} para comenzar una nueva página e inserta todos los flotantes pendientes. Si no deseas un salto de página, puedes usar el paquete @file{afterpage} y emitir @code{\afterpage@{\clearpage@}}. Esto esperará hasta que la página actual haya terminado y entonces vuelca todos los flotantes pendientes. @PkgIndex{flafter} @LaTeX{} puede escribir un flotante antes de donde aparece en la fuente (aunque en la misma página de salida) si hay un especificador @code{t} en el parámetro @var{placement}. Si esto no se desea, y se elimina la @code{t} no es aceptable ya que evita que se coloque el flotante en la parte superior de la página siguiente, lo puedes evitar usando el paquete @package{flafter} o usando el comando @findex \suppressfloats @code{\suppressfloats[t]}, lo que provoca flotantes para la posición superior en esta página para pasar a la página siguiente. Parámetros relativos a las fracciones de páginas ocupadas por float y texto no flotante (cámbialos con @code{\renewcommand@{@var{parameter}@}@{@var{decimal entre 0 y 1}@}}): @ftable @code @item \bottomfraction @findex \bottomfraction @anchor{fracción flotante inferior} La fracción máxima de la página que se permite sea ocupada por flotantes en el fondo; predeterminado @samp{.3}. @item \floatpagefraction @findex \floatpagefraction @anchor{flotantes floatpagefraction} La fracción mínima de una página flotante que debe estar ocupada por flotantes; predeterminado @samp{.5}. @item \textfraction @findex \textfraction @anchor{fracción de texto flotante} Fracción mínima de una página que debe ser texto; si los flotantes también ocupan mucho espacio para conservar tanto texto, los flotantes se moverán a una pagina diferente. El valor predeterminado es @samp{.2}. @item \topfraction @findex \topfraction @anchor{fracción superior flotante} Fracción máxima en la parte superior de una página que se puede ocupar antes por flotantes; predeterminado @samp{.7}. @end ftable Parámetros relacionados con el espacio vertical alrededor de los flotantes (cámbialos con un comando de la forma @code{\setlength@{@var{parameter}@}@{@var{expresión length}@}}): @ftable @code @item \floatsep @findex \floatsep @anchor{flotantes floatsep} Espacio entre flotantes en la parte superior o inferior de una página; predefinido @samp{12pt más 2pt menos 2pt}. @item \intextsep @findex \intextsep @anchor{flotantes intextsep} Espacio encima y debajo de un flotante en medio del texto principal; predeterminado @samp{12pt plus2pt minus2pt} para documentos de 10 y 11 puntos, y @samp{14pt plus4pt minus4pt} para documentos de 12 puntos. @item \textfloatsep @findex \textfloatsep @anchor{flotante textfloatsep} Espacio entre el último (primer) flotante en la parte superior (inferior) de una página; predeterminado @samp{20pt plus2pt minus4pt}. @end ftable Contadores relacionados con el número de flotantes en una página (cámbialos con un comando de la forma @code{\setcounter@{@var{ctrname}@}@{@var{número natural}@}}): @ftable @code @item bottomnumber @findex bottomnumber @anchor{flotante bottomnumber} Número máximo de flotantes que pueden aparecer en la parte inferior de una página de texto; predeterminado 1. @item dbltopnumber @findex dbltopnumber @anchor{flotantes dbltopnumber} Número máximo de flotantes de tamaño completo que pueden aparecer en la parte superior de una página de dos columnas; predeterminado 2. @item topnumber @findex topnumber @anchor{flotante topnumber} Número máximo de flotantes que pueden aparecer en la parte superior de una página de texto; predeterminado 2. @item totalnumber @findex totalnumber @anchor{flotante totalnumber} Número máximo de flotantes que pueden aparecer en una página de texto; predeterminado 3. @end ftable La entrada principal de preguntas@tie{}frecuentes @TeX{}@tie{}relacionada con los flotantes @url{https//www.texfaq.org/FAQ-floats} contiene sugerencias para relajar los parámetros predeterminados de @LaTeX{} para reducir el problema de los flotantes empujados hasta el final. Una explicación completa del algoritmo de colocación de flotantes se encuentra en el artículo de Frank Mittelbach ``Cómo influir en la posición de los entornos flotantes como figure y table en @LaTeX{}?'' (@url{https//www.latex-project.org/publications/2014-FMi-TUB-tb111mitt-float-placement.pdf}). @menu * \caption:: Crea un título para un entorno flotante. @end menu @node \caption @subsection @code{\caption} @findex \caption @cindex leyendas Sinopsis: @example \caption@{@var{caption-text}@} @end example @noindent o @example \caption[@var{short-caption-text}]@{@var{caption-text}@} @end example Crea un título para un entorno flotante, como @code{figure} o entorno @code{table} (@pxref{figure} o @ref{table}). En este ejemplo, @LaTeX{} coloca un título debajo del espacio en blanco vertical, espacio que deja el autor para la posterior inclusión de una imagen. @example \begin@{figure@} \vspace*@{1cm@} \caption@{Alonzo Cushing, Batería A, 4ª artillería de EE. UU.@} \label@{fig:CushingPic@} \end@{figure@} @end example @noindent El comando @code{\caption} etiquetará @var{caption-text} con algo como @samp{Figura@tie{}1:} para un artículo o @samp{Figura@tie{}1.1:} para un libro. El texto está centrado si está más corto que el ancho del texto, o establecido como un párrafo sin sangría si toma más de una línea. Además de colocar el @var{caption-text} en la salida, el comando @code{\caption} también guarda esa información para usarla en una lista de figuras o lista de tablas (@pxref{Tabla de contenido etc.}). Aquí el comando @code{\caption} usa el comando opcional @var{short-caption-text}, para que el texto más corto aparezca en la lista de tablas, en lugar del @var{caption-text} más largo. @example \begin@{table@} \centering \begin@{tabular@}@{|*@{3@}@{c@}|@} \hline 4 &9 &2 \\ 3 &5 &7 \\ 8 &1 &6 \\ \hline \end@{tabular@} \caption[\textit@{Lo Shu@} cuadrado mágico]@{% The \textit@{Lo Shu@} que es único entre cuadrados de orden tres hasta rotación y reflexión.@} \label@{tab:LoShu@} \end@{table@} @end example @noindent @LaTeX{} etiquetará @var{caption-text} con algo como @samp{Tabla@tie{}1:} para un artículo o @samp{Tabla@tie{}1.1:} para un libro. El título puede aparecer en la parte superior de la @code{figura} o @code{tabla}. Por ejemplo, eso sucedería en el ejemplo anterior poniendo el @code{\caption} entre el @code{\centering} y el @code{\begin@{tabular@}}. Los distintos entornos flotantes se numeran por separado, de forma predeterminada. Eso es @code{\caption} que actualiza el contador, por lo que cualquier @code{\label} debe ir después del @code{\caption}. El contador para el entorno @code{figure} se llama @code{figure}, y de manera similar el contador para el entorno @code{table} es @code{table}. El texto que se pondrá en la lista de figuras o lista de tablas es argumento móvil. Si recibes el error @LaTeX{} @samp{! Argumento de \@@caption tiene un extra@}}, entonces debes poner @code{\protect} delante de cualquier comando frágil. @xref{\protect}. @PkgIndex{caption} El paquete @package{caption} tiene muchas opciones para ajustar cómo aparece el título, por ejemplo, cambiando el tamaño del texto, haciendo que el título sea colgar texto en lugar de establecerlo como un párrafo, o hacer el título siempre establecido como un párrafo en lugar de centrado cuando es corto. @node Seccionado @chapter Seccionado @cindex comandos de Seccionado @cindex parte @cindex capítulo @cindex sección @cindex subsección @cindex subsubsección @cindex párrafo @cindex subpárrafo @findex \part @findex \chapter @findex \section @findex \subsection @findex \subsubsection @findex \paragraph @findex \subparagraph Estructura tu texto en divisiones: partes, capítulos, secciones, etc. Todos los comandos de seccionado tienen la misma forma, una de: @example @var{sectioning-command}@{@var{title}@} @var{sectioning-command}*@{@var{title}@} @var{sectioning-command}[@var{toc-title}]@{@var{title}@} @end example @noindent Por ejemplo, declarar el comienzo de una subsección como con @code{\subsection@{Motivación@}}. La tabla tiene cada @var{sectioning-command} en @LaTeX{}. Todos están disponibles en todas las clases de documentos estándar de @LaTeX{} @code{book}, @code{report} y@tie{}@code{article}, excepto que @code{\chapter} no está disponible en @code{article}. @multitable @columnfractions .25 .25 .40 @headitem Unidad de seccionado @tab Comando @tab Nivel @item Parte @tab @code{\part} @tab -1 (@code{book}, @code{report}), 0 (@code{article}) @item Capítulo @tab @code{\chapter} @tab 0 @item Sección @tab @code{\section} @tab 1 @item Subsección @tab @code{\subsection} @tab 2 @item Subsubsección @tab @code{\subsubsection} @tab 3 @item Párrafo @tab @code{\paragraph} @tab 4 @item Subpárrafo @tab @code{\subparagraph} @tab 5 @end multitable @cindex forma-@code{*} de comandos de seccionado Todos estos comandos tienen una forma @code{*} que imprime @var{título} como de costumbre pero no lo numera y no hace una entrada en la tabla de contenido. Un ejemplo de cómo usar esto es para un apéndice en un @code{article}. Las entradas @code{\appendix\section@{Appendix@}} da como resultado @samp{Apéndice A} (@pxref{\appendix}). Puedes perder la numeración@tie{}@samp{A} ingresando en su lugar @code{\section*@{Appendix@}} (los artículos a menudo omiten una tabla de contenido y tienen encabezados de página simples para que las otras diferencias del comando @code{\section} puedan no importar). El título de la sección @var{título} proporciona el título en el texto principal, pero también puede aparecer en la tabla de contenido y en el encabezado o pie (@pxref{Estilos de página}). Es posible que no desees el mismo texto en estos lugares como en el texto principal. Todos estos comandos tienen un argumento @var{toc-title} opcional para esos otros lugares. El número de nivel en la tabla anterior determina qué unidades seccionales son numeradas, y que aparecen en la tabla de contenido. Si los comandos de seccionado @var{level} son menores o iguales que el valor del contador @code{secnumdepth} entonces los títulos para este comando de seccionado serán numerados (@pxref{Seccionado/secnumdepth}). Y, si @var{level} es menor que o igual al valor del contador @code{tocdepth} luego la tabla de contenido tendrá una entrada para esta unidad de seccionado (@pxref{Seccionado/tocdepth}). @LaTeX{} espera que antes de tener una @code{\subsection} tengas una @code{\section} y, en un documento de clase @code{book}, que antes de una @code{\section} tendrás un @code{\chapter}. De lo contrario, puedes obtener algo así como una subsección numerada @samp{3.0.1}. @PkgIndex{titlesec} @LaTeX{} te permite cambiar la apariencia de las unidades seccionales. Como un ejemplo simple, puedes cambiar la numeración de la sección a letras mayúsculas con esto (en el preámbulo):@* @code{\renewcommand\thesection@{\Alph@{section@}@}} . (@xref{\alph \Alph \arabic \roman \Roman \fnsymbol}). CTAN tiene muchos paquetes que facilitan este ajuste, en particular @package{titlesec}. Dos contadores se relacionan con la apariencia de los encabezados realizados por comandos de seccionado. @ftable @code @item secnumdepth @findex secnumdepth @r{counter} @cindex números de sección, imprimir @anchor{seccionado secnumdepth} @anchor{Seccionado/secnumdepth} Controla qué unidades de seccionado están numeradas. Poniendo el contador con @code{\setcounter@{secnumdepth@}@{@var{level}@}} suprimirá numeración de seccionado a cualquier profundidad superior a @var{level} (@pxref{\setcounter}). Consulta la tabla anterior para ver los números de nivel. Por ejemplo, si @code{secnumdepth} es 1 en un @code{article} entonces un comando @code{\section@{Introducción@}} producirá una salida como @samp{1 Introducción} mientras que @code{\subsection@{Discusión@}} produce una salida como @samp{Discusión}, sin número. @LaTeX{} @code{secnumdepth} predeterminado es@tie{}3 en la clase @file{article} y@tie{}2 en las clases @file{book} y @file{report}. @item tocdepth @findex tocdepth @r{counter} @cindex tabla de contenido, números de seccionado impresos @anchor{seccionado tocdepth} @anchor{Seccionado/tocdepth} Controla qué unidades de seccionado se enumeran en la tabla de contenido. La configuración @code{\setcounter@{tocdepth@}@{@var{level}@}} hace que las unidades de Seccionado en @var{level} sean las más pequeñas enumeradas (@pxref{\setcounter}). Consulta la tabla anterior para ver los números de nivel. Por ejemplo, si @code{tocdepth} es@tie{}1 entonces la tabla de contenido enumera secciones pero no subsecciones. Predeterminado de @LaTeX{} @code{tocdepth} es@tie{}3 en la clase @file{article} y@tie{}2 en la clase @file{book} y @file{report}. @end ftable @menu * \part:: Inicia una parte. * \chapter:: Inicia un capítulo. * \section:: Inicia una sección. * \subsection:: Inicia una subsección. * \subsubsection - \paragraph y \subparagraph:: Divisiones inferiores. * \appendix:: Inicia los apéndices. * \frontmatter - \mainmatter y \backmatter:: Las tres partes de un libro. * \@@startsection:: Encabezado de unidades seccionales. @end menu @node \part @section @code{\part} @findex \part @cindex parte @cindex seccionado, parte Sinopsis, una de: @example \part@{@var{título}@} \part*@{@var{título}@} \part[@var{toc-title}]@{@var{título}@} @end example Inicia una parte del documento. Las clases estándar de @LaTeX{} @code{book}, @code{report} y @code{article}, todas tienen este comando. Esto produce una parte del documento, en un libro. @example \part@{VOLUMEN I \\ MEMORIAS PERSONALES DE U.\ S.\ GRANT@} \chapter@{ANCESTRIA--NACIMIENTO--INFANCIA.@} Mi familia es estadounidense, y lo ha sido durante generaciones, en todas sus ramas, directas y colaterales. @end example En cada clase estándar, el comando @code{\part} genera un número de pieza como @samp{Parte I}, solo en su línea, en negrita y en grandes letras. Entonces @LaTeX{} genera @var{título}, también solo en su línea, en negrita y en letra aún más grande. En la clase @code{book}, el @LaTeX{} predeterminado pone cada parte sola en su propia página. Si el libro tiene dos caras entonces @LaTeX{} saltará una página si es necesario para tener la nueva parte en una página impar. En @code{report} nuevamente está solo en una página, pero @LaTeX{} no forzará una página impar. En un @code{article} @LaTeX{} no lo coloca en una página nueva, sino que genera el número de parte y título de la parte en la página principal del documento. La forma @code{*}@tie{}muestra @var{título} pero no muestra el número de parte, no incrementa el contador @code{parte}, y no produce ninguna entrada de tabla de contenido. El argumento opcional @var{toc-title} aparecerá como el título de la parte en la tabla de contenido (@pxref{Tabla de contenido etc.}) y, al ejecutar cabeceras (@pxref{Estilos de página}). Si no está presente, entonces @var{título} estará ahí. Este ejemplo pone un salto de línea en @var{título} pero omite el salto en la tabla de contenido. @example \part[Arriba desde abajo; mi vida]@{Arriba desde abajo\\ mi vida@} @end example Para determinar qué unidades seccionales están numeradas y cuáles aparecen en la tabla de contenido, el número de nivel de una parte es@tie{}-1 (@pxref{Seccionado/secnumdepth} y @ref{Seccionado/tocdepth}). @PkgIndex{indentfirst} En la clase @code{article}, si un párrafo sigue inmediatamente a la parte título entonces no está sangrado. Para obtener una sangría, puedes usar el paquete @package{indentfirst}. @PkgIndex{titlesec} Un paquete para cambiar el comportamiento de @code{\part} es @package{titlesec}. Consulta su documentación en CTAN. @node \chapter @section @code{\chapter} @findex \chapter @cindex capítulo Sinopsis, una de: @example \chapter@{@var{título}@} \chapter*@{@var{título}@} \chapter[@var{toc-title}]@{@var{título}@} @end example Inicia un capítulo. Las clases estándar de @LaTeX{} @code{book} y @code{report} tienen este comando pero no @code{article}. Esto produce un capítulo. @example \chapter@{Acechantes@} Llámame Ismael. Hace algunos años---no importa cuánto tiempo exactamente---teniendo poco dinero en mi bolsa o nada, y nada en particular que me interese en tierra, pensé en navegar un poco y ver la parte acuosa del mundo. @end example El valor predeterminado de @LaTeX{} comienza cada capítulo en una nueva página, una página impar si el documento tiene dos caras. Produce un capitulo número como @samp{Capítulo 1} en negrita grande (el tamaño es @code{\huge}). Luego pone @var{título} en una nueva línea, en tipo negrita que es aún más grande (tamaño @code{\Huge}). También incrementa el contador @code{chapter}, agrega una entrada a la tabla de contenido (@pxref{Tabla de contenido etc.}), y establece la cabecera de información en ejecución (@pxref{Estilos de página}). La forma @code{*}@tie{}muestra @var{título} en una nueva línea, en negrita. Pero no muestra el número de capítulo, ni incrementa el contador @code{chapter}, no produce una entrada de tabla de contenido y no afecta la cabecera en ejecución. (Si usas el estilo de página @code{headings} en un documento de dos caras, entonces la cabecera será del capítulo anterior). @example \chapter*@{Preamble@} @end example El argumento opcional @var{toc-title} aparecerá como título del capítulo en la tabla de contenido (@pxref{Tabla de contenido etc.}) y en ejecutar cabeceras (@pxref{Estilos de página}). Si no está presente entonces @var{título} estará allí. Esto muestra el nombre completo en el título del capítulo, @example \chapter[Weyl]@{Hermann Klaus Hugo (Peter) Weyl (1885--1955)@} @end example @noindent pero solo @samp{Weyl} en la página de contenido. Esto pone un salto de línea en el título, pero eso no funciona bien con las cabeceras en ejecución, por lo que omite el salto en el contenido. @example \chapter[Dado todo; mi historia]@{Dado todo\\ mi historia@} @end example Para determinar qué unidades seccionales están numeradas y cuáles aparecen en la tabla de contenido, el número de nivel de un capítulo es@tie{}0 (@pxref{Seccionado/secnumdepth} y @pxref{Seccionado/tocdepth}). @PkgIndex{indentfirst} El párrafo que sigue al título del capítulo no tiene sangría, al igual que una práctica tipográfica estándar. Para obtener una sangría, usa el paquete @package{indentfirst}. Puedes cambiar lo que se muestra para el número de capítulo. Para cambiarlo a algo como @samp{Conferencia 1}, pon en el preámbulo @code{\renewcommand@{\chaptername@}@{Conferencia@}} o esto (@pxref{\makeatletter y \makeatother}). @example \makeatletter \renewcommand@{\@@chapapp@}@{Conferencia@} \makeatother @end example @PkgIndex{babel} @noindent Para hacer este cambio debido al idioma principal de el documento, consulta el paquete @package{babel}. En un documento de dos caras, @LaTeX{} coloca un capítulo en una página impar, si es necesario dejar una página par que esté en blanco excepto por cualquier cabecera en ejecución. Para dejar esa página completamente en blanco, @ref{\clearpage y \cleardoublepage}. @PkgIndex{titlesec} Para cambiar el comportamiento del comando @code{\chapter}, puedes copiar su definición del archivo de formato @LaTeX{} y realizar ajustes. Pero también hay muchos paquetes en CTAN que abordan esto. Uno es @package{titlesec}. Ve su documentación, pero el ejemplo a continuación da un sentido de lo que puede hacer. @example \usepackage@{titlesec@} % en el preámbulo \titleformat@{\chapter@} @{\Huge\bfseries@} % formato del título @{@} % etiqueta, tal como 1.2 para una subsección @{0pt@} % longitud de la separación entre la etiqueta y % el título @{@} % gancho antes del código @end example @noindent Esto omite el número de capítulo @samp{Capítulo 1} de la página pero a diferencia de @code{\chapter*} mantiene el capítulo en la tabla de contenido y la ejecución de cabeceras. @node \section @section @code{\section} @findex \section @cindex sección Sinopsis, una de: @example \section@{@var{título}@} \section*@{@var{título}@} \section[@var{toc-title}]@{@var{título}@} @end example Inicia una sección. Las clases estándar @code{article} de @LaTeX{}, @code{book} y @code{report} tienen este comando. Esto produce una sección. @example En esta Parte tendemos a estar más interesados en la función, en el comportamiento de entrada-salida, que en los detalles de implementar ese comportamiento. \section@{Máquinas de Turing@} A pesar de este deseo de minimizar la implementación, seguimos el enfoque de A~Turing de que el primer paso hacia la definición del conjunto de funciones computables es reflexionar sobre los detalles de lo que pueden hacer los mecanismos. @end example Para las clases estándar de @LaTeX{} @code{book} y @code{report} la salida predeterminada es como @samp{1.2 @var{título}} (para capítulo@tie{}1, sección@tie{}2), solo en su línea y alineado a la izquierda, en negrita y letra más grande (el tamaño de letra es @code{\Large}). Lo mismo se sostiene en @code{article} excepto que no hay capítulos en esa clase por lo que parece @samp{2 @var{título}}. La forma @code{E*}@tie{}muestra @var{título}. Pero no muestra el número de sección, no incrementa el contador @code{section}, no produce ninguna entrada en la tabla de contenido y no afecta la cabecera en ejecución. (Si usas el estilo de página @code{headings} en un documento de dos caras, entonces el encabezado será de la parte anterior). El argumento opcional @var{toc-title} aparecerá como título de la sección en la tabla de contenido (@pxref{Tabla de contenido etc.}) y encabezados en ejecución (@pxref{Estilos de página}). Si no está presente entonces @var{título} estará allí. Esto muestra el nombre completo en el título de la sección: @example \section[Isabel~II]@{Isabel Segunda, por la Gracia de Dios Reina del Reino Unido, Canadá y sus otros reinos y territorios, Jefe de la Commonwealth, Defensor de la Fe.@} @end example @noindent pero solo @samp{Isabel II} en la página de contenido y en los encabezados. Esto tiene un salto de línea en @var{title} pero eso no funciona con encabezados por lo que se omite de los contenidos y encabezados. @example \section[La verdad es que hice trampa; la historia de mi vida]@{La verdad es que hice trampa\\la historia de mi vida@} @end example Para determinar qué unidades seccionales están numeradas y cuáles aparecen en la tabla de contenido, el número de nivel de una sección es@tie{}1 (@pxref{Seccionado/secnumdepth} y @pxref{Seccionado/tocdepth}). @PkgIndex{indentfirst} El párrafo que sigue al título de la sección no tiene sangría, al igual que una práctica tipográfica estándar. Una forma de obtener una sangría es usar el paquete @package{indentfirst}. @PkgIndex{titlesec} En general, para cambiar el comportamiento del comando @code{\section}, hay varias opciones. Una es el comando @code{\@@startsection} (@pxref{\@@startsection}). También hay muchos paquetes en CTAN que abordan esto, incluido @package{titlesec}. Ve la documentación pero el siguiente ejemplo da una idea de lo que pueden hacer. @c crédito: egreg https://groups.google.com/forum/#!topic/comp.text.tex/tvc8oM5P4y4 @example \usepackage@{titlesec@} % en el preámbulo \titleformat@{\section@} @{\normalfont\Large\bfseries@} % formato del título @{\makebox[1pc][r]@{\thesection\hspace@{1pc@}@}@} % etiqueta @{0pt@} % Longitud de la separación entre la etiqueta y el título @{@} % gancho antes del código \titlespacing*@{\section@} @{-1pc@}@{18pt@}@{10pt@}[10pc] @end example @noindent Eso pone el número de sección en el margen. @node \subsection @section @code{\subsection} @findex \subsection @cindex subsección Sinopsis, una de: @example \subsection@{@var{title}@} \subsection*@{@var{title}@} \subsection[@var{toc-title}]@{@var{title}@} @end example Inicia una subsección. Las clases estándar @code{article} de @LaTeX{}, @code{book} y @code{report} tienen este comando. Esto produce una subsección. @example Mostraremos que hay más funciones que las máquinas de Turing y que por tanto, algunas funciones no tienen máquina asociada. \subsection@{Cardinalidad@} Comenzaremos con dos paradojas que dramatizan el desafío a nuestra intuición planteado al comparar los tamaños de conjuntos infinitos. @end example Para las clases estándar de @LaTeX{} @code{book} y @code{report} la salida predeterminada es como @samp{1.2.3 @var{title}} (para capítulo@tie{}1, sección@tie{}2, subsección@tie{}3), solo en su línea y alineado a la izquierda, en negrita y una letra más grande (el tamaño de letra es @code{\large}). Lo mismo contiene @code{article} excepto que no hay capítulos en esa clase por lo que parece @samp{2.3 @var{título}}. La forma @code{E*}@tie{}muestra @var{título}. Pero no muestra el número de subsección, no incrementa el contador @code{subsection} y no produce ninguna entrada en la tabla de contenido. El argumento opcional @var{toc-title} aparecerá como título de la subsección en la tabla de contenido (@pxref{Tabla de contenido etc.}). Si esto no está presente, @var{title} estará allí. Este muestra el texto completo en el título de la subsección: @example \subsection[$\alpha,\beta,\gamma$ paper]@{\textit@{El origen de Elementos químicos@} por R.A.~Alpher, H.~Bethe y G.~Gamow@} @end example @noindent pero solo @samp{@BES{03B1,\alpha},@BES{03B2,\beta},@BES{03B3,\gamma} paper} en la página de contenido. Para determinar qué unidades seccionales están numeradas y cuáles aparecen en la tabla de contenido, el número de nivel de una subsección es@tie{}2 (@pxref{Seccionado/secnumdepth} y @pxref{Seccionado/tocdepth}). @PkgIndex{indentfirst} El párrafo que sigue al título de la subsección no tiene sangría, al igual que una práctica tipográfica estándar. Una forma de obtener una sangría es usar el paquete @package{indentfirst}. @PkgIndex{titlesec} Hay varias maneras de cambiar el comportamiento del comando @code{\subsection}. Una es el comando @code{\@@startsection} (@pxref{\@@startsection}). También hay muchos paquetes en CTAN que abordan esto, incluido @package{titlesec}. Ve la documentación pero el siguiente ejemplo da una idea de lo que pueden hacer. @example \usepackage@{titlesec@} % en el preámbulo \titleformat@{\subsection@}[runin] @{\normalfont\normalsize\bfseries@} % formato del título @{\thesubsection@} % etiqueta @{0.6em@} % espacio entre la etiqueta y % el título @{@} % gancho antes del código @end example @noindent Eso pone el número de subsección y @var{title} en la primera línea de texto. @node \subsubsection - \paragraph y \subparagraph @section @code{\subsubsection}, @code{\paragraph}, @code{\subparagraph} @anchor{\subsubsection} @findex \subsubsection @cindex subsubsección @c @anchor{\paragraph} @findex \paragraph @cindex párrafo @c @anchor{\subparagraph} @findex \subparagraph @cindex subpárrafo Sinopsis, una de: @example \subsubsection@{@var{title}@} \subsubsection*@{@var{title}@} \subsubsection[@var{toc-title}]@{@var{title}@} @end example @noindent o una de: @example \paragraph@{@var{title}@} \paragraph*@{@var{title}@} \paragraph[@var{toc-title}]@{@var{title}@} @end example @noindent o una de: @example \subparagraph@{@var{title}@} \subparagraph*@{@var{title}@} \subparagraph[@var{toc-title}]@{@var{title}@} @end example Inicia una subsección, párrafo o subpárrafo. Las clases estandar de @LaTeX{} @code{article}, @code{book} y @code{report} tienen todas estos comandos, aunque no son de uso común. Esto produce una subsección. @example \subsubsection@{Compresores de anillos de pistón: rendimiento estructural@} Proporciona ensamblajes de revestimiento de paredes exteriores/interiores capaces de resistir los efectos de la carga y las tensiones de anillos de pistón de motor de gasolina de grado de consumo. @end example La salida predeterminada de cada uno de los tres no cambia sobre las clases @LaTeX{} estándar @code{article}, @code{book} y @code{report}. Para @code{\subsubsection} el @var{title} está solo en su línea, en negrita y tipo de letra de tamaño normal. Para @code{\paragraph} el @var{title} está alineado con el texto, sin sangría, en negrita y letra de tamaño normal. Para @code{\subparagraph} el @var{title} está en línea con el texto, con sangría de párrafo, en negrita y letra de tamaño normal (Debido a que un @code{article} no tiene capítulos, sus subsubsecciones son numeradas y así se ve como @samp{1.2.3 @var{title}}, por sección@tie{}1, subsección@tie{}2 y subsubsección@tie{}3. Las otras dos divisiones no están numeradas). La forma @code{E*}@tie{}muestra @var{título}. Pero no incrementa el contador asociado y no produce entrada en la tabla de contenido (y no muestra el número de @code{\subsubsection}). El argumento opcional @var{toc-title} aparecerá como el título de la división en la tabla de contenido (@pxref{Tabla de contenido etc.}). Si esto no está presente, @var{title} estará allí. Para determinar qué unidades seccionales están numeradas y cuáles aparecen en la tabla de contenido, el número de nivel de una subsubsección es@tie{}3, de un párrafo es@tie{}4, y de un subpárrafo es@tie{}5 (@pxref{Seccionado/secnumdepth} y @pxref{Seccionado/tocdepth}). @PkgIndex{indentfirst} El párrafo que sigue al título de la subsubsección no tiene sangría, al igual que una práctica tipográfica estándar. Una forma de obtener una sangría es usar el paquete @package{indentfirst}. @PkgIndex{titlesec} Hay varias formas de cambiar el comportamiento de estos comandos. Una es el comando @code{\@@startsection} (@pxref{\@@startsection}). También hay muchos paquetes en CTAN que abordan esto, incluyendo @package{titlesec}. Consulta la documentación en CTAN. @node \appendix @section @code{\appendix} @findex \appendix @cindex apéndice @cindex apéndices Sinopsis: @example \appendix @end example Este no produce directamente ningún resultado. Pero en un documento @code{book} o @code{report} declara que los subsiguientes comandos @code{\chapter} comienzan un apéndice. En un artículo hace lo mismo, para los comandos @code{\section}. También restablece los contadores @code{chapter} y @code{section} a@tie{}0 en un libro o informe, y en un artículo restablece los contadores @code{section} y @code{subsection}. En este libro @example \chapter@{Uno@} ... \chapter@{Dos@} ... ... \appendix \chapter@{Tres@} ... \chapter@{Cuatro@} ... @end example @noindent los dos primeros generarán una salida numerada @samp{Capítulo 1} y @samp{Capítulo 2}. Después del @code{\appendix} la numeración será @samp{Apéndice A} y @samp{Apéndice B}. @xref{Plantilla de libro Larger}, para otro ejemplo. @PkgIndex{appendix} El paquete @package{appendix} agrega el comando @code{\appendixpage} para poner @samp{Apéndices} separados en el cuerpo del documento antes del primer apéndice y el comando @code{\addappheadtotoc} hace lo mismo en la tabla de contenido. Puedes restablecer el nombre @samp{Apéndices} con un comando como @code{\renewcommand@{\appendixname@}@{Especificación@}}, así como una serie de otras características. Consulta la documentación en CTAN. @node \frontmatter - \mainmatter y \backmatter @section @code{\frontmatter}, @code{\mainmatter}, @code{\backmatter} @anchor{\frontmatter} @findex \frontmatter @cindex libro, portada @cindex portada de un libro @c @anchor{\mainmatter} @findex \mainmatter @cindex libro, asunto principal @cindex asunto principal de un libro @c @anchor{\backmatter} @findex \backmatter @cindex libro, asunto contraportada @cindex libro, asunto final @cindex asunto de contraportada de un libro @cindex asunto final de un libro Sinopsis, una o más de: @example \frontmatter ... \mainmatter ... \backmatter ... @end example Da formato a un documento de clase @code{book} de forma diferente según la parte del documento que se está produciendo. Los tres comandos son opcionales. Tradicionalmente, la portada de un libro contiene elementos como la página de título, un resumen, un índice, un prefacio, una lista de anotaciones, una lista de figuras y una lista de tablas. (Algunas de estas páginas de asuntos frontales, como la página del título, tradicionalmente no están numeradas). El material anterior puede contener cosas tales como un glosario, notas, una bibliografía y un índice. El comando @code{\frontmatter} hace que las páginas se numeren en romanos minúsculas, y hace que los capítulos no estén numerados, aunque el título de cada capítulo aparece en la tabla de contenido; si usas otros comandos de seccionado aquí, usa la versión @code{*}-versión (@pxref{Seccionado}). El comando @code{\mainmatter} cambia el comportamiento de nuevo a la versión esperada y restablece el número de página. El comando @code{\backmatter} deja la numeración de páginas sola pero cambia los capítulos de nuevo a no estar numerados. @xref{Plantilla de libro Larger}, por ejemplo, usando estos tres comandos. @node \@@startsection @section @code{\@@startsection}, composición tipográfica de encabezados de unidades seccionales @findex \@@startsection @cindex sección, redefiniendo Sinopsis: @example \@@startsection@{@var{name}@}@{@var{level}@}@{@var{indent}@}@{@var{beforeskip}@}@{@var{afterskip}@}@{@var{style}@} @end example Se usa para ayudar a redefinir el comportamiento de los comandos que comienzan a seccionar divisiones como @code{\section} o @code{\subsection}. Ten en cuenta que el paquete @package{titlesec} facilita la manipulación de la sección. Además, mientras que la mayoría de los requisitos para los comandos de seccionado los puede satisfacer @code{\@@startsection}, algunos no pueden. por ejemplo, en las clases @LaTeX{} estándar @code{book} y @code{report} los comandos @code{\chapter} y @code{\report} no se construyen de esta forma. Hacer un comando de este tipo, es posible que desees utilizar el comando @code{\secdef}. @c xx define y hace una referencia cruzada a secdef. Técnicamente, @code{\@@startsection} tiene la forma @example \@@startsection@{@var{name}@} @{@var{level}@} @{@var{indent}@} @{@var{beforeskip}@} @{@var{afterskip}@} @{@var{style}@}*[@var{toctitle}]@{@var{title}@} @end example @noindent por lo tanto emite @example \renewcommand@{\section@}@{\@@startsection@{@var{name}@} @{@var{level}@} @{@var{indent}@} @{@var{beforeskip}@} @{@var{afterskip}@} @{@var{style}@}@} @end example @noindent redefine @code{\section} manteniendo su forma de llamada estándar @code{\section*[@var{toctitle}]@{@var{title}@}} (en el que, como recordatorio, el star@tie{}@code{*} es opcional). @xref{Seccionado}. Esto implica que cuando escribes un comando como @code{\renewcommand@{\section@}@{...@}}, el @code{\@@startsection@{...@}} debe ser el último en la definición. Ve los ejemplos a continuación. @table @var @item name @anchor{nombre de la sección de inicio} @anchor{\@@startsection/name} Nombre del contador utilizado para numerar la cabecera de seccionado. Este contador se debe definir por separado. Lo más común es que esto sea @code{sección}, @code{subsección} o @code{párrafo}. Aunque en esos casos el nombre del contador es el mismo que el comando de seccionado en sí mismo, no tienes que usar el mismo nombre. Entonces @code{\the}@var{name} muestra el número del título y @code{\}@var{name}@code{mark} es para los encabezados de página. Ve el tercer ejemplo a continuación. @item level @anchor{startsection level} @anchor{\@@startsection/level} Un número entero que proporciona la profundidad del comando de seccionado. @xref{Seccionado}, para la lista de números de nivel estándar. Si @var{level} es menor o igual que el valor del contador @code{secnumdepth} entonces los títulos para este comando de seccionado serán numerados (@pxref{Seccionado/secnumdepth}). Por ejemplo, si @code{secnumdepth} es 1 en un @code{article} luego el comando @code{\section@{Introducción@}} producirá una salida como ``1 Introducción'' mientras que @code{\subsection@{Debate@}} producirá salida como ``Debate'', sin el prefijo numérico. Si @var{level} es menor o igual que el valor del contador @var{tocdepth} entonces la tabla de contenido tendrá una entrada para esta unidad de seccionado (@pxref{Seccionado/tocdepth}). Por ejemplo, en un @code{article}, si @var{tocdepth} es 1, la tabla de contenido será listar secciones pero no subsecciones. @item indent @anchor{startsection indent} @anchor{\@@startsection/indent} Una longitud que da la sangría de todas las líneas del título con respecto al margen izquierdo. Para que el título quede alineado con el uso de la margen @code{0pt}. Una sangría negativa como @code{-\parindent} se moverá el título en el margen izquierdo. @item beforeskip @anchor{startsection beforeskip} @anchor{\@@startsection/beforeskip} El valor absoluto de esta longitud es la cantidad de espacio vertical que se inserta antes del título de esta unidad de seccionado. Este espacio será descartado si la unidad de seccionado comienza al principio de una página. Si este número es negativo, el primer párrafo que sigue al encabezado no tendrá sangría, si no es negativo entonces el primer párrafo estará sangrado. (Ten en cuenta que el negativo de @code{1pt plus 2pt minus 3pt} es @code{-1pt plus -2pt minus -3pt}). Por ejemplo, si @var{beforeskip} es @code{-3.5ex plus -1ex minus -0.2ex} entonces, para iniciar la nueva unidad de seccionado, @LaTeX{} agregará unas 3.5 veces la altura de una letra x en espacio vertical, y el primer párrafo en la sección no tendrá sangría. Usando una longitud elástica, con @code{plus} y @code{minus}, es una buena práctica aquí ya que da @LaTeX{} más flexibilidad para crear la página (@pxref{Longitudes}). La contabilización completa del espacio vertical entre la línea base de la línea anterior al encabezado de esta unidad de seccionado y la línea base del encabezado es que es la suma del @code{\parskip} de la letra del texto, el @code{\baselineskip} de la letra del título y el valor absoluto de @var{beforeskip}. Este espacio suele ser elástico, por lo que se puede estirar o encoger. (Si la unidad de seccionado comienza en una página nueva de modo que el espacio vertical se descarta, la línea base del texto del encabezado será donde @LaTeX{} pondría la línea base de la primera línea de texto en esa página). @item afterskip @anchor{startsection afterskip} @anchor{\@@startsection/afterskip} Esta es una longitud. Si @var{afterskip} no es negativo, entonces este es el espacio vertical insertado después del encabezado del título de la unidad de seccionado. Si es negativo, entonces el encabezado del título se convierte en un encabezado en ejecución, de modo que pasa a formar parte del párrafo siguiente. En este caso el valor absoluto de la longitud da el espacio horizontal entre el final del título y el comienzo del siguiente párrafo. (Ten en cuenta que el negativo de @code{1pt plus 2pt minus 3pt} es @code{-1pt plus -2pt minus -3pt}). Al igual que con @var{beforeskip}, usando una longitud elástica, con @code{plus} y @code{minus} componentes, es una buena práctica aquí ya que da a @LaTeX{} más flexibilidad en la elaboración de la página. Si @code{afterskip} no es negativo, la contabilidad completa del espacio vertical entre la línea base de la cabecera de la unidad de seccionado y la línea base de la primera línea del siguiente párrafo es que es la suma del @code{\parskip} de la letra del título, el @code{\baselineskip} de la letra del texto y el valor de @var{after}. Ese espacio suele ser elástico, por lo que se puede estirar o encoger. (Ten en cuenta que debido a que el signo de @code{afterskip} cambia la unidad de seccionado encabezado independiente de la ejecución, no puedes usar un @code{afterskip} negativo para cancelar parte del @code{\parskip}). @item style @anchor{estilo de startsection} @anchor{\@@startsection/style} Controla el estilo del título. Ve los ejemplos a continuación. Los comandos típicos para usar aquí son @code{\centering}, @code{\raggedright}, @code{\normalfont}, @code{\hrule} o @code{\newpage}. El ultimo comando en @var{style} puede ser uno que tome un argumento, como @code{\MakeUppercase} o @code{\fbox} que toma un argumento. El título de la sección se proporcionará como argumento para este comando. Por ejemplo, establecer @var{style} en @code{\bfseries\MakeUppercase} sería producir títulos en negrita y mayúsculas. @end table Estos son los valores predeterminados de @LaTeX{} para las primeras tres unidades de seccionado que se definen con @code{\@@startsection}, para las clases @file{article}, @file{book} y @file{report}. @itemize @item Para @code{section}: @var{level} es 1, @var{indent} es 0@dmn{pt}, @var{beforeskip} es @code{-3.5ex plus -1ex minus -0.2ex}, @var{afterskip} es @code{2.3ex plus 0.2ex} y @var{style} es @code{\normalfont\Large\bfseries}. @item Para @code{subsection}: @var{level} es 2, @var{indent} es 0@dmn{pt}, @var{beforeskip} es @code{-3.25ex plus -1ex minus @w{-0.2ex}}, @var{afterskip} es @code{1.5ex plus 0.2ex} y @var{style} es @code{\normalfont\large\bfseries}. @item @raggedright Para @code{subsubsection}: @var{level} es 3, @var{indent} es 0@dmn{pt}, @var{beforeskip} es @code{-3.25ex plus -1ex minus -0.2ex}, @var{afterskip} es @code{1.5ex plus 0.2ex} y @var{style} es @code{\normalfont\normalsize\bfseries}. @end raggedright @end itemize A continuación se presentan algunos ejemplos. Estos van en un paquete o archivo de clase o en el preámbulo de un documento @LaTeX{}. Si los pones en el preámbulo deben ir entre un comando @code{\makeatletter} y un @code{\makeatother}. (Probablemente el mensaje de error @code{No puedes usar `\spacefactor' en modo vertical.} significa que se te olvidó esto). @xref{\makeatletter y \makeatother}. Esto colocará los títulos de las secciones en negrita grande, centrados. Dice @code{\renewcommand} porque las clases estándar de @LaTeX{} ya han definió una @code{\section}. Por la misma razón, no define un contador @code{section}, o los comandos @code{\thesection} y @code{\l@@section}. @example \renewcommand\section@{% \@@startsection@{section@}% @ref{\@@startsection/name,@var{name},@var{name}} @{1@}% @ref{\@@startsection/level,@var{level},@var{level}} @{0pt@}% @ref{\@@startsection/indent,@var{indent},@var{indent}} @{-3.5ex plus -1ex minus -.2ex@}% @ref{\@@startsection/beforeskip,@var{beforeskip},@var{beforeskip}} @{2.3ex plus.2ex@}% @ref{\@@startsection/afterskip,@var{afterskip},@var{afterskip}} @{\centering\normalfont\Large\bfseries@}% @ref{\@@startsection/style,@var{style},@var{style}} @} @end example Esto pondrá los títulos de @code{subsection} en letras minúsculas, alineados con el párrafo. @example \renewcommand\subsection@{% \@@startsection@{subsection@}% @ref{\@@startsection/name,@var{name},@var{name}} @{2@}% @ref{\@@startsection/level,@var{level},@var{level}} @{0em@}% @ref{\@@startsection/indent,@var{indent},@var{indent}} @{-1ex plus 0.1ex minus -0.05ex@}% @ref{\@@startsection/beforeskip,@var{beforeskip},@var{beforeskip}} @{-1em plus 0,2em@}% @ref{\@@startsection/afterskip,@var{afterskip},@var{afterskip}} @{\scshape@}% @ref{\@@startsection/style,@var{style},@var{style}} @} @end example Los ejemplos anteriores redefinieron los comandos de título de unidades seccionales existentes. Esto define uno nuevo, ilustrando el contador y las macros necesarias para mostrar ese contador. @c De @c https//groups.google.com/forum/#!searchin/comp.text.tex/startsection%7Csort:relevance/comp.text.tex/sB-nTS-oL08/ZZeKYdG0llMJ @example \setcounter@{secnumdepth@}@{6@}% muestra los contadores tan abajo \newcounter@{subsubparagraph@}[subparagraph]% contador para numeración \renewcommand@{\thesubsubparagraph@}% cómo mostrar @{\thesubparagraph.\@@arabic\c@@subsubparagraph@}% numeración \newcommand@{\subsubparagraph@}@{\@@startsection @{subsubparagraph@}% @{6@}% @{0em@}% @{\baselineskip@}% @{0.5\baselineskip@}% @{\normalfont\normalsize@}@}\newcommand*\l@@subsubparagraph@{\@@dottedtocline@{6@}@{10em@}@{5em@}@}% para toc \newcommand@{\subsubparagraphmark@}[1]@{@}% para encabezados de página @end example @node Referencias cruzadas @chapter Referencias cruzadas @cindex referencias cruzadas @cindex label A menudo queremos algo como @samp{Ve Teorema~31}. Pero escribir a mano el 31 es mala práctica. En su lugar, debes escribir un @dfn{label} como @code{\label@{eq:GreensThm@}} y luego @dfn{reference}, como con @code{Ve ecuación~\ref@{eq:GreensThm@}}. @LaTeX{} automáticamente calcula el número, lo pone en la salida y cambiará ese número más tarde si es necesario. @example Veremos esto con el Teorema~\ref@{th:GreensThm@}. % referencia directa:GreensThm@} ... \end@{theorem@} ... Ve Teorema~\ref@{th:GreensThm@} en la página~\pageref@{th:GreensThm@}. @end example @LaTeX{} rastrea información de referencias cruzadas en un archivo que tiene la extensión @file{.aux} y con el mismo nombre base que el archivo que contiene la @code{\label}. Entonces, si @code{\label} está en @file{calculus.tex} entonces la información está en @file{calculus.aux}. @LaTeX{} pone la información en ese archivo cada vez que se encuentra con un @code{\label}. @cindex referencia directa @cindex referencia, adelantada El comportamiento descrito en el párrafo anterior da como resultado una peculiaridad que sucede cuando tu documento tiene una @dfn{referencia hacia adelante}, una @code{\ref} que aparece antes del @code{\label} asociado. Si esta es la primera vez que estás compilando el documento, obtendrás la @samp{Advertencia LaTeX: : La(s) etiqueta(s) pueden haber cambiado. Vuelve a ejecutar para obtener las referencias cruzadas correctas} y en la salida, la referencia directa aparecerá como dos preguntas mark@tie{}@samp{??}, en negrita. Algo similar sucede si cambias algunas cosas para que cambien las referencias; recibes la misma advertencia y la salida contiene la información de referencia anterior. En ambos casos, resuelve esto compilando el documento por segunda vez. @PkgIndex{cleveref} El paquete @package{cleveref} mejora las características de referencias cruzadas de @LaTeX{}. Puedes arreglar eso si entras @code{\begin@{thm@}\label@{th:Nerode@}...\end@{thm@}} entonces @code{\cref@{thNerode@}} generará @samp{Teorema 3.21}, sin que tengas que ingresar el ``Teorema.'' @menu * \label:: Asigna un nombre simbólico a un fragmento de texto. * \pageref:: Referencia a un número de página. * \ref:: Referencia a una sección, figura o similar. * paquete xr:: Referencias de otro documento. @end menu @node \label @section @code{\label} @findex \label Sinopsis: @example \label@{@var{key}@} @end example Asigna un número de referencia a @var{key}. En texto ordinario @code{\label@{@var{key}@}} asigna a @var{key} el número de la unidad de seccionado actual. Dentro de un entorno con numeración, como un entorno @code{table} o @code{theorem}, @code{\label@{@var{clave}@}} asigna a @var{key} el número de ese entorno. Recuperar el número asignado con el comando @code{\ref@{@var{key}@}} (@pxref{\ref}). Un nombre de clave puede consistir en cualquier secuencia de letras, dígitos o caracteres de puntuación. Las letras mayúsculas y minúsculas se distinguen, como de costumbre. Una convención común es usar etiquetas que consisten en un prefijo y un sufijo separados por dos puntos o punto. Por lo que, @code{\label@{fig:Post@}} es una etiqueta para una figura con un retrato de Emil Post. Esto ayuda a evitar crear accidentalmente dos etiquetas con el mismo nombre, y hace que tu fuente sea más legible. Algunos prefijos de uso común: @table @code @item ch por capítulos @item sec @itemx subsec para comandos de seccionado de nivel inferior @item fig para figuras @item tab para tablas @item eq para ecuaciones @end table En el archivo auxiliar se conserva la información de referencia como el texto de un comando de la forma @code{\newlabel@{@var{label}@}@{@{@var{currentlabel}@}@{@var{pagenumber}@}@}}. Aquí @var{currentlabel} es el valor actual de la macro @code{\@@currentlabel} que generalmente se actualiza cada vez que llamas a @code{\refstepcounter@{@var{counter}@}}. A continuación, la tecla @code{sec:test} obtendrá el número de sección actual y la tecla @code{fig:test} obtendrá el número de la figura. (Por cierto, coloca etiquetas después de los subtítulos en las figuras y tablas). @example \section@{nombre sección@} \label@{sec:test@} Esta es la Sección~\ref@{sec:test@}. \begin@{figure@} ... \caption@{del título@} \label@{fig:test@} \end@{figure@} Ve la figura~\ref@{fig:test@}. @end example @node \pageref @section @code{\pageref} @findex \pageref @cindex referencias cruzadas con el número de página @cindex número de página, referencias cruzadas Sinopsis: @example \pageref@{@var{key}@} @end example Proporciona el número de página del lugar en el texto donde se encuentra el comando @code{\label}@{@var{key}@} correspondiente. Si no hay @code{\label@{@var{key}@}} entonces obtienes algo como @samp{Advertencia de LaTeX: Referencia `th:GrensThm' en la página 1 indefinida en la línea de entrada 11.} A continuación, el @code{\label@{eq:main@}} se usa tanto para el número de fórmula y para el número de página. (Ten en cuenta que las dos referencias son referencias directas por lo que este documento tendría que ser compilado dos veces para resolver aquellos). @example El resultado principal es formula~\ref@{eq:main@} en la página~\pageref@{eq:main@}. ... \begin@{equation@} \label@{eq:main@} \mathbf@{P@}=\mathbf@{NP@} \end@{equation@} @end example @node \ref @section @code{\ref} @findex \ref @cindex referencias cruzadas, simbólico @cindex número de sección, referencias cruzadas @cindex número de ecuación, referencias cruzadas @cindex número de figura, referencias cruzadas @cindex número de nota al pie, referencias cruzadas Sinopsis: @example \ref@{@var{key}@} @end example Produce el número de la unidad seccional, ecuación, pie de página, figura, @dots{}, del comando @code{\label} correspondiente (@pxref{\label}). No produce ningún texto, como la palabra `Sección' o `Figura', simplemente el número en sí. Si no hay @code{\label@{@var{key}@}} entonces obtienes algo como @samp{Advertencia de LaTeX: Referencia `th:GrensThm' en la página 1 indefinida en la línea de entrada 11.} En este ejemplo, @code{\ref@{popular@}} produce @samp{2}. Ten en cuenta que es una referencia directa ya que viene antes de @code{\label@{popular@}} por lo que este documento tendría que compilarse dos veces. @example El formato más utilizado es el número de artículo~\ref@{popular@}. \begin@{enumerate@} \item Plain \TeX \item \label@{popular@} \LaTeX \item Con\TeX t \end@{enumerate@} @end example @PkgIndex{cleveref} El paquete @package{cleveref} incluye texto como @samp{Theorem} en la referencia. Consulta la documentación en CTAN. @node paquete xr @section paquete @package{xr} @PkgIndex{xr} @PkgIndex{xr-hyper} @findex \externaldocument @cindex referencias cruzadas, entre documentos Sinopsis: @example \usepackage@{xr@} \externaldocument@{@var{document-basename}@} @end example @noindent o @example \usepackage@{xr@} \externaldocument[@var{reference-prefix}]@{@var{document-basename}@} @end example Hacer referencias cruzadas al documento externo @file{@var{document-basename}.tex}. Aquí tienes un ejemplo: Si @file{lectures.tex} tiene esto en el preámbulo @example \usepackage@{xr@} \externaldocument@{exercises@} \externaldocument[H-]@{hints@} \externaldocument@{answers@} @end example @noindent entonces puede usar etiquetas de referencias cruzadas de los otros tres documentos. Supón que @file{exercises.tex} tiene una lista enumerada que contiene este, @example \item \label@{exer:EulersThm@} ¿Qué pasa si cada vértice tiene un grado impar? @end example @noindent y @file{hints.tex} tiene una lista enumerada con este, @example \item \label@{exerEulersThm@} Distingue el caso de dos vértices. @end example @noindent y @file{answers.tex} tiene una lista enumerada con este, @example \item \label@{ansEulersThm@} No hay camino de Euler, excepto si hay exactamente dos vértices. @end example Después de compilar los ejercicios, sugerencias y documentos de respuestas, ingresar esto en el cuerpo de @file{lectures.tex} dará como resultado la obtención de los números de referencia de las conferencias utilizadas en los otros documentos. @example Ve el ejercicio~\ref@{exer:EulersThm@}, con Sugerencia~\ref@{H-exer:EulersThm@}. La solución es la respuesta~\ref@{ans:EulersThm@}. @end example Se necesita el prefijo @code{H-} para la referencia del archivo de sugerencias porque la etiqueta en el archivo de sugerencias es la misma que la etiqueta en el archivo de ejercicios. Sin ese prefijo, ambas referencias obtendrían el número del archivo posterior. Nota: si el documento usa el paquete @package{hyperref} entonces en lugar de @package{xr}, coloca @code{\usepackage@{xr-hyper@}} antes del @code{\usepackage@{hyperref@}}. Además, si alguno de los múltiples documentos usa @package{hyperref} entonces todos lo deben usar. @node Entornos @chapter Entornos @cindex entornos @findex \begin @findex \end @LaTeX{} proporciona muchos entornos para delimitar cierto comportamiento. Un entorno comienza con @code{\begin} y termina con @code{\end}, como este: @example \begin@{@var{nombre-entorno}@} ... \end@{@var{nombre-entorno}@} @end example El @var{nombre-entorno} al principio debe coincidir exactamente con el de el fin. Por ejemplo, la entrada @code{\begin@{table*@}...\end@{table@}} generará un error como: @samp{! Error de LaTeX: \begin@{table*@} en la línea de entrada 5 terminada en \end@{table@}.} @cindex grupo, y entornos Los entornos se ejecutan dentro de un grupo. @menu * abstract:: Produce un resumen. * array:: Arreglos matemáticos. * center:: Líneas centradas. * description:: Listas etiquetadas. * displaymath:: Fórmulas que aparecen en su propia línea. * document:: Adjunta todo el documento. * enumerate:: Listas numeradas. * eqnarray:: Secuencias de ecuaciones alineadas. * equation:: Ecuación mostrada. * figure:: Figuras flotantes. * filecontents:: Escribiendo varios archivos desde la fuente. * flushleft:: Líneas alineadas a la izquierda. * flushright:: Líneas alineadas a la derecha. * itemize:: Listas con viñetas. * letter:: Cartas. * list:: Entorno de lista genérica. * math:: Matemáticas en línea. * minipage:: Página en miniatura. * picture:: Imagen con texto, flechas, líneas y círculos. * comillas y citas:: Incluye una comilla. * tabbing:: Alinear el texto de forma arbitraria. * table:: Tablas flotantes. * tabular:: Alinear texto en columnas. * thebibliography:: Bibliografía o lista de referencias. * theorem:: Teoremas, lemas, etc. * titlepage:: Para portadas hechas a mano. * verbatim:: Simular entrada escrita. * verse:: Para poesía y otras cosas. @end menu @node abstract @section @code{abstract} @EnvIndex{abstract} @cindex resúmenes Sinopsis: @example \begin@{abstract@} ... \end@{abstract@} @end example Produce un resumen, posiblemente de varios párrafos. Este entorno solo se define en las clases de documentos @code{article} y @code{report} (@pxref{Clases de documentos}). Usar el ejemplo a continuación en la clase @code{article} produce la exhibición de un párrafo. La opción de clase de documento @code{titlepage} genera el resumen en una página separada (@pxref{Opciones de la clase documento}); este es el predeterminado solo en la clase @code{report}. @example \begin@{abstract@} Comparamos todos los relatos conocidos de la propuesta realizada por Porter Alexander a Robert E Lee en el Palacio de Justicia de Appomattox que el ejército continúa en una guerra de guerrillas, a que Lee se negó. \end@{abstract@} @end example @PkgIndex{abstract} El siguiente ejemplo produce un resumen de una columna en un documento de dos columnas (para una solución más flexible, usa el paquete @package{abstract}). @c Adoptado de http://www.tex.ac.uk/FAQ-onecolabs.html @example \documentclass[twocolumn]@{article@} ... \begin@{document@} \title@{Babe Ruth como progenitor cultural: un enfoque atávico@} \author@{Smith \\ Jones \\ Robinson\thanks@{Subvención de seguimiento ferroviario.@}@} \twocolumn[ \begin@{@@twocolumnfalse@} \maketitle \begin@{abstract@} Ruth no era solo el sultán del Swat, era todo el equipo swat. \end@{abstract@} \end@{@@twocolumnfalse@} ] @{ % inserta a mano una nota al pie de página al final de la página \renewcommand@{\thefootnote@}@{\fnsymbol@{footnote@}@} \footnotetext[1]@{Gracias por todo el pescado.@} @} @end example @node array @section @code{array} @EnvIndex{array} @cindex arreglos, matemáticos Sinopsis: @example \begin@{array@}@{@var{cols}@} @var{column 1 entry} &@var{column 2 entry} ... &@var{column n entry} \\ ... \end@{array@} @end example @noindent o: @example \begin@{array@}[@var{pos}]@{@var{cols}@} @var{column 1 entry} &@var{column 2 entry} ... &@var{column n entry} \\ ... \end@{array@} @end example Produce un arreglo de matemáticas. Este entorno solo se puede usar en modo math (@pxref{Modos}), y normalmente aparece dentro de un entorno math como @code{equation} (@pxref{equation}). Dentro de cada fila, las entradas de la columna están separadas por un ampersand, (@code{&}). Las filas terminan con barras invertidas dobles (@pxref{\\}). Este ejemplo muestra un arreglo de tres por tres. @example \begin@{equation*@} \chi(x) = \left| % cerca de la barra vertical \begin@{array@}@{ccc@} x-a &-b &-c \\ -d &x-e &-f \\ -g &-h &x-i \end@{array@} \right| \end@{equation*@} @end example El argumento requerido @var{cols} describe el número de columnas, su alineación y el formato de las regiones entre columnas. Por ejemplo, @code{\begin@{array@}@{rcl@}...\end@{array@}} da tres columnas: el primero alineado a la derecha, el segundo centrado y el tercero alineado a la izquierda. @ref{tabular} para la descripción completa de @var{cols} y de otras características comunes de los dos entornos, incluido el argumento opcional @var{pos}. Hay dos formas en que @code{array} difiere de @code{tabular}. La primera es que las entradas de @code{array} se escriben en modo math, en estilo texto (@pxref{Estilos math}) excepto si la definición @var{cols} especifica la columna con @code{p@{...@}}, lo que hace que la entrada se escriba en modo de texto. La segunda es que, en lugar del parámetro @code{tabular} @code{\tabcolsep}, el espacio entre columnas de @LaTeX{} en un @code{array} está gobernado por @findex \arraycolsep @code{\arraycolsep}, que da la mitad del ancho entre columnas. El predeterminado para esto es @samp{5pt} por lo que entre dos columnas viene 10@dmn{pt} de espacio. @PkgIndex{amsmath} Para obtener arreglos con llaves el estándar es usar el paquete @package{amsmath}. Viene con entornos @code{pmatrix} para un arreglo rodeado de paréntesis@tie{}@code{(...)}, @code{bmatrix} para un arreglo entre corchetes@tie{}@code{[...]}, @code{Bmatrix} para un arreglo rodeado de llaves@tie{}@code{@{...@}}, @code{vmatrix} para un arreglo rodeado de barras verticales@tie{}@code{|...|}, y @code{Vmatrix} para un arreglo rodeado por dobles barras verticales@tie{}@code{||...||}, junto con otras construcciones de arreglo. @PkgIndex{amsmath} El siguiente ejemplo usa el paquete @package{amsmath}. @example \usepackage@{amsmath@} % en el preámbulo \begin@{equation@} \begin@{vmatrix@}@{cc@} % arreglo con líneas verticales a &b \\ c &d \end@{vmatrix@}=ad-bc \end@{equation@} @end example @PkgIndex{array} @PkgIndex{dcolumn} Hay muchos paquetes relacionados con arreglos. El paquete @package{array} tiene muchas extensiones útiles, incluidos más tipos de columnas. El paquete @package{dcolumn} agrega un tipo de columna para centrarse en un punto decimal. Para ambos ve la documentación en CTAN. @node center @section @code{center} @EnvIndex{center} @cindex texto centrado, entorno para Sinopsis: @example \begin@{center@} @var{line1} \\ @var{line2} \\ ... \end@{center@} @end example Crea un nuevo párrafo que consta de una secuencia de líneas que está centrado dentro de los márgenes izquierdo y derecho. Usa doble barra invertida, @code{\\}, para obtener un salto de línea (@pxref{\\}). @findex \\ @r{(para @code{centro})} Si algún texto es demasiado largo para caber en una línea, entonces @LaTeX{} insertará un salto de línea que evita la separación de sílabas y evita estirar o encoger cualquier espacio entre palabras. Este entorno inserta espacio por encima y por debajo del cuerpo del texto. @ref{\centering} para evitar dicho espacio, por ejemplo dentro de un entorno @code{figure}. Este ejemplo produce tres líneas centradas. Hay espacio extra vertical entre las dos últimas líneas. @example \begin@{center@} Una Tesis Presentada en Cumplimiento Parcial \\ de los Requisitos de \\[0.5ex] la Escuela de Ingeniería Ambiental \end@{center@} @end example En este ejemplo, según el ancho de línea de la página, @LaTeX{} puede elegir un salto de línea para la parte anterior a la barra invertida doble. Si es así, será centrar cada una de las dos líneas y si no centrará la única línea. Entonces @LaTeX{} se romperá en la barra invertida doble y centrará el final. @example \begin@{center@} Mi padre consideraba que cualquiera que fuera a la capilla y no bebiera alcohol no debía ser tolerado.\\ Crecí en esa creencia. ---Richard Burton \end@{center@} @end example Una barra invertida doble después de la línea final es opcional. Si está presente no agrega ningún espacio vertical. En un documento de dos columnas, el texto está centrado en una columna, no en la página completa. @menu * \centering:: Forma de declaración del entorno @code{center}. @end menu @node \centering @subsection @code{\centering} @findex \centering @cindex texto centrado, declaración para Sinopsis: @example @{\centering ... @} @end example @noindent o @example \begin@{group@} \centering ... \end@{group@} @end example Centra el material en su entorno. Se utiliza con mayor frecuencia dentro de un entorno como @code{figure}, o en un @code{parbox}. La declaración @code{\centering} de este ejemplo hace que el gráfico sea centrado horizontalmente. @example \begin@{figure@} \centering \includegraphics[width=0.6\textwidth]@{ctan_lion.png@} \caption@{CTAN Lion@} \label@{fig:CTANLion@} \end@{figure@} @end example @noindent El entorno de este @code{\centering} termina con @code{\end@{figure@}}. A diferencia del entorno @code{center}, el comando @code{\centering} no agrega espacio vertical por encima y por debajo del texto. Esa es su ventaja en el ejemplo anterior; no hay un exceso de espacio. Tampoco comienza un nuevo párrafo; simplemente cambia cómo @LaTeX{} da formato a las unidades de párrafo. Si @code{ww @{\centering xx \\ yy@} zz} está rodeado de líneas en blanco, entonces @LaTeX{} creará un párrafo cuya primera línea @samp{ww xx} está centrada y cuya segunda línea, no centrada, contiene @samp{yy zz}. Usualmente lo que se desea es para el alcance de la declaración para contener una línea en blanco o el comando @code{\end} de un entorno como @code{figure} o @code{table} que termina la unidad de párrafo. Por lo tanto, si @code{@{\centering xx \\ yy\par@} zz} está rodeado de líneas en blanco, entonces crea un nuevo párrafo con dos líneas centradas @samp{xx} y @samp{yy}, seguidas de un nuevo párrafo con @samp{zz} que tiene el formato habitual. @node description @section @code{Description} @EnvIndex{Description} @cindex listas etiquetadas, crear @cindex listas de descripción, crear Sinopsis: @example \begin@{description@} \item[@var{etiqueta del primer elemento}] @var{texto del primer elemento} \item[@var{etiqueta del segundo elemento}] @var{texto del segundo elemento} ... \end@{description@} @end example Entorno para hacer una lista de elementos etiquetados. La @var{label} de cada elemento está escrita en negrita y alineada a la izquierda, de modo que las etiquetas largas continúan en la primera línea del texto del elemento. Debe haber al menos un elemento; al no tener alguno causa el error @LaTeX{} @samp{Algo anda mal, tal vez un \item perdido}. Este ejemplo muestra el entorno utilizado para una secuencia de definiciones. @example \begin@{description@} \item[lama] un sacerdote. \item[llama] a una bestia. \end@{description@} @end example @noindent Las etiquetas @samp{lama} y @samp{llama} se muestran en negrita, con el borde izquierdo en el margen izquierdo. @findex \item Inicia la lista de elementos con el comando @code{\item} (@pxref{\item}). Utiliza las etiquetas opcionales, como en @code{\item[Main point]}, porque hay ningún valor predeterminado sensato. Después de @code{\item} hay texto opcional, que puede contener varios párrafos. @cindex máquina de escribir en negrita, evitando @cindex etiquetas de máquina de escribir en listas Dado que las etiquetas están en negrita, si el texto de la etiqueta requiere un cambio de letra dado en el estilo del argumento (@ref{Estilos de tipos de letra}) entonces vendrá en negrita. Por ejemplo, si el texto de la etiqueta requiere una máquina de escribir con @code{\item[\texttt@{label text@}]} entonces aparecerá en negrita máquina de escribir, si está disponible. La forma más sencilla de evitar esto, en este ejemplo para obtener una máquina de escribir sin negrita, es usar un estilo declarativo: @code{\item[@{\tt label text@}]}. Del mismo modo, obtiene la letra romana estándar con @code{\item[@{\rm texto etiqueta@}]}. Para otros entornos principales de listas etiquetadas @LaTeX{}, @ref{itemize} y @ref{enumerate}. A diferencia de esos entornos, anidar entornos @code{description} no cambia la etiqueta predeterminada; es negrita y alineada a la izquierda en todos los niveles. Para obtener información sobre los parámetros de diseño de la lista, incluido el valor predeterminado y para obtener información sobre cómo personalizar el diseño de la lista, @ref{list}. El paquete @package{enumitem} es útil para personalizar listas. Este ejemplo cambia las etiquetas de descripción a versalitas. @example \renewcommand@{\descriptionlabel@}[1]@{% @{\hspace@{\labelsep@}\textsc@{#1@}@}@} @end example @node displaymath @section @code{displaymath} @c https://tex.stackexchange.com/questions/40492/what-are-the-differences-between-align-equation-and-displaymath @EnvIndex{displaymath} Sinopsis: @example \begin@{displaymath@} @var{texto matemático} \end@{displaymath@} @end example Entorno para componer el @var{texto matemático} en su propia línea, en estilo de visualización y centrado. Para hacer que el texto quede alineado a la izquierda, usa la opción global @code{fleqn}; @ref{Opciones de la clase documento}. En el entorno @code{displaymath} no se agrega ningún número de ecuación al texto de matemáticas. Una forma de obtener un número de ecuación es usar el entorno @code{equation} (@pxref{equation}). @LaTeX{} no dividirá el @var{texto matemático} entre líneas. @PkgIndex{amsmath} Ten en cuenta que el paquete @package{amsmath} tiene significativamente más extensas facilidades de ecuación mostradas. Por ejemplo, hay una serie de formas en ese paquete para dividir el texto matemático en líneas. @findex \[...\] @r{mostrar matemáticas} La construcción @code{\[@var{math}\]} es un sinónimo del entorno @code{\begin@{displaymath@} @var{math} \end@{displaymath@}} pero este último es más fácil de trabajar en la fuente; por ejemplo, la búsqueda de un corchete puede dar falsos positivos, pero la palabra @code{displaymath} probablemente será único. @findex $$...$$ @r{normal @TeX{} matemáticas de visualización} (Aparte: la construcción @code{$$@var{math}$$} de Plain@tie{}@TeX{} a veces se usa erróneamente como sinónimo de @code{displaymath}. Esté no es un sinónimo, y no se admite oficialmente en @LaTeX{} en absoluto; @code{$$} no admite la opción @code{fleqn} (@pxref{Opciones de la clase documento}), tiene un espaciado vertical diferente y no realiza comprobaciones de consistencia). La salida de este ejemplo está centrada y sola en su línea. @example \begin@{displaymath@} \int_1^2 x^2\,dx=7/3 \end@{displaymath@} @end example @noindent Además, el signo integral es más grande que la versión en línea que produce @code{\( \int_1^2 x^2\,dx=7/3 \)}. @node document @section @code{document} @EnvIndex{document} El entorno @code{document} incluye todo el cuerpo de un documento. Se requiere en todos los documentos @LaTeX{}. @xref{Comenzar y terminar}. @menu * \AtBeginDocument:: Gancho para comandos al comienzo del documento. * \AtEndDocument:: Gancho para comandos al final del documento. @end menu @node \AtBeginDocument @subsection @code{\AtBeginDocument} @findex \AtBeginDocument @cindex comienzo del gancho del documento Sinopsis: @example \AtBeginDocument@{@var{code}@} @end example Guarda @var{code} y ejecútelo cuando @code{\begin@{document@}} sea ejecutado, al final del preámbulo. El código se ejecuta después de las tablas de selección de letras se han configurado, por lo que la letra normal para el documento es la letra actual. Sin embargo, el código se ejecuta como parte del preámbulo para que no puedas hacer ninguna composición tipográfica con él. Puedes emitir este comando más de una vez; las líneas de código sucesivas se ejecutarán en el orden que les diste. @node \AtEndDocument @subsection @code{\AtEndDocument} @findex \AtEndDocument @cindex gancho final del documento Sinopsis: @example \AtEndDocument@{@var{code}@} @end example Guarda @var{code} y ejecútalo cerca del final del documento. Específicamente, se ejecuta cuando se ejecuta @code{\end@{document@}}, antes de que termine la página final y antes de que quede flotando se procesan los entornos. Si deseas que parte del código se ejecute después de estos dos procesos, incluye un @code{\clearpage} en el punto apropiado en @var{code}. Puedes emitir este comando más de una vez; las líneas de código sucesivas se ejecutarán en el orden que les diste. @node enumerate @section @code{enumerate} @EnvIndex{enumerate} @cindex listas de elementos, numerados Sinopsis: @example \begin@{enumerate@} \item[@var{etiqueta opcional del primer elemento}] @var{texto del primer elemento} \item[@var{etiqueta opcional del segundo elemento}] @var{texto del segundo elemento} ... \end@{enumerate@} @end example Entorno para producir una lista numerada de elementos. El formato de la numeración de las etiquetas depende del nivel de anidamiento de este entorno; ve abajo. La numeración de nivel superior predeterminada es @samp{1.}, @samp{2.}, etc. Cada entorno de lista @code{enumerate} debe tener al menos un elemento; no tiene ninguna causa el error @LaTeX{} @samp{Algo anda mal, tal vez un \item perdido}. Este ejemplo muestra a los dos primeros finalistas en el maratón olímpico de 1908. Como lista de nivel superior, las etiquetas aparecerían como @samp{1.} y @samp{2.}. @example \begin@{enumerate@} \item Johnny Hayes (USA) \item Charles Hefferon (RSA) \end@{enumerate@} @end example @findex \item Inicia la lista de elementos con el comando @code{\item} (@pxref{\item}). Si le das a @code{\item} un argumento opcional siguiéndolo con corchetes, como en @code{\item[Etiqueta intersticial]}, entonces el siguiente elemento continuará la secuencia interrumpida (@pxref{\item}). Es decir, obtendrás etiquetas como @samp{1.}, entonces @samp{Etiqueta intersticial}, luego @samp{2.}. Después de @code{\item} hay texto opcional, que puede contener varios párrafos. Las enumeraciones se pueden anidar dentro de otros entornos @code{enumerate}, o dentro de cualquier entorno de creación de párrafos como @code{itemize} (@pxref{itemize}), hasta cuatro niveles de profundidad. Esto le proporciona el valor @LaTeX{} predeterminado para el formato en cada nivel de anidamiento, donde 1 es el nivel superior, el nivel más exterior. @enumerate @item número arábigo seguido de un punto: @samp{1.}, @samp{2.},@tie{}@dots{} @item letra minúscula entre paréntesis: @samp{(a)}, @samp{(b)}@tie{}@dots{} @item número romano en minúsculas seguido de un punto: @samp{i.}, @samp{ii.},@tie{}@dots{} @item letra mayúscula seguida de un punto: @samp{A.}, @samp{B.},@tie{}@dots{} @end enumerate @findex \enumi @findex \enumii @findex \enumiii @findex \enumiv @anchor{enumerate enumi} @anchor{enumerate enumii} @anchor{enumerate enumiii} @anchor{enumerate enumiv} El entorno @code{enumerate} utiliza los contadores @code{\enumi} hasta @code{\enumiv} (@pxref{Contadores}). Para otros entornos principales de listas etiquetadas @LaTeX{}, @ref{description} e @ref{itemize}. Para obtener información sobre el diseño de parámetros de lista, incluidos los valores predeterminados, y para obtener información sobre personalizar el diseño de la lista, @ref{list}. El paquete @package{enumitem} es útil para personalizar listas. @findex \labelenumi @findex \labelenumii @findex \labelenumiii @findex \labelenumiv @anchor{enumerate labelenumi} @anchor{enumerate labelenumii} @anchor{enumerate labelenumiii} @anchor{enumerate labelenumiv} Para cambiar el formato de la etiqueta usa @code{\renewcommand} (@pxref{\newcommand y \renewcommand}) en los comandos @code{\labelenumi} a través de @code{\labelenumiv}. Por ejemplo, esta lista de primer nivel será etiquetada con letras mayúsculas, en negrita y sin punto final. @findex \Alph @r{example} @example \renewcommand@{\labelenumi@}@{\textbf@{\Alph@{enumi@}@}@} \begin@{enumerate@} \item Se muestra en negrita A \item Se muestra en negrita B \end@{enumerate@} @end example Para obtener una lista de comandos de contraetiquetado, consulta @ref{\alph \Alph \arabic \roman \Roman \fnsymbol}. @node eqnarray @section @code{eqnarray} @EnvIndex{eqnarray} @cindex ecuaciones, alineando @cindex alineando ecuaciones @cindex alinea @r{entorno, de @package{amsmath}} @cindex amsmath @r{package, reemplazar @code{eqnarray}} @cindex Madsen, Lars El entorno @code{eqnarray} está obsoleto. Tiene infelicidades, incluyendo el espaciado que es inconsistente con otros elementos matemáticos. (Ve ``¡Evita eqnarray!''@: por Lars Madsen @url{https://tug.org/TUGboat/tb33-1/tb103madsen.pdf}). Nuevos documentos deben incluir el paquete @package{amsmath} y usar el que muestra entornos matemáticos proporcionados allí, como el entorno @code{align}. Incluimos una descripción solo para completar y para trabajar con documentos antiguos. Sinopsis: @example \begin@{eqnarray@} @var{primera fórmula a la izquierda}, @var{primera fórmula en el medio} y @var{primera fórmula a la derecha} \\ ... \end@{eqnarray@} @end example @noindent o @example \begin@{eqnarray*@} @var{primera fórmula a la izquierda}, @var{primera fórmula en el medio} y @var{primera fórmula a la derecha} \\ ... \end@{eqnarray*@} @end example @findex \\ @r{(para @code{eqnarray})} Muestra una secuencia de ecuaciones o desigualdades. Los lados izquierdo y derecho se escriben en el modo display, mientras que el medio se escribe en el modo texto. Es similar a un entorno @code{array} de tres columnas, con elementos dentro de una fila separada por un ampersand@tie{}(@code{&}), y con filas separadas por dobles barras inversas@tie{}@code{\\}). @findex \\* @r{(para @code{eqnarray})} La forma de estrella del salto de línea (@code{\\*}) también se puede usar para separar ecuaciones, y no permitirá un salto de página allí (@pxref{\\}). @findex \nonumber @cindex números de ecuación, omitir La forma sin estrella @code{eqnarray} coloca un número de ecuación en cada línea (usando el contador @code{equation}), a menos que esa línea contenga un comando @code{\nonumber}. La forma destacada @code{eqnarray*} omite numeración de ecuaciones, mientras que por lo demás son iguales. @findex \lefteqn El comando @code{\lefteqn} se usa para dividir fórmulas largas en líneas. Escribe tu argumento en estilo de visualización alineado a la izquierda en un cuadro de ancho cero. Este ejemplo muestra tres líneas. Las dos primeras líneas forman una desigualdad, mientras que la tercera línea no tiene entrada por el lado izquierdo. @example \begin@{eqnarray*@} \lefteqn@{x_1+x_2+\cdots+x_n@} \\ &\leq &y_1+y_2+\cdots+y_n \\ &= &z+y_3+\cdots+y_n \end@{eqnarray*@} @end example @node equation @section @code{equation} @EnvIndex{equation} @cindex ecuaciones, entorno para @cindex fórmulas, entorno para Sinopsis: @example \begin@{equation@} @var{texto matemático} \end@{equation@} @end example Lo mismo que un entorno @code{displaymath} (@pxref{displaymath}) excepto que @LaTeX{} pone un número de ecuación al ras del margen derecho. El número de la ecuación se genera usando el contador @code{equation}. No debe haber líneas en blanco entre @code{\begin@{equation@}} y @code{\begin@{equation@}}, o @LaTeX{} te dirá que falta el signo de dólar. @PkgIndex{amsmath} El paquete @package{amsmath} tiene una extensas facilidades para mostrar ecuaciones. Los nuevos documentos deben incluir este paquete. @node figure @section @code{figure} @EnvIndex{figure} @cindex insertar figuras @cindex figuras, insertando Sinopsis: @example \begin@{figure@}[@var{placement}] @var{cuerpo de figura} \caption[@var{loftitle}]@{@var{title}@} % opcional \label@{@var{label@}} % opcional \end@{figure@} @end example @noindent o: @example \begin@{figure*@}[@var{placement}] @var{cuerpo de figura} \caption[@var{loftitle}]@{@var{title}@} % opcional \label@{@var{label@}} % opcional \end@{figure*@} @end example Las figuras son para material que no forma parte del texto normal. Un ejemplo es material que no se puede dividir en dos páginas, tal como gráficos. Debido a esto, @LaTeX{} no escribe cifras en secuencia con texto normal, sino que los ``hace flotar'' a un lugar conveniente, como la parte superior de una página siguiente (@pxref{Flotantes}). El @var{cuerpo de figura} puede consistir en gráficos importados (@pxref{Gráficos}), o texto, comandos de @LaTeX{}, etc. Está escrito en un @code{parbox} de ancho @code{\textwidth}. Los posibles valores de @var{placement} son @code{h} para @samp{aquí}, @code{t} para @samp{top}, @code{b} para @samp{bottom} y @code{p} para @samp{en una página de flotantes separada}. Para el efecto de estas opciones en el algoritmo de colocación de flotantes, @ref{Flotantes}. La forma destacada @code{figure*} se usa cuando un documento está en modo de doble columna (@pxref{\twocolumn}). Produce una figura que abarca ambas columnas, en la parte superior de la página. Para agregar la posibilidad de colocar en la parte inferior de una página, ve la discusión de @var{placement} @code{b} en @ref{Flotantes}. @findex \caption La etiqueta es opcional; se usa para referencias cruzadas (@pxref{Referencias cruzadas}). El comando opcional @code{\caption} especifica el texto del título para la figura (@pxref{\caption}). De manera predeterminada está numerado. Si @var{loftitle} está presente, se usa en la lista de figuras en lugar de @var{title} (@pxref{Tabla de contenido etc.}). Este ejemplo hace una figura a partir de un gráfico. @LaTeX{} colocará ese gráfico y su título en la parte superior de una página o, si se empuja al final del documento, en una página de flotantes. @example \usepackage@{graphicx@} % en el preámbulo ... \begin@{figure@}[t] \centering \includegraphics[width=0.5\textwidth]@{CTANlion.png@} \caption@{El CTAN lion, por Duane Bibby@} \end@{figure@} @end example @node filecontents @section @code{filecontents} @EnvIndex{filecontents} @EnvIndex{filecontents*} @cindex archivos externos, escritura @cindex escribiendo varios archivos desde la fuente. Sinopsis: @example \begin@{filecontents@}[@var{option}]@{@var{filename}@} @var{text} \end@{filecontents@} @end example @noindent o @example \begin@{filecontents*@}[@var{option}]@{@var{filename}@} @var{text} \end@{filecontents*@} @end example Crea un archivo llamado @var{filename} en el directorio actual (o el directorio de salida, si se especifica; @pxref{directorio de salida}) y escribir @var{text} en él. De forma predeterminada, un archivo existente no se sobrescribe. La versión sin estrella del entorno @code{filecontents} prefija el contenido del archivo creado con un encabezado de comentarios @TeX{}; ve el siguiente ejemplo. La versión protagonista @code{filecontents*} no incluye el encabezado. Las opciones posibles son:: @table @code @item force @itemx overwrite @cindex @code{force} opción para @code{filecontents} @cindex @code{force} opción para @code{filecontents} La opción @code{overwrite} para @code{filecontents} Sobrescribe un archivo existente. @item noheader @cindex Opción @code{noheader} para @code{filecontents} Omite el encabezado. Equivale a usar @code{filecontents*}. @item nosearch @cindex Opción @code{nosearch} para @code{filecontents} Solo verifica el directorio actual (y el directorio de salida, si se ha especificado) para un archivo existente, no la ruta de búsqueda completa. @end table Estas opciones se agregaron en una versión de @LaTeX{} de 2019. @cindex fuentes autónomas @cindex archivos fuente, que los convierte en autónomos Este entorno se puede utilizar en cualquier parte del preámbulo, aunque a menudo aparece antes del comando @code{\documentclass}. Esta comúnmente se usa para crear un @code{.bib} u otro archivo de datos similar desde el origen del documento principal, para que el archivo fuente sea autónomo. Del mismo modo, se puede usar para crear un estilo personalizado o un archivo de clase, nuevamente haciendo que la fuente sea autónoma. Por ejemplo, este documento:: @example \documentclass@{article@} \begin@{filecontents@}@{JH.sty@} \newcommand@{\myname@}@{Jim Hef@{@}feron@} \end@{filecontents@} \usepackage@{JH@} \begin@{document@} Artículo por \myname. \end@{document@} @end example @noindent produce este archivo @file{JH.sty}: @example %% Archivo LaTeX2e `JH.sty' %% generado por el entorno `filecontents' %% de la fuente `test' el 12/10/2015. %% \newcommand@{\myname@}@{Jim Hef@{@}feron@} @end example @node flushleft @section @code{flushleft} @EnvIndex{flushleft} @cindex texto justificado a la izquierda, entorno para @cindex texto justificado a la derecha irregular, entorno para Sinopsis: @example \begin@{flushleft@} @var{line1} \\ @var{line2} \\ ... \end@{flushleft@} @end example @findex \\ @r{(para @code{flushleft})} Un entorno que crea un párrafo cuyas líneas están al ras del margen izquierdo e irregular al lado derecho. Si tienes filas demasiado largas entonces @LaTeX{} las dividirá de una manera que evite la separación silábica y alargar o achicar los espacios entre palabras. Para forzar una nueva línea usa una doble barra invertida, @code{\\}. Para la forma de declaración@tie{}@ref{\raggedright}. Esto crea un cuadro de texto que tiene como máximo 3 pulgadas de ancho, con el texto alineado a la izquierda e irregular a la derecha. @example \noindent\begin@{minipage@}@{3in@} \begin@{flushleft@} Una oración larga que será dividida por \LaTeX@{@} en un lugar conveniente. \\ Y, una nueva línea forzada por la doble barra invertida. \end@{flushleft@} \end@{minipage@} @end example @menu * \raggedright:: Forma de declaración del entorno @code{flushleft}. @end menu @node \raggedright @subsection @code{\raggedright} @findex \raggedright @cindex texto justificado a la derecha irregular @cindex texto justificado a la izquierda @cindex justificación, irregular a la derecha Sinopsis: @example @{\raggedright ... @} @end example @noindent o @example \begin@{@var{environment}@} \raggedright ... \end@{@var{environment}@} @end example Una declaración que hace que las líneas queden al ras del margen izquierdo e irregular a la derecha. Se puede usar dentro de un @var{environment} como @code{quote} o en un @code{parbox}. Para la forma del entorno@tie{}@ref{flushleft}. A diferencia del entorno @code{flushleft}, @code{\raggedright} el comando no inicia un nuevo párrafo; solo cambia en cómo @LaTeX{} da formato a las unidades de párrafo. Para afectar el formato de una unidad de párrafo, el alcance de la declaración debe contener la línea en blanco o el comando @code{\end} que finaliza la unidad de párrafo. Aquí @code{\raggedright} en cada segunda columna evita que @LaTeX{} haga una composición tipográfica incómoda para encajar el texto en la columna reducida. Ten en cuenta que @code{\raggedright} está dentro de llaves @code{@{...@}} para delimitar su efecto. @example \begin@{tabular@}@{rp@{2in@}@} Equipo alfa &@{\raggedright Este equipo hace todo el trabajo real.@} \\ Equipo beta &@{\raggedright Este equipo se asegura de que el enfriador de agua nunca esté vacío.@} \\ \end@{tabular@} @end example @node flushright @section @code{flushright} @EnvIndex{flushright} @cindex texto izquierdo irregular, entorno para @cindex justificar texto a la derecha, entorno para @example \begin@{flushright@} @var{line1} \\ @var{line2} \\ ... \end@{flushright@} @end example @findex \\ @r{(para @code{flushright})} Un entorno que crea un párrafo cuyas líneas están al ras del margen derecho e irregular al izquierdo. Si tienes filas demasiado largas para ajustarse a los márgenes, entonces @LaTeX{} los dividirá de una manera que evita la división con guiones y la ampliación o reducción de los espacios entre palabras. Para forzar una nueva línea usa una barra invertida doble, @code{\\}. Para la forma de declaración@tie{}@ref{\raggedleft}. Para ver un ejemplo relacionado con este entorno, @ref{flushleft}, donde uno solo tiene mutatis mutandis para reemplazar @code{flushleft} por @code{flushright}. @menu * \raggedleft:: Forma de declaración del entorno @code{flushright}. @end menu @node \raggedleft @subsection @code{\raggedleft} @findex \raggedleft @cindex texto alineado a la izquierda irregular @cindex justificación, desigual izquierda @cindex justificación de texto a la derecha Sinopsis: @example @{\raggedleft ... @} @end example @noindent o @example \begin@{@var{environment}@} \raggedleft ... \end@{@var{environment}@} @end example Una declaración que hace que las líneas queden al ras del margen derecho e izquierdo irregular. Se puede usar dentro de un @var{environment} como @code{quote} o en un @code{parbox}. Para la forma del entorno@tie{}@ref{flushright}. A diferencia del entorno @code{flushright}, @code{\raggedleft} el comando no inicia un nuevo párrafo; solo cambia cómo @LaTeX{} da formato a las unidades de párrafo. Para afectar el formato de una unidad de párrafo, el alcance de la declaración debe contener la línea en blanco o el comando @code{\end} que finaliza la unidad de párrafo. Para ver un ejemplo relacionado con este entorno, @tie{}@ref{\raggedright}, donde uno solo tiene mutatis mutandis para reemplazar @code{\raggedright} por @code{\raggedleft}. @node itemize @section @code{itemize} @EnvIndex{itemize} @findex \item @cindex listas de elementos @cindex listas no ordenadas @cindex listas con viñetas @cindex listas de viñetas Sinopsis: @example \begin@{itemize@} \item[@var{etiqueta opcional del primer elemento}] @var{texto del primer elemento} \item[@var{etiqueta opcional del segundo elemento}] @var{texto del segundo elemento} ... \end@{itemize@} @end example Produce una @dfn{lista desordenada}, a veces denominada lista con viñetas. Ahí debe haber al menos un @code{\item} dentro del entorno; no tiene ninguna causa el error @LaTeX{} @samp{Algo anda mal, tal vez un \item faltante}. Esto da una lista de dos elementos. @example \begin@{itemize@} \item Dibujo a lápiz y acuarela por Cassandra \item Retrato de arroz \end@{itemize@} @end example @noindent Con la configuración regional predeterminada --- sin cargar, por ejemplo, @: el paquete @package{babel} con otro idioma que no sea inglés---como una lista de nivel superior cada etiqueta saldría como una viñeta, @bullet{}. El formato del etiquetado depende del nivel de anidamiento; ve abajo. @findex \item Inicia la lista de elementos con el comando @code{\item} (@pxref{\item}). Si le das a @code{\item} un argumento opcional entre corchetes siguiéndolo, como en @code{\item[@var{Etiqueta optional}]}, entonces de manera predeterminada @var{Etiqueta opcional} aparecerá en negrita y alineada a la derecha, por lo que se podría extender hasta el margen izquierdo. Para las etiquetas que están niveladas a la izquierda, consulta el entorno @ref{description}. Después del @code{\item} está el texto del elemento, que puede estar vacío o contener varios párrafos. Las listas desordenadas se pueden anidar una dentro de otra, hasta cuatro niveles de profundidad. También se pueden anidar en otros entornos de creación de párrafos, como @code{enumerate} (@pxref{enumerate}). @findex \labelitemi @findex \labelitemii @findex \labelitemiii @findex \labelitemiv @anchor{itemize labelitemi} @anchor{itemize labelitemii} @anchor{itemize labelitemiii} @anchor{itemize labelitemiv} El entorno @code{itemize} usa los comandos @code{\labelitemi} a través de @code{\labelitemiv} para generar la etiqueta predeterminada (ten en cuenta la convención de números romanos en minúsculas al final de los nombres de los comandos que significan el nivel de anidamiento). Estas son las marcas predeterminadas en cada nivel. @enumerate @item @bullet{} (bullet, de @code{\textbullet}) @item @b{-@w{-}} (bold en-dash, de @code{\normalfont\bfseries\textendash}) @item * (asterisco, de @code{\textasteriskcentered}) @iftex @item @math{\cdot} (punto centrado verticalmente, de @code{\textperiodcentered}) @end iftex @ifnottex @item . (verticalmente centrado dot, representado aquí como un punto, de @code{\textperiodcentered}) @end ifnottex @end enumerate Cambia las etiquetas con @code{\renewcommand}. Por ejemplo, esto hace que el primer nivel use diamantes. @example \renewcommand@{\labelitemi@}@{$\diamond$@} @end example @findex \leftmargin @findex \leftmargini @findex \leftmarginii @findex \leftmarginiii @findex \leftmarginiv @findex \leftmarginv @findex \leftmarginvi @anchor{itemize leftmargin} @anchor{itemize leftmargini} @anchor{itemize leftmarginii} @anchor{itemize leftmarginiii} @anchor{itemize leftmarginiv} @anchor{itemize leftmarginv} @anchor{itemize leftmarginvi} La distancia entre el margen izquierdo del entorno envolvente y el margen izquierdo de la lista @code{itemize} está determinado por el parámetros @code{\leftmargini} a @code{\leftmarginvi}. (Esto también usa la convención de usar números romanos en minúsculas al final del nombre del comando para indicar el nivel de anidamiento). Los valores predeterminados son: @code{2.5em} en el nivel 1 (@code{2em} en modo de dos columnas), @code{2.2em} en el nivel 2, @code{1.87em} en el nivel 3 y @code{1.7em} en el nivel 4, con valores más pequeños para niveles anidados más profundos. @PkgIndex{enumitem} Para otros entornos principales de listas etiquetadas @LaTeX{}, @ref{description} y @ref{enumerate}. @code{itemize}, los entornos @code{enumerate} y @code{description} usan la misma lista de parámetros de diseño. Para obtener una descripción, incluidos los valores predeterminados, y para obtener información sobre cómo personalizar el diseño de la lista, @ref{list}. El paquete @package{enumitem} es útil para personalizar listas. Este ejemplo reduce en gran medida el espacio del margen para los elementos detallados más externos de listas. @example \setlength@{\leftmargini@}@{1.25em@} % predeterminado 2.5em @end example @findex \parskip @r{ejemplo} Especialmente para listas con artículos cortos, puede ser deseable eludir espacio entre elementos. Aquí hay un ejemplo que define un entorno @code{itemize*} sin espacios adicionales entre elementos o entre párrafos dentro de un solo elemento (@code{\parskip} no es específico de la lista, @pxref{\parindent y \parskip}): @example \newenvironment@{itemize*@}% @{\begin@{itemize@}% \setlength@{\itemsep@}@{0pt@}% \setlength@{\parsep@}@{0pt@}@}% \setlength@{\parskip@}@{0pt@}@}% @{\end@{itemize@}@} @end example @node letter @section entorno @code{letter}: escribir cartas @EnvIndex{letter} Este entorno se utiliza para crear cartas. @xref{Cartas}. @node list @section @code{list} @EnvIndex{list} @cindex listas de elementos, genérica Sinopsis: @example \begin@{list@}@{@var{labeling}@}@{@var{spacing}@} \item[@var{etiqueta opcional del primer elemento}] @var{texto del primer elemento} \item[@var{etiqueta opcional del segundo elemento}] @var{texto del segundo elemento} ... \end@{list@} @end example Un entorno para la construcción de listas. Ten en cuenta que este entorno no suele aparecer en el cuerpo del documento. La mayoría de las listas creadas por los autores de @LaTeX{} son las que vienen estándar: los entornos @code{description}, @code{enumerate} e @code{itemize} (@pxref{description}, @ref{enumerate} y @ref{itemize}). En cambio, el entorno @code{list} se usa con mayor frecuencia en macros. Por ejemplo, muchos entornos @LaTeX{} estándar que no funcionan inmediatamente parecen ser listas, de hecho están construidos usando @code{list}, incluyendo @code{quotation}, @code{quote} y @code{center} (@pxref{comillas y citas}, @pxref{center}). Este usa el entorno @code{list} para definir un nuevo entorno personalizado. @example \newcounter@{namedlistcounter@} % número de elementos \newenvironment@{named@} @{\begin@{list@} @{Item~\Roman@{namedlistcounter@}.@} % etiquetado @{\usecounter@{namedlistcounter@} % establece el contador \setlength@{\leftmargin@}@{3.5em@}@} % establece el espaciado @} @{\end@{list@}@} \begin@{named@} \item Se muestra como ``Item~I.'' \item[Etiqueta especial.] Se muestra como ``Etiqueta especial.'' \item Se muestra como ``Item~II.'' \end@{named@} @end example El primer argumento obligatorio @var{labeling} especifica el valor predeterminado de etiquetado de los elementos de la lista. Puede contener comandos de texto y @LaTeX{}, como arriba donde contiene @samp{Item} y @samp{\Roman@{@dots{}@}}. @LaTeX{} forma la etiqueta poniendo el argumento @var{labeling} en un cuadro de ancho @code{\labelwidth}. Si la etiqueta es más ancha que eso, el material adicional se extiende a la derecha. Al hacer una instancia de una @code{list} puedes redefinir el etiquetado predeterminado dando a @code{\item} un argumento opcional al incluir corchetes y el texto, como en la @code{\item[Etiqueta especial.]}; @pxref{\item}. El segundo argumento obligatorio @var{spacing} tiene una lista de comandos. Esta lista puede estar vacía. Un comando que puede entrar aquí es @code{\usecounter@{@var{countername}@}} (@pxref{\usecounter}). Utiliza este diciéndole a @LaTeX{} que numere los elementos usando el contador dado. El contador se restablecerá a cero cada vez que @LaTeX{} ingrese al entorno, y el contador se incrementa en uno cada vez que @LaTeX{} encuentra un @code{\item} que no tiene un argumento opcional. @findex \makelabel @anchor{list makelabel} Otro comando que puede ir en @var{spacing} es @code{\makelabel}, que construye el cuadro de etiquetas. De manera predeterminada pone el contenido volcado a la derecha. Su único argumento es la etiqueta, que composiciones tipográficas en modo LR (@pxref{Modos}). Un ejemplo de cambiar su definición es la del ejemplo del @code{named} anterior, antes de la definición del entorno añade @code{\newcommand@{\namedmakelabel@}[1]@{\textsc@{#1@}@}}, y entre el comando @code{\setlength} y el paréntesis que cierra el argumento @var{spacing} también agrega @code{\let\makelabel\namedmakelabel}. Luego, las etiquetas se compondrán en versalitas. Del mismo modo, cambiando la segunda línea del código a @code{\let\makelabel\fbox} pone las etiquetas dentro de una caja enmarcada. A continuación se muestra otro ejemplo del comando @code{\makelabel}, en la definición del entorno @code{redlabel}. También a menudo en @var{spacing} hay comandos para redefinir el espacio para la lista. A continuación se muestran los parámetros de espaciado con sus valores predeterminados. (Los valores predeterminados para entornos derivados como @code{itemize} pueden ser diferentes a los valores que se muestran aquí). Consulta también la siguiente figura de lista. Cada uno tiene una longitud (@pxref{Longitudes}). Los espacios verticales normalmente son longitudes elásticas, con componentes @code{plus} y @code{minus}, para darle flexibilidad a @TeX{} en la configuración de la página. Cambiar cada uno con un comando como @code{\setlength@{itemsep@}@{2pt plus1pt minus1pt@}}. Para algunos efectos, estas longitudes deben ser cero o negativas. @ftable @code @item \itemindent @anchor{lista itemindent} Sangría de espacio horizontal adicional, más allá de @code{leftmargin}, de la primera línea de cada elemento. Su valor predeterminado es @code{0pt}. @item \itemsep @anchor{lista itemsep} Espacio vertical entre elementos, más allá del @code{\parsep}. Los valores predeterminados para los tres primeros niveles en las clases @LaTeX{} @samp{article}, @samp{book} y @samp{report} con un tamaño de 10 puntos son: @code{4pt plus2pt minus 1pt}, @code{\parsep} (es decir, @code{2pt plus 1pt minus 1pt}), y @code{\topsep} (es decir, @code{2pt plus 1pt minus 1pt}). Los valores predeterminados en 11 puntos son: @code{4.5pt plus 2pt minus 1pt}, @code{\parsep} (es decir, @code{2pt plus 1pt minus 1pt}) y @code{\topsep} (es decir, @code{2pt plus 1pt minus 1pt}). Los valores predeterminados en 12 puntos son: @code{5pt plus 2.5pt minus 1pt}, @code{\parsep} (es decir, @code{2.5pt plus 1pt minus 1pt}), y @code{\topsep} (es decir, @code{2.5pt plus 1pt minus 1pt}). @item \labelsep @anchor{lista labelsep} Espacio horizontal entre la etiqueta y el texto de un elemento. El valor predeterminado para las clases @LaTeX{} @samp{article}, @samp{book}, y @samp{report} es @code{0.5em}. @item \labelwidth @anchor{lista labelwidth} Ancho horizontal. La caja que contiene la etiqueta nominalmente es así de ancha. Si @code{\makelabel} devuelve un texto más ancho que este, entonces la primera línea del elemento se sangrará para dejar espacio para este material adicional. Si @code{\makelabel} devuelve texto de ancho menor o igual que @code{\labelwidth} entonces el valor predeterminado de @LaTeX{} es que la etiqueta está compuesta al ras en una caja de este ancho. El borde izquierdo del cuadro de etiqueta es @code{\leftmargin}+@code{\itemindent}-@code{\labelsep}-@code{\labelwidth} del margen izquierdo del entorno envolvente. El valor predeterminado para las clases @samp{article}, @samp{book} y @samp{report} de @LaTeX{} en el nivel superior es @code{\leftmargini}-@code{\labelsep}, (que es @code{2em} en modo una columna y @code{1.5em} en modo de dos columnas). En el segundo nivel es @code{\leftmarginii}-@code{\labelsep}, y en el tercer nivel es @code{\leftmarginiii}-@code{\labelsep}. Estas definiciones hacen que el borde izquierdo de la etiqueta coincida con el margen izquierdo del entorno envolvente. @item \leftmargin @anchor{lista leftmargin} Espacio horizontal entre el margen izquierdo del entorno envolvente (o el margen izquierdo de la página si se trata de una lista de nivel superior), y el margen izquierdo de esta lista. No debe ser negativo. En las clases de documentos estándar de @LaTeX{}, una lista de nivel superior tiene este conjunto al valor de @code{\leftmargini}, mientras que una lista anidada dentro una lista de nivel superior tiene este margen establecido en @code{\leftmarginii}. Las listas más profundamente anidadas obtienen los valores de @code{\leftmarginiii} a través de @code{\leftmarginvi}. (La anidación superior al nivel cinco genera el mensaje de error @samp{Anidado demasiado profundo}). Los valores predeterminados para los primeros tres niveles en las clases @LaTeX{} @samp{article}, @samp{book} y @samp{report} son: @code{\leftmargini} es @code{2.5em} (en modo de dos columnas, @code{2em}), @code{\leftmarginii} es @code{2.2em} y @code{\leftmarginiii} es @code{1.87em}. @item \listparindent @anchor{lista listparindent} Espacio horizontal de sangría de línea adicional, más allá de @code{\leftmargin}, para el segundo y posteriores párrafos dentro de una lista @code{item}. Un valor negativo lo convierte en ``outdent''. Su valor predeterminado es @code{0pt}. @item \parsep @anchor{lista parsep} Espacio vertical entre párrafos dentro de un elemento. Los valores predeterminados para los primeros tres niveles en las clases @LaTeX{} @samp{article}, @samp{book} y @samp{report} con un tamaño de 10 puntos son: @code{4pt plus 2pt minus 1pt}, @code{2pt plus 1pt minus 1pt} y @code{0pt}. Los valores predeterminados en tamaño de 11 puntos son: @code{4.5pt plus 2pt minus 1pt}, @code{2pt plus1pt minus1pt}, y @code{0pt}. Los valores predeterminados en tamaño de 12 puntos son: @code{5pt plus 2.5pt minus 1pt}, @code{2.5pt plus 1pt minus 1pt} y @code{0pt}. @item \partopsep @anchor{lista partopsep} Espacio vertical agregado, más allá de @code{\topsep}+@code{\parskip}, en la parte superior y la parte inferior de todo el entorno si la instancia de la lista está precedida por una línea en blanco. (Una línea en blanco en la fuente @LaTeX{} antes de la lista cambia el espaciado en la parte superior e inferior de la lista; si la línea siguiente a la lista está en blanco, no importa). Los valores predeterminados para los primeros tres niveles en las clases @LaTeX{} @samp{article}, @samp{book} y @samp{report} con un tamaño de 10 puntos son: @code{2pt plus 1pt minus 1pt}, @code{2pt plus 1pt minus 1pt} y @code{1pt plus0pt minus1pt}. Los valores predeterminados en 11 puntos son: @code{3pt plus1pt minus1pt}, @code{3pt plus 1pt minus 1pt} y @code{1pt plus0pt minus 1pt}). Los valores predeterminados en 12 puntos son: @code{3pt plus 2pt minus 3pt}, @code{3pt plus 2pt minus 2pt} y @code{1pt plus0pt minus 1pt}. @item \rightmargin @anchor{lista rightmargin} Espacio horizontal entre el margen derecho de la lista y el margen derecho del entorno envolvente. Su valor predeterminado es @code{0pt}. No debe ser negativo. @item \topsep @anchor{lista topsep} Espacio vertical agregado a la parte superior e inferior de la lista, además a @code{\parskip} (@pxref{\parindent y \parskip}). Los valores predeterminados para los tres primeros niveles en las clases @LaTeX{} @samp{article}, @samp{book} y @samp{report} con un tamaño de 10 puntos son: @code{8pt plus 2pt minus 4pt}, @code{4pt plus 2pt minus 1pt} y @code{2pt plus 1pt minus 1pt}. Los valores predeterminados en 11 puntos son: @code{9pt plus 3pt minus 5pt}, @code{4.5pt plus 2pt minus 1pt} y @code{2pt plus 1pt minus 1pt}. Los valores predeterminados para 12 puntos son: @code{10pt plus 4pt minus 6pt}, @code{5pt plus 2.5pt minus 1pt}, y @code{2.5pt plus 1pt minus 1pt}. @end ftable Esto muestra las distancias horizontal y vertical. @float @image{latex2e-figures/list,3.21in,,,.png} @end float Las longitudes que se muestran se enumeran a continuación. La relación clave es que el borde derecho del paréntesis para @var{h1} es igual al borde derecho del corchete para @var{h4}, de modo que el borde izquierdo del cuadro de etiqueta esté en @var{h3}+@var{h4}-(@var{h0}+@var{h1}). @table @var @item v0 @math{@code{@\topsep} + @code{@\parskip}} si el entorno de la lista no comienza un nuevo párrafo, y @code{\topsep}+@code{\parskip}+@code{\partopsep} si lo comienza @item v1 @code{\parsep} @item v2 @code{\itemsep}+@code{\parsep} @item v3 Igual que @var{v0}. (Este espacio se ve afectado por si una línea en blanco aparece en la fuente por encima del entorno; si una línea en blanco aparece en la fuente debajo del entorno no importa). @item h0 @code{\labelwidth} @item h1 @code{\labelsep} @item h2 @code{\listparindent} @item h3 @code{\leftmargin} @item h4 @code{\itemindent} @item h5 @code{\rightmargin} @end table Los márgenes izquierdo y derecho de la lista, que se muestran arriba como @var{h3} y @var{h5}, son con respecto a las proporcionadas por el entorno circundante, o con respecto a los márgenes de página para una lista de nivel superior. El ancho de línea utilizado para componer los elementos de la lista es @code{\linewidth} (@pxref{Parámetros de composición de página}). Por ejemplo, establece el margen izquierdo de la lista para que sea una cuarta parte de la distancia entre los márgenes izquierdo y derecho del entorno envolvente con @code{\setlength@{\leftmargin@}@{0.25\linewidth@}}. Los saltos de página en una estructura de lista están controlados por los tres parámetros a continuación. Para cada uno, el valor predeterminado de @LaTeX{} es @code{-\@@lowpenalty}, es decir, @code{-51}. Porque es negativo, de alguna manera fomenta un salto de página en cada punto. Cambiarlo con, por ejemplo, @code{\@@beginparpenalty=9999}; un valor de 10000 prohíbe un salto de página. @ftable @code @item \@@beginparpenalty @anchor{lista beginparpenalty} La penalización de salto de página por romper antes de la lista (predeterminado @code{-51}). @item \@@itempenalty @anchor{lista itempenalty} La penalización por salto de página al romper antes de un elemento de lista (predeterminado @code{-51}). @item \@@endparpenalty @anchor{lista endparpenalty} La penalización de salto de página por romper después de una lista (predeterminado @code{-51}). @end ftable @PkgIndex{enumitem} El paquete @package{enumitem} es útil para personalizar listas. Este ejemplo tiene las etiquetas en rojo. Están numeradas, y el borde izquierdo de la etiqueta se alinea con el borde izquierdo del texto del elemento. @xref{\usecounter}. @example \usepackage@{color@} \newcounter@{cnt@} \newcommand@{\makeredlabel@}[1]@{\textcolor@{red@}@{#1.@}@} \newenvironment@{redlabel@} @{\begin@{list@} @{\arabic@{cnt@}@} @{\usecounter@{cnt@} \setlength@{\labelwidth@}@{0em@} \setlength@{\labelsep@}@{0.5em@} \setlength@{\leftmargin@}@{1.5em@} \setlength@{\itemindent@}@{0.5em@} % equals \labelwidth+\labelsep \let\makelabel=\makeredlabel @} @} @{\end@{list@}@} @end example @menu * \item:: Una entrada en una lista. * trivlist:: Una forma restringida de @code{list}. @end menu @node \item @subsection @code{\item}: Una entrada en una lista Sinopsis: @example \item texto del elemento @end example @noindent o @example \item[@var{optional-label}] texto del elemento @end example Una entrada en una lista. Las entradas están precedidas por una etiqueta, cuyo valor predeterminado depende del tipo de lista. Porque la etiqueta opcional está entre corchetes @samp{[...]}, si tienes un elemento cuyo texto comienza con [, tienes que ocultar el corchete dentro de las llaves, como en: @code{\item @{[@} es un corchete de apertura}; de lo contrario, @LaTeX{} pensará en la marca como el comienzo de una etiqueta opcional. Del mismo modo, si el artículo tiene la etiqueta opcional y necesitas un corchete de cierre dentro de esa etiqueta, lo debes ocultar en la misma forma: @code{\item[Corchete de cierre, @{]@}]}. @xref{Sintaxis del comando @LaTeX{}}. En este ejemplo, la lista de enumeración tiene dos elementos que usan el valor de etiqueta predeterminado y otra que usa la etiqueta opcional. @example \begin@{enumerate@} \item Moe \item[a veces] Shemp \item Larry \end@{enumerate@} @end example El primer elemento está etiquetado como @samp{1.}, el segundo elemento está etiquetado @samp{a veces}, y el tercer elemento está etiquetado como @samp{2.}. Porque de la etiqueta opcional en el segundo artículo, el tercer artículo no está etiquetado@tie{}@samp{3.}. @node trivlist @subsection @code{trivlist}: Una forma restringida de @code{list} Sinopsis: @example \begin@{trivlist@} ... \end@{trivlist@} @end example Una versión restringida del entorno list, en la que los márgenes no son sangrados y un @code{\item} sin un argumento opcional no produce texto. Se utiliza con mayor frecuencia en macros, para definir un entorno en el que el comando @code{\item} es parte de la definición del entorno. Para instancia, el entorno @code{center} se define esencialmente como este: @example \newenvironment@{center@} @{\begin@{trivlist@}\centering\item\relax@} @{\end@{trivlist@}@} @end example El uso de @code{trivlist} de esta manera permite que la macro herede algún código común: combinar el espacio vertical de dos entornos adyacentes; detectar si el texto que sigue al entorno debe ser considerado un nuevo párrafo o una continuación del anterior; ajustar los márgenes izquierdo y derecho para un posible entorno de lista anidada. Específicamente, @code{trivlist} usa los valores actuales de los parámetros de lista (@pxref{list}), excepto que @code{\parsep} se establece en el valor de @code{\parskip}, y @code{\leftmargin}, @code{\labelwidth}, e @code{\itemindent} se establecen en cero. Este ejemplo genera los elementos como dos párrafos, excepto que (de manera predeterminada) no tienen sangría de párrafo y están separados verticalmente. @example \begin@{trivlist@} \item La \textit@{Sorpresa@} no es antigua; nadie la llamaría vieja. \item Ella tiene un arco de farol, lindas líneas. \end@{trivlist@} @end example @node math @section @code{math} @EnvIndex{math} @cindex fórmulas en línea Sinopsis: @example \begin@{math@} @var{math} \end@{math@} @end example @findex $ @r{matemáticas en línea} @findex \(...\) @r{matemáticas en línea} El entorno @code{math} inserta material dado @var{math} dentro del texto en ejecución. @code{\(...\)} y @code{$...$} son sinónimos. @xref{Fórmulas math}. @node minipage @section @code{minipage} @EnvIndex{minipage} @cindex minipágina, crear una Sinopsis: @example \begin@{minipage@}@{@var{width}@} @var{contenido} \end@{minipage@} @end example @noindent o @example \begin@{minipage@}[@var{position}][@var{height}][@var{inner-pos}]@{@var{width}@} @var{contenido} \end@{minipage@} @end example Pon @var{contenido} en un cuadro que tenga un ancho de @var{width}. Esto es como una versión pequeña de una página; puede contener sus propias notas al pie, listas detalladas, etc. (Hay algunas restricciones, incluyendo que no puede tener flotante). Este cuadro no se dividirá entre páginas. Entonces @code{minipage} es similar a @code{\parbox} (@pxref{\parbox}) pero aquí puedes tener párrafos. Este ejemplo tendrá 3@tie{}pulgadas de ancho y tiene dos párrafos. @example \begin@{minipage@}@{3in@} Stephen Kleene fue uno de los fundadores de la Teoría de la Computación. Fue estudiante de Iglesia, escribió tres textos influyentes, fue presidente de la Asociación de Lógica Simbólica, y ganó la Medalla Nacional de Ciencias. \end@{minipage@} @end example @noindent Ve adelante, para una explicación de la sangría de párrafo dentro de una @code{minipage}. El argumento requerido @var{width} es una longitud rígida (@pxref{Longitudes}). Da el ancho de la caja en la que se compone @var{contenido}. Hay tres argumentos opcionales, @var{position}, @var{height} e @var{inner-pos}. No es necesario incluir los tres. Por ejemplo, obtener la @var{position} predeterminada y establecer @var{height} con @code{\begin@{minipage@}[c][2.54cm]@{\columnwidth@} @var{content} \end@{minipage@}}. (Obtiene la altura natural con un argumento vacío, @code{[]}). El argumento opcional @var{position} gobierna cómo @code{minipage} se alinea verticalmente con el material circundante. @table @code @item c @c xx Clarifica lo que significa cuando las líneas de texto adyacentes @c no están @c alineadas al centro vertical entre sí (sinónimo @code{m}) Predeterminado. Posiciona la @code{minipage} para que su centro vertical se alinee con el centro de la línea de texto adyacente. @item t @findex \vtop @r{plain @TeX{}} Alinea la línea base de la línea superior en la @code{minipage} con la línea base del texto circundante (el @code{\vtop} de @TeX{} simple). @item b @findex \vbox @r{(simple @TeX{})} Alinea la línea base de la línea inferior en la @code{minipage} con la línea base del texto circundante (el @code{\vbox} de @TeX{} simple). @end table Para ver los efectos de estos, contrasta esta ejecución @example ---\begin@{minipage@}[c]@{0.25in@} primero\\ segundo\\ tercero \end@{minipage@} @end example @noindent con los resultados de cambiar @code{c} a @code{b} o@tie{}@code{t}. @c xx Aclara qué sucede si el usuario ingresa una longitud elástica en @c lugar de una longitud rígida. El argumento opcional @var{height} es una longitud rígida (@pxref{Longitudes}). Establece la altura de la @code{minipage}. Puedes ingresar cualquier valor más grande que, igual o más pequeño que el código natural de @code{minipage} height y @LaTeX{} no darán un error o una advertencia. También puedes establecer a una altura de cero o un valor negativo. El último argumento opcional @var{inner-pos} controla la ubicación de @var{contenido} dentro del cuadro. Estos son los valores posibles (el predeterminado es el valor de @var{position}). @table @code @item t Coloca @var{contenido} en la parte superior del cuadro. @item c Lo coloca en el centro vertical. @item b Lo coloca en el fondo de la caja. @item s Estira @var{contenido} verticalmente; debe contener espacio elástico verticalmente. @end table El argumento @var{inner-pos} tiene sentido cuando la opción @var{height} se establece en un valor mayor que la altura natural de @code{minipage}. Para ver el efecto de las opciones, ejecuta este ejemplo con las distintas opciones en lugar de @code{b}. @example Texto antes \begin@{center@} ---\begin@{minipage@}[c][3in][b]@{0.25\textwidth@} primero\\ segundo\\ tercero \end@{minipage@} \end@{center@} Texto después @end example @cindex sangría de párrafos, en minipágina @cindex sangría, de párrafo en minipágina @findex \parindent De manera predeterminada, los párrafos no tienen sangría en una @code{minipage}. Cambio que con un comando como @code{\setlength@{\parindent@}@{1pc@}} en el inicio de @var{contenido}. @cindex notas al pie en figuras @cindex figuras, notas al pie en Las notas al pie en un entorno @code{minipage} se manejan de una manera que es particularmente útil para poner notas a pie de página en figuras o tablas. Para el comando @code{\footnote} o @code{\footnotetext} coloca la nota al pie en la parte inferior de la minipágina en lugar de en la parte inferior de la página, y usa el contador @code{\mpfootnote} en lugar del contador ordinario @code{footnote} (@pxref{Contadores}). Esto coloca la nota al pie en la parte inferior de la tabla, no en la parte inferior de la página. @example \begin@{center@} % centra la minipágina en la línea \begin@{minipage@}@{2.5in@} \begin@{center@} % centra la tabla dentro de la minipágina \begin@{tabular@}@{ll@} \textsc@{Monarca@} &\textsc@{Reinado@} \\ \hline Isabel II &96 años\footnote@{hasta su fallecimiento@} \\ Victoria &63 años \\ Jorge III &59 años \end@{tabular@} \end@{centro@} \end@{minipage@} \end@{center@} @end example Si anidas minipáginas, hay una rareza al usar notas al pie. Las notas al pie aparecen en la parte inferior del texto terminadas por la siguiente @code{\end@{minipage@}} que puede no ser su lugar lógico. Esto coloca una tabla que contiene datos al lado de un gráfico de mapa. Ellos están centrados verticalmente. @PkgIndex{siunitx} @example % siunitx para tener el especificador de columna S, % que alinea los números en su punto decimal. \usepackage@{siunitx@} \newcommand*@{\vcenteredhbox@}[1]@{\begin@{tabular@}@{@@@{@}c@@@{@}@}#1\end@{tabular@}@} ... \begin@{center@} \vcenteredhbox@{\includegraphics[width=0.3\textwidth]@{nyc.png@}@} \hspace@{0.1\textwidth@} \begin@{minipage@}@{0.5\textwidth@} \begin@{tabular@}@{r|S@} % \multicolumn para eliminar la barra vertical entre los encabezados % de las columnas \multicolumn@{1@}@{r@}@{Borough@} & % llaves para evitar que siunitx malinterprete el % período como separador decimal @{Pop. (million)@} \\ \hline The Bronx &1.5 \\ Brooklyn &2.6 \\ Manhattan &1.6 \\ Queens &2.3 \\ Staten Island &0.5 \end@{tabular@} \end@{minipage@} \end@{center@} @end example @node picture @section @code{picture} @EnvIndex{picture} @cindex crear imágenes @cindex imágenes, crear Sinopsis: @example \begin@{picture@}(@var{width},@var{height}) @var{comando picture} \end@{picture@} @end example @noindent o @example \begin@{picture@}(@var{width},@var{height})(@var{xoffset},@var{yoffset}) @var{comando picture} \end@{picture@} @end example @noindent Donde puede haber cualquier número de @var{comando picture}. Un entorno para crear imágenes simples que contienen líneas, flechas, cuadros, círculos y texto. Este entorno no es obsoleto, sino que los nuevos documentos suelen utilizar sistemas de creación de gráficos mucho más potentes, como TikZ, PSTricks, MetaPost o Asymptote. Ninguno de estos están cubiertos en este documento; ve CTAN. Para empezar, aquí hay un ejemplo que muestra la ley del paralelogramo para sumar vectores. @findex \unitlength @example \setlength@{\unitlength@}@{1cm@} \begin@{picture@}(6,6) % cuadro de imagen tendrá 6 cm de ancho por % 6 cm de alto \put(0,0)@{\vector(2,1)@{4@}@} % por cada 2 sobre este vector sube 1 \put(2,1)@{\makebox(0,0)[l]@{\ primer etapa@}@} \put(4,2)@{\vector(1,2)@{2@}@} \put(5,4)@{\makebox(0,0)[l]@{\ segunda etapa@}@} \put(0,0)@{\vector(1,1)@{6@}@} \put(3,3)@{\makebox(0,0)[r]@{sum\ @}@} \end@{picture@} @end example El entorno @code{picture} tiene un argumento requerido, un par de números reales positivos (@var{width}, @var{height}). Multiplica estos por el valor de @code{\unitlength} para obtener el tamaño nominal de la salida, es decir, @: el espacio que reserva @LaTeX{} en la página de salida. Este tamaño nominal no es necesario saber qué tan grande es realmente la imagen; @LaTeX{} dibujará cosas de picture fuera de la caja de la imagen. Este entorno también tiene un argumento opcional (@var{xoffset}, @var{yoffset}). Se utiliza para cambiar el origen. A diferencia de la mayoría de los argumentos opcionales, éste no está contenido entre corchetes. Al igual que con el argumento requerido, consiste en un par de dos números reales, pero estos también pueden ser negativos o nulos. Multiplica estos por @code{\unitlength} para obtener las coordenadas del punto en la esquina inferior izquierda de la imagen. Por ejemplo, si @code{\unitlength} se ha establecido en @code{1mm}, el comando @example \begin@{picture@}(100,200)(10,20) @end example @noindent produce una caja de 100 milímetros de ancho y 200 milímetros de alto. El origen de la imagen es el punto (10mm, 20mm) y, por lo tanto, la esquina inferior izquierda está allí, y la esquina superior derecha está en (110mm, 220 mm). Cuando primero dibujes una imagen, normalmente omite el argumento opcional, dejando el origen en la esquina inferior izquierda. Si luego deseas modificar tu imagen cambiando todo, solo puedes agregar el argumento opcional apropiado. @cindex posición, en imagen Cada @var{comando picture} le dice a @LaTeX{} dónde colocar algo proporcionando su posición. Una @dfn{position} es un par como @code{(2.4,-5)} dando las coordenadas x e y. Una @dfn{coordenada} no es una longitud, es un número real (puede tener un punto decimal o un signo menos). Eso especifica una longitud en múltiplos de la unidad de longitud @code{\unitlength}, por lo que si @code{\unitlength} se ha establecido en @code{1cm}, entonces la coordenada @code{2.54} especifica una longitud de 2.54 centímetros. El valor predeterminado de @LaTeX{} para @code{\unitlength} es @code{1pt}. Es una longitud rígida (@pxref{Longitudes}). Cámbialo con el comando @code{\setlength} (@pxref{\setlength}). Haz este cambio solo fuera de un entorno @code{picture}. El entorno @code{picture} admite el uso de expresiones aritméticas estándar como números. Las coordenadas se dan con respecto a un origen, que de manera predeterminada está en la esquina inferior izquierda de la imagen. Ten en cuenta que cuando aparece una posición como argumento, como con @code{\put(1,2)@{...@}}, no está encerrado entre llaves ya que los paréntesis sirven para delimitar el argumento. También, a diferencia de algunos sistemas de gráficos por ordenador, las coordenadas @code{y} más grandes son más arriba en la página, por ejemplo, @math{y = 1} es @emph{arriba} @math{y = 0}. Hay cuatro formas de poner cosas en una imagen: @code{\put}, @code{\multiput}, @code{\qbezier} y @code{\graphpaper}. Más a menudo se usa @code{\put}. Este @example \put(11.3,-0.3)@{...@} @end example @noindent coloca el objeto con su punto de referencia en las coordenadas @math{(11.3,-0.3)}. Los puntos de referencia para varios objetos serán descritos abajo. @findex Caja LR El comando @code{\put} crea un @dfn{LR box} (@pxref{Modos}). Cualquier cosa que pueda ir en un @code{\mbox} (@pxref{\mbox y \makebox}) puede ir en el argumento de texto del comando @code{\put}. El punto de referencia será la esquina inferior izquierda de la caja. En esta imagen @example \setlength@{\unitlength@}@{1cm@} ...\begin@{picture@}(1,1) \put(0,0)@{\line(1,0)@{1@}@} \put(0,0)@{\line(1,1)@{1@}@} \end@{picture@} @end example @noindent los tres puntos están ligeramente a la izquierda del punto del ángulo formado por las dos líneas. (Además, @code{\line(1,1)@{1@}} no requiere una línea de longitud uno; más bien la línea tiene un cambio en la coordenada x de 1). Los comandos @code{\multiput}, @code{qbezier} y @code{graphpaper} están descritos abajo. También puedes utilizar este entorno para colocar material arbitrario en una ubicación exacta. Por ejemplo: @example \usepackage@{color,graphicx@} % en el preámbulo ... \begin@{center@} \setlength@{\unitlength@}@{\textwidth@} \begin@{picture@}(1,1) % deja espacio, ancho de \textwidth y alto \put(0,0)@{\includegraphics[width=\textwidth]@{desertedisland.jpg@}@} \put(0.25,0.35)@{\textcolor@{red@}@{Guarda X aquí@}@} \end@{picture@} \end@{center@} @end example @noindent La red@tie{}X será precisamente una cuarta parte del @code{\textwidth} de el margen izquierdo y @code{0.35\textwidth} hacia arriba desde la parte inferior de la imagen. Otro ejemplo de este uso es poner un código similar en el encabezado de página para obtener material repetido en cada una de las páginas de un documento. @menu * \put:: Coloca un objeto en un lugar específico. * \multiput:: Dibuja varias instancias de un objeto. * \qbezier:: Dibuja una curva B@'ezier cuadrática. * \graphpaper:: Dibuja la gráfica en papel. * \line:: Dibuja una línea recta. * \linethickness:: Establece el grosor de las líneas horizontales y verticales. * \thinlines:: El grosor de línea predeterminado. * \thicklines:: Un grosor de línea más pesado. * \circle:: Dibuja un circulo. * \oval:: Dibuja un óvalo. * \shortstack:: Hace una pila de objetos. * \vector:: Dibuja una línea con una flecha. * \makebox (picture):: Dibuja una caja del tamaño especificado. * \framebox (picture):: Dibuja una caja con un marco alrededor. * \frame:: Dibuja un marco alrededor de un objeto. * \dashbox:: Dibuja un cuadro punteado. @end menu @node \put @subsection @code{\put} @findex \put Sinopsis: @example \put(@var{xcoord},@var{ycoord})@{@var{content}@} @end example Coloca @var{content} en la coordenada (@var{xcoord},@var{ycoord}). Ve la discusión de coordenadas y @code{\unitlength} en @ref{picture}. El @var{contenido} se procesa en modo LR (@pxref{Modos}) por lo que no puede contener saltos de línea. Esto incluye el texto en la @code{picture}. @example \put(4.5,2.5)@{Aplica el \textit@{unpoke@} move@} @end example El punto de referencia, la ubicación (4.5,2.5), es la parte inferior izquierda del texto, en la parte inferior izquierda de @samp{A}. @node \multiput @subsection @code{\multiput} @findex \multiput Sinopsis: @example \multiput(@var{x},@var{y})(@var{delta_x},@var{delta_y})@{@var{num-copies}@}@{@var{obj}@} @end example Copia @var{obj} un total de @var{num-copies} veces, con un incremento de @var{delta_x,delta_y}. El @var{obj} aparece primero en la posición @math{(x,y)}, entonces en @math{(x+\delta_x,y+\delta_y)}, y así sucesivamente. Esto dibuja una cuadrícula simple con cada quinta línea en negrita (ve también @ref{\graphpaper}). @example \begin@{picture@}(10,10) \linethickness@{0.05mm@} \multiput(0,0)(1,0)@{10@}@{\line(0,1)@{10@}@} \multiput(0,0)(0,1)@{10@}@{\line(1,0)@{10@}@} \linethickness@{0.5mm@} \multiput(0,0)(5,0)@{3@}@{\line(0,1)@{10@}@} \multiput(0,0)(0,5)@{3@}@{\line(1,0)@{10@}@} \end@{picture@} @end example @node \qbezier @subsection @code{\qbezier} @findex \qbezier Sinopsis: @example \qbezier(@var{x1},@var{y1})(@var{x2},@var{y2})(@var{x3},@var{y3}) \qbezier[@var{num}](@var{x1},@var{y1})(@var{x2},@var{y2})(@var{x3},@var{y3}) @end example Dibuja una curva de Bézier cuadrática cuyos puntos de control estén dados por tres argumentos requeridos @code{(@var{x1},@var{y1})}, @code{(@var{x2},@var{y2})} y @code{(@var{x3},@var{y3})}. Eso es, la curva va de @var{(x1,y1)} a @var{(x3,y3)}, es cuadrática y es tal que la recta tangente en @var{(x1,y1)} pasa por @var{(x2,y2)}, al igual que la recta tangente en @var{(x3,y3)}. Esto dibuja una curva desde la coordenada (1,1) a (1,0). @example \qbezier(1,1)(1.25,0.75)(1,0) @end example @noindent La línea tangente de la curva en (1,1) contiene (1.25,0.75), al igual que la recta tangente de la curva en (1,0). El argumento opcional @var{num} da el número de cálculos de puntos intermedios. El valor predeterminado es dibujar una curva suave cuyo número máximo de puntos es @code{\qbeziermax} (cambia este valor con @code{\renewcommand}). Esto dibuja un rectángulo con una parte superior ondulada, usando @code{\qbezier} para esa curva @example \begin@{picture@}(8,4) \put(0,0)@{\vector(1,0)@{8@}@} % eje x \put(0,0)@{\vector(0,1)@{4@}@} % eje y \put(2,0)@{\line(0,1)@{3@}@} % lado izquierdo \put(4,0)@{\line(0,1)@{3.5@}@} % lado derecho \qbezier(2,3)(2.5,2.9)(3,3.25) \qbezier(3,3.25)(3.5,3.6)(4,3.5) \thicklines % debajo de aquí, las líneas son el % doble de gruesas \put(2,3)@{\line(4,1)@{2@}@} \put(4.5,2.5)@{\framebox@{Regla trapezoidal@}@} \end@{picture@} @end example @node \graphpaper @subsection @code{\graphpaper} @findex \graphpaper Sinopsis: @example \graphpaper(@var{x_init},@var{y_init})(@var{x_dimen},@var{y_dimen}) \graphpaper[@var{spacing}](@var{x_init},@var{y_init})(@var{x_dimen},@var{y_dimen}) @end example @PkgIndex{graphpap} Dibuja una cuadrícula de coordenadas. Requiere el paquete @package{graphpap}. El origen de la cuadrícula es @code{(@var{x_init},@var{y_init})}. Las líneas de la cuadrícula vienen cada @var{spacing} unidades (el valor predeterminado es 10). La cuadrícula extiende @var{x_dimen} unidades hacia la derecha y @var{y_dimen} unidades hacia arriba. Todos los argumentos deben ser números enteros positivos. Esto crea una cuadrícula con siete líneas verticales y once líneas horizontales. @example \usepackage@{graphpap@} % en el preámbulo ... \begin@{picture@}(6,20) % en el cuerpo del documento \graphpaper[2](0,0)(12,20) \end@{picture@} @end example @noindent Las líneas están numeradas cada diez unidades. @node \line @subsection @code{\line} @findex \line Sinopsis: @example \line(@var{x_run},@var{y_rise})@{@var{travel}@} @end example Dibuja una línea. Tiene una pendiente tal que sube verticalmente @var{y_rise} para cada @var{x_run} horizontal. El @var{travel} es el cambio horizontal total --- no es la longitud del vector, es el cambio en @math{x}. En el caso especial de las líneas verticales, donde (@var{x_run},@var{y_rise})=(0,1), @var{travel} da el cambio en @math{y}. Esto dibuja una línea que comienza en las coordenadas (1,3). @example \put(1,3)@{\line(2,5)@{4@}@} @end example @noindent Por cada más de 2, esta línea aumentará 5. Porque @var{travel} especifica que esto pasa de 4, debe subir a@tie{}10. Por lo tanto, su punto final es @math{(1,3)+(4,10)=(5,13)}. En particular, ten en cuenta que @math{@var{travel}=4} no es la longitud de la línea, es el cambio en @math{x}. Los argumentos @var{x_run} y @var{y_rise} son números enteros que se pueden positivo, negativo o cero. (Si ambos son 0 entonces @LaTeX{} trata el segundo como 1). Con @code{\put(@var{x_init},@var{y_init})@{\line(@var{x_run},@var{y_rise})@{@var{travel}@}@}}, si @var{x_run} es negativo, el punto final de la línea tiene una primer coordenada menor que @var{x_init}. Si @var{y_rise} es negativo entonces el punto final de la línea tiene una segunda coordenada que es menor que @var{y_init}. Si @var{travel} es negativo, obtendrás @code{Error de LaTeX: \line incorrecta o el argumento \vector.} @cindex paquetes gráficos @PkgIndex{pict2e} @PkgIndex{TikZ} @PkgIndex{PSTricks} @PkgIndex{MetaPost} @PkgIndex{Asymptote} @LaTeX{} estándar solo puede dibujar líneas con un rango limitado de pendientes porque estas rectas se forman juntando segmentos de recta de letras prefabricadas. Los dos números @var{x_run} y @var{y_rise} deben tener valores enteros desde @minus{}6 hasta@tie{}6. Asimismo, deben ser relativamente primos, por lo que @var{(x_run,y_rise)} puede ser (2,1) pero no (4,2) (si eliges el último, en lugar de líneas obtiene secuencias de puntas de flecha; la solución es cambiar a la primera). Para obtener lineas de pendiente arbitraria y muchas otras formas en un sistema como @code{picture}, ve el paquete @package{pict2e} (@url{https://ctan.org/pkg/pict2e}). Otra solución es usar un sistema de gráficos completo como TikZ, PSTricks, MetaPost o Asymptote. @node \linethickness @subsection @code{\linethickness} @findex \linethickness Sinopsis: @example \linethickness@{@var{dim}@} @end example Declara el grosor de las líneas horizontales y verticales subsiguientes en una imagen debe ser @var{dim}, que debe tener una longitud positiva (@pxref{Longitudes}). Se diferencia de @code{\thinlines} y @code{\thicklines} en el sentido de que no afecta el grosor de las líneas inclinadas, círculos u óvalos (@pxref{\oval}). @node \thinlines @subsection @code{\thinlines} @findex \thinlines Declaración para establecer el grosor de líneas, círculos y óvalos posteriores en un entorno picture para ser 0.4@dmn{pt}. Este es el valor predeterminado de grosor, por lo que este comando es innecesario a menos que el grosor haya cambiado con @ref{\linethickness} o @ref{\thicklines}. @node \thicklines @subsection @code{\thicklines} @findex \thicklines Declaración para establecer el grosor de líneas, círculos y óvalos posteriores en un entorno picture para ser 0.8@dmn{pt}. Ve también @ref{\linethickness} y @ref{\thinlines}. Este comando se ilustra en el ejemplo de regla trapezoidal de @ref{\qbezier}. @node \circle @subsection @code{\circle} @findex \circle Sinopsis: @example \circle@{@var{diameter}@} \circle*@{@var{diameter}@} @end example Produce un círculo con un diámetro lo más cercano posible al especificado. La forma @code{*}@tie{}produce un círculo relleno. Esto dibuja un círculo de radio 6, centrado en @code{(5,7)}. @example \put(5,7)@{\circle@{6@}@} @end example Los radios disponibles para @code{\circle} son, en puntos, los números pares del 2 al 20, ambos inclusive. Para @code{\circle*} son todos los números enteros del 1 al 15. @node \oval @subsection @code{\oval} @findex \oval Sinopsis: @example \oval(@var{width},@var{height}) \oval(@var{width},@var{height})[@var{portion}] @end example Produce un rectángulo con esquinas redondeadas, en lo sucesivo denominado @dfn{oval}. El argumento opcional @var{portion} te permite producir sólo la mitad o un cuarto del óvalo. Para medio óvalo toma @var{portion} para que sea uno de estos. @table @code @item t mitad superior (top) @item b mitad inferior (bottom) @item r mitad derecha (right) @item l mitad izquierda (left) @end table Produce solo un cuarto del óvalo configurando en @var{portion} en @code{tr}, @code{br}, @code{bl} o @code{tl}. Esto dibuja la mitad superior de un óvalo de 3 de ancho y 7 de alto. @example \put(5,7)@{\oval(3,7)[t]@} @end example @noindent El (5,7) es el centro de todo el óvalo, no solo el centro de la mitad superior. Estas formas no son elipses. Son rectángulos cuyas esquinas están hechas con cuartos de círculo. Estos círculos tienen un radio máximo de 20@dmn{pt} (@pxref{\circle} para los tamaños). Por lo tanto, los óvalos grandes son solo Marcos con una pequeña cantidad de esquinas redondeadas. @node \shortstack @subsection @code{\shortstack} @findex \shortstack Sinopsis: @example \shortstack[@var{position}]@{@var{line 1} \\ ... @} @end example Produce una pila vertical de objetos. Esto etiqueta el eje @math{y} escribiendo la palabra @samp{@math{y}} arriba de la palabra @samp{eje}. @example \setlength@{\unitlength@}@{1cm@} \begin@{picture@}(5,2.5)(-0.75,0) \put(0,0)@{\vector(1,0)@{4@}@} % eje x \put(0,0)@{\vector(0,1)@{2@}@} % y \put(-0.2,2)@{\makebox(0,0)[r]@{\shortstack[r]@{$y$\\ ejes@}@}@} \end@{picture@} @end example @noindent Para una pila pequeña, el punto de referencia es la parte inferior izquierda de la pila. En el ejemplo anterior, el @code{\makebox} (@pxref{\mbox y \makebox}) pone la pila se alinea a la derecha en un cuadro de ancho cero, por lo que en total la pila corta se encuentra ligeramente a la izquierda del eje@tie{}@math{y}. Los puestos válidos son: @table @code @item r Hace que los objetos queden alineados a la derecha @item l Hace que los objetos queden alineados a la izquierda @item c Centra objetos (predeterminado) @end table @findex \\ @r{(para objetos @code{\shortstack})} Separa los objetos en líneas con @code{\\}. Estas pilas son cortas en que, a diferencia de un entorno @code{tabular} o @code{array}, aquí las filas no están espaciadas para tener saltos de línea base uniformes. Así, en @code{\shortstack@{X\\o\\o\\X@}} la primera y la última fila son más altas que los dos medios, y por lo tanto la línea base salta entre los dos medios filas es más pequeña que la que hay entre la tercera y la última fila. Puedes ajustar las alturas y profundidades de las filas ya sea colocando la interlínea habitual espaciado con @code{\shortstack@{X\\ \strut o\\o\\X@}} (@pxref{\strut}), o explícitamente, a través de un cuadro de ancho cero @code{\shortstack@{X \\ \rule@{0pt@}@{12pt@} o\\o\\X@}} o mediante el uso opcional de @code{\\} argumento @code{\shortstack@{X\\[2pt] o\\o\\X@}}. El comando @code{\shortstack} también está disponible fuera del entorno @code{picture}. @node \vector @subsection @code{\vector} @findex \vector Sinopsis: @example \vector(@var{x_run},@var{y_rise})@{@var{travel}@} @end example Dibuja una línea que termine en una flecha. La pendiente de esa recta es: sube verticalmente @var{y_rise} por cada @var{x_run} horizontal. Los @var{travel} es el cambio horizontal total --- no es la longitud del vector, es el cambio en @math{x}. En el caso especial de vectores verticales, si (@var{x_run},@var{y_rise})=(0,1), entonces @var{travel} da el cambio en @math{y}. Para ver un ejemplo, @ref{picture}. Para obtener más detalles sobre @var{x_run} y @var{y_rise}, consulta @ref{\line}. Como allí, los valores de @var{x_run} y @var{y_rise} están limitados. Para @code{\vector} debes elegir números enteros entre @minus{}4 y 4, inclusive. Además, los dos que elijas deben ser relativamente primos. De este modo, @code{\vector(2,1)@{4@}} es aceptable pero @code{\vector(4,2)@{4@}} no es (si usas este último, obtendrás una secuencia de puntas de flecha). @node \makebox (picture) @subsection @code{\makebox} (picture) @findex \makebox @r{(para @code{picture})} Sinopsis: @example \makebox(@var{rec-width},@var{rec-height})@{@var{text}@} \makebox(@var{rec-width},@var{rec-height})[@var{position}]@{@var{text}@} @end example Hace un cuadro para contener @var{text}. Este comando encaja con el entorno @code{picture}, aunque los puedes usar fuera de allí, porque @var{rec-width} y @var{rec-height} son números que especifican distancias en términos de @code{\unitlength} (@pxref{picture}). Este comando es similar al comando @code{\makebox} normal (@pxref{\mbox y \makebox}), excepto que aquí debes especificar el ancho y el alto. Este el comando es frágil (@pxref{\protect}). Esto hace una caja de longitud 3.5 veces @code{\unitlength} y altura 4 veces @code{\unitlength}. @example \put(1,2)@{\makebox(3.5,4)@{...@}@} @end example El argumento opcional @code{@var{position}} especifica dónde aparece el @var{text} en el cuadro. El valor predeterminado es centrarlo, tanto horizontal como verticalmente. Para colocarlo en otro lugar, usa una cadena con una o dos de estas letras. @table @code @item t Pone @var{text} en la parte superior de la caja. @item b Pone @var{text} en la parte inferior. @item l Pone el @var{text} a la izquierda. @item r Pone el @var{text} a la derecha. @end table @node \framebox (picture) @subsection @code{\framebox} (picture) @findex \framebox Sinopsis: @example \framebox(@var{rec-width},@var{rec-height})@{@var{text}@} \framebox(@var{rec-width},@var{rec-height})[@var{position}]@{@var{text}@} @end example Esto es lo mismo que @ref{\makebox (picture)} excepto que pone un marco alrededor del exterior de la caja que crea. El punto de referencia es la esquina inferior izquierda del marco. Este comando encaja con el entorno @code{picture}, aunque lo puedes usar fuera de allí, porque las longitudes son números que especifican la distancia en términos de @code{\unitlength} (@pxref{picture}). Este comando es frágil (@pxref{\protect}). Este ejemplo crea un marco de 2.5@tie{}pulgadas por 3@tie{}pulgadas y coloca el texto en el centro. @example \setlength@{\unitlength@}@{1in@} \framebox(2.5,3)@{test text@} @end example Los argumentos requeridos son que el rectángulo tiene un ancho total de @var{rect-width} unidades y una altura de @var{rect-height} unidades. El argumento opcional @var{position} especifica la posición de @var{text}; @ref{\makebox (picture)} para los valores que puede tomar. @findex \fboxrule @findex \fboxsep La regla tiene @code{\fboxrule} de grosor y hay un espacio en blanco @code{\fboxsep} entre el marco y el contenido de la caja. Para este comando, debes especificar @var{width} y @var{height}. Si solo quieres poner un marco alrededor de algún contenido cuya dimensión está determinada de alguna otra manera, entonces usa @code{\fbox} (@pxref{\fbox y \framebox}) o @code{\frame} (@pxref{\frame}). @node \frame @subsection @code{\frame} @findex \frame Sinopsis: @example \frame@{@var{contenido}@} @end example Pone un marco rectangular alrededor de @var{content}. El punto de referencia es la esquina inferior izquierda del marco. En contraste con @code{\framebox} (@pxref{\framebox (picture)}), este comando no pone espacio adicional entre el marco y el objeto. es frágil (@pxref{\protect}). @node \dashbox @subsection @code{\dashbox} @findex \dashbox Sinopsis: @example \dashbox@{@var{dash-len}@}(@var{rect-width},@var{rect-height})@{@var{text}@} \dashbox@{@var{dash-len}@}(@var{rect-width},@var{rect-height})[@var{position}]@{@var{text}@} @end example Crea un rectángulo punteado alrededor de @var{text}. Este comando encaja con el entorno @code{picture}, aunque lo puedes usar fuera de allí, porque las longitudes son números que especifican la distancia en términos de @code{\unitlength} (@pxref{picture}). Los argumentos requeridos son: los guiones son @var{dash-len} unidades de largo, con el mismo espacio de longitud, y el rectángulo tiene un ancho total de @var{rect-width} unidades y una altura de @var{rect-height} unidades. El argumento opcional @var{position} especifica la posición de @var{text}; @ref{\makebox (picture)} para los valores que puede tomar. Esto muestra que puedes usar un valor no entero para @var{dash-len}. @example \put(0,0)@{\dashbox@{0.1@}(5,0.5)@{Mi aerodeslizador está lleno de anguilas.@}@} @end example @noindent Cada guión tendrá una longitud de @code{0.1\unitlength}, el ancho del cuadro es @code{5\unitlength} y su altura es @code{0.5\unitlength}. Como en ese ejemplo, un cuadro discontinuo se ve mejor cuando @var{rect-width} y @var{rect-height} son múltiplos de @var{dash-len}. @node comillas y citas @section @code{quotation} y @code{quote} @anchor{quotation} @EnvIndex{quotation} @cindex texto citado con sangría de párrafo, mostrando @cindex mostrar texto citado con sangría de párrafo @cindex sangría de párrafo en el texto citado @anchor{quote} @EnvIndex{quote} @cindex texto citado sin sangría de párrafo, mostrando @cindex mostrar texto citado sin sangría de párrafo @cindex sangrías de párrafo en texto citado, omitiendo Sinopsis: @example \begin@{quotation@} @var{text} \end@{quotation@} @end example @noindent o @example \begin@{quote@} @var{text} \end@{quote@} @end example Incluye una comilla. Ambos entornos sangran los márgenes en ambos lados por @code{\leftmargin} y el texto está justificado a la derecha. Se diferencian en cómo tratan los párrafos. En el entorno @code{quotation}, los párrafos tienen una sangría de 1.5@dmn{em} y el espacio entre párrafos es pequeño, @code{0pt plus 1pt}. En el entorno @code{quote}, los párrafos no tienen sangría y hay espacio vertical entre párrafos (es la longitud elástica @code{\parsep}). @example \begin@{quotation@} \smallskip\it Hace cuatro veintenas y siete años ... no se pierde de la tierra. \hspace@{1em plus 1fill@}---Abraham Lincoln \end@{quotation@} @end example @node tabbing @section @code{tabbing} @c xx TODO se alinea con el francés, que es más preciso y tiene @c ejemplos más ilustrativos. @EnvIndex{tabbing} @cindex tabulaciones, usando @cindex alinear el texto usando tabulaciones @cindex alineación mediante tabulación Sinopsis: @example \begin@{tabbing@} @var{row1col1} \= @var{row1col2} ... \\ @var{row2col1} \> @var{row2col2} ... \\ ... \end@{tabbing@} @end example Alinea el texto en columnas, configurando tabulaciones y tabulando en ellas tanto como fue posible en una máquina de escribir. Esto se usa con menos frecuencia que los entornos @code{tabular} (@pxref{tabular}) o @code{array} (@pxref{array}) porque en esos, el ancho de cada columna no necesita ser constante y no es necesario conocerlo de antemano. Este ejemplo tiene una primera línea donde las tabulaciones se establecen en anchos explícitos, terminados por un comando @code{\kill} (que se describe a continuación): @example \begin@{tabbing@} \hspace@{1.2in@}\=\hspace@{1in@}\=\kill Ship \>Armas \>Año \\ \textit@{Sophie@} \>14 \>1800 \\ \textit@{Polychrest@} \>24 \>1803 \\ \textit@{Lively@} \>38 \>1804 \\ \textit@{Surprise@} \>28 \>1805 \\ \end@{tabbing@} @end example Tanto el entorno @code{tabbing} como el entorno más utilizado @code{tabular} ponen el texto en columnas. La más importante distinción es que en @code{tabular} el ancho de las columnas @LaTeX{} lo determina automáticamente, mientras que en @code{tabbing} el usuario establece las paradas de tabulación. Otra distinción es que ese @code{tabular} genera un cuadro, pero @code{tabbing} se puede a dividir en páginas. Finalmente, mientras que @code{tabular} se puede usar en cualquier modo, @code{tabbing} se puede usar solo en modo párrafo y siempre comienza un nuevo párrafo, sin sangría. Además, como se muestra en el ejemplo anterior, no es necesario para usar la forma destacada del comando @code{\hspace} al principio de una fila tabulada. El margen derecho del entorno @code{tabbing} es el final de la línea, de modo que el ancho del entorno sea @code{\linewidth}. @cindex fila, @r{tabbing} El entorno @code{tabbing} contiene una secuencia de @dfn{filas tabuladas}. La primera fila tabulada comienza inmediatamente después @code{\begin@{tabbing@}} y cada fila termina con @code{\\} o @code{\kill}. La última fila puede omitir el @code{\\} y terminar con solo @code{\end@{tabbing@}}. @cindex patrón, tabulaciones actuales, @r{tabbing} En cualquier punto, el entorno @code{tabbing} tiene un @dfn{patrón} de tabulación actual, una secuencia de tabulaciones @math{@var{n} > 0}, numeradas 0, 1, etc. Estos crean @var{n} columnas correspondientes. Tabulaciones@tie{}0 siempre es el margen izquierdo, definido por el entorno envolvente. Tabulación número@tie{}@var{i} se establece si se le asigna una posición horizontal en la página. Número de tabulación@tie{}@var{i} solo se puede establecer si todas las paradas 0, @dots{}, @math{i-1} ya se han configurado; normalmente las paradas posteriores están a la derecha de las anteriores. De forma predeterminada, cualquier texto compuesto en un entorno @code{tabbing} está compuesto alineado de forma irregular a la derecha y a la izquierda en la tabulación actual. La composición tipográfica está hecha en modo LR (@pxref{Modos}). Los siguientes comandos se pueden usar dentro de un entorno @code{tabbing}. Todos son frágiles (@pxref{\protect}). @ftable @code @item \\ @r{(tabulación)} Termina una línea tabulada y la compone. @item \= @r{(tabulación)} Establece una tabulación en la posición actual. @item \> @r{(tabulación)} @findex \> Avanza a la siguiente tabulación. @item \< Pone el siguiente texto a la izquierda del margen local (sin cambiar el margen). Solo se puede utilizar al principio de la línea. @item \+ Mueve el margen izquierdo del siguiente y todos los siguientes comandos una tabulación a la derecha, comenzando la línea tabulada si es necesario. @item \- Mueve el margen izquierdo del siguiente y todos los siguientes comandos una tabulación a la izquierda, comenzando la línea tabulada si es necesario. @item \' @r{(tabulación)} Mueve todo lo que hayas escrito hasta ahora en la columna actual, es decir, todo, desde el comando @code{\>} más reciente, @code{\<}, @code{\'}, @code{\\}, o @code{\kill}, a la columna anterior y alineado a la derecha, al ras contra la tabulación de la columna actual. @item \` @r{(tabulación)} Te permite poner el texto al ras contra cualquier tabulación, incluidas las tabulaciones@tie{}0. Sin embargo, no puedes mover el texto a la derecha de la última columna porque no hay una tabulación allí. El comando @code{\`} mueve todo el texto que le sigue, hasta el comando @code{\\} o @code{\end@{tabbing@}} que finaliza la línea, al margen derecho del entorno @code{tabbing}. No debe haber ningún comando @code{\>} o @code{\'} entre @code{\`} y @code{\\} o @code{\end@{tabbing@}} que finaliza la línea. @item \a @r{(tabulación)} @findex \a' @r{(acento agudo en tabulación)} @findex \a` @r{(acento grave en tabulación)} @findex \a= @r{(acento macrón en tabulación)} En un entorno @code{tabbing}, los comandos @code{\=}, @code{\'} y @code{\`} no produce acentos como de costumbre (@pxref{Acentos}). En cambio, usa los comandos @code{\a=}, @code{\a'} y @code{\a`}. @item \kill Establece tabulaciones sin producir texto. Funciona igual que @code{\\} excepto que desecha la línea actual en lugar de producir una salida para ella. Cualquier comando @code{\=}, @code{\+} o @code{\-} en esa línea permanece en efecto. @item \poptabs @findex \poptabs Restaura las posiciones de tabulación guardadas por el último @code{\pushtabs}. @item \pushtabs Guarda todas las posiciones de tabulación actuales. Útil para cambiar temporalmente posiciones de tabulación en medio de un entorno @code{tabbing}. @item \tabbingsep Distancia del texto movido por @code{\'} a la izquierda de la tabulación actual. @end ftable Este ejemplo compone una función de Pascal: @example \begin@{tabbing@} function \= fact(n : integer) : integer;\\ \> begin \= \+ \\ \> if \= n > 1 then \+ \\ fact := n * fact(n-1) \- \\ else \+ \\ fact := 1; \-\- \\ end;\\ \end@{tabbing@} @end example @noindent La salida se ve así. @example function fact(n : integer) : integer; begin if n > 1 then fact := n * fact(n-1); else fact := 1; end; @end example @PkgIndex{algorithm2e} @PkgIndex{listings} @PkgIndex{minted} @PkgIndex{fancyvrb} @noindent Este ejemplo es solo para ilustrar el entorno. En realidad escribir código de ordenador en una máquina de escribir como esta, un entorno textual (@pxref{verbatim}) normalmente sería lo mejor. Para un código bien impreso, hay unos cuantos paquetes, incluido @package{algorithm2e}, @package{fancyvrb}, @package{listings} y @package{minted}. @node table @section @code{table} @EnvIndex{table} @cindex tablas, crear @cindex crear tablas Sinopsis: @example \begin@{table@}[@var{ubicación}] @var{cuerpo de la tabla} \caption[@var{loftitle}]@{@var{title}@} % opcional \label@{@var{label@}} % también opcional \end@{table@} @end example Una clase de flotantes (@pxref{Flotantes}). No se pueden dividir en páginas por lo que no se escriben en secuencia con el texto normal, sino que en su lugar flotan a un lugar conveniente, como la parte superior de una página siguiente. Este entorno @code{table} de ejemplo contiene un @code{tabular} @example \begin@{table@} \centering\small \begin@{tabular@}@{ll@} \multicolumn@{1@}@{c@}@{\textit@{Autor@}@} &\multicolumn@{1@}@{c@}@{\textit@{Pieza@}@} \\ \hline Bach &Cello Suite Número 1 \\ Beethoven &Cello Sonata Número 3 \\ Brahms &Cello Sonata Número 1 \end@{tabular@} \caption@{Las mejores piezas de violonchelo@} \label@{tab:cello@} \end@{table@} @end example @noindent pero puedes poner muchos tipos diferentes de contenido en una @code{tabla}: el @var{cuerpo de la tabla} puede contener texto, comandos de @LaTeX{}, gráficos, etc. Es tipografiado en un @code{parbox} de ancho @code{\textwidth}. Para los posibles valores de @var{placement} y su efecto en el algoritmo de colocación de flotantes, @ref{Flotantes}. La etiqueta es opcional; se usa para referencias cruzadas (@pxref{Referencias cruzadas}). @findex \caption El comando @code{\caption} también es opcional. Especifica texto del título @var{title} para la tabla (@pxref{\caption}). De manera predeterminada es numerado. Si su @var{lottitle} opcional está presente, entonces ese texto se utiliza en la lista de tablas en lugar de @var{title} (@pxref{Tabla de contenido etc.}). En este ejemplo, la tabla y el título flotarán en la parte inferior de una página, a menos que se empuje a una página flotante al final. @example \begin@{table@}[b] \centering \begin@{tabular@}@{r|p@{2in@}@} \hline Uno &El número loneliest \\ Dos &Puede estar tan triste como uno. Es el número más solitario desde el número uno. \end@{tabular@} \caption@{Virtud cardinal@} \label@{tab:CardinalVirtues@} \end@{table@} @end example @node tabular @section @code{tabular} @EnvIndex{tabular} @cindex líneas en tablas @cindex alineando texto en tablas Sinopsis: @example \begin@{tabular@}[@var{pos}]@{@var{cols}@} @var{entrada de columna 1} &@var{entrada de columna 2} ... &@var{entrada de columna n} \\ ... \end@{tabular@} @end example @noindent o @example \begin@{tabular*@}@{@var{width}@}[@var{pos}]@{@var{cols}@} @var{entrada de columna 1} &@var{entrada de columna 2} ... &@var{entrada de columna n} \\ ... \end@{tabular*@} @end example Produce una tabla, una caja que consta de una secuencia de filas horizontales. Cada fila consta de elementos alineados verticalmente en columnas. Este ilustra muchas de las características. @example \begin@{tabular@}@{l|l@} \textit@{Nombre del jugador@} &\textit@{Carrera de jonrones@} \\ \hline Hank Aarón &755 \\ nena Ruth &714 \end@{tabular@} @end example @noindent La salida tendrá dos columnas alineadas a la izquierda con una barra vertical entre ellos. Esto se especifica en el argumento @code{@{l|l@}} de @code{tabular}. @findex & @r{(para celdas de tabla)} Coloca las entradas en diferentes columnas separándolas con un ampersand, @code{&}. El final de cada fila está marcado con una doble barra invertida, @code{\\}. Pone una regla horizontal debajo de una fila, después de una doble barra invertida, con @code{\hline}. @findex \\ @r{(para @code{tabular})} Después de la última fila, las @code{\\} son opcionales, a menos que un @code{\hline} siga el comando para poner una regla debajo de la tabla. Los argumentos requeridos y opcionales para @code{tabular} consisten en: @table @var @item pos Opcional. Especifica la posición vertical de la tabla. El valor predeterminado es alinear la tabla para que su centro vertical coincida con la línea base del texto circundante. Hay otras dos posibles alineaciones: @code{t} alinea la tabla para que su fila superior coincida con la línea base del texto circundante y @code{b} se alinea en la fila inferior. Esto solo tiene efecto si hay otro texto. En el caso común de un @code{tabular} solo en un entorno @code{center} esta opción no hace ninguna diferencia. @item cols Requerido. Especifica el formato de las columnas. Consiste en una secuencia de los siguientes especificadores, correspondientes a los tipos de material de columna e intercolumna. @table @code @item l Una columna de elementos alineados a la izquierda. @item r Una columna de elementos alineados a la derecha. @item c Una columna de elementos centrados. @item | Una línea vertical de la altura y la profundidad completas del entorno. @item @@@{@var{texto o espacio}@} Inserta @var{texto o espacio} en esta ubicación en cada fila. El material @var{texto o espacio} está compuesto en modo LR. Este texto es frágil (@pxref{\protect}). Si entre dos especificadores de columna no hay una @@-expresión, entonces las clases @code{book}, @code{article} y @code{report} de @LaTeX{} ponen a cada lado de cada columna un espacio de ancho @code{\tabcolsep}, que de manera predeterminada es 6@dmn{pt}. Es decir, de manera predeterminada las columnas adyacentes se separan con 12@dmn{pt} (por lo que @code{\tabcolsep} tiene un nombre engañoso ya que es solo la mitad de la separación entre columnas tabulares). Además, un espacio de @code{\tabcolsep} también viene antes de la primera columna y después de la columna final, a menos que coloques una @code{@@@{...@}} allí. Si redefines el valor predeterminado y usas una @@-expresión, entonces @LaTeX{} no inserta @code{\tabcolsep} por lo que debes insertar cualquier espacio deseado tú mismo, como en @code{@@@{\hspace@{1em@}@}}. Una expresión @code{@@@{@}} vacía eliminará el espacio. En particular, a veces deseas eliminar el espacio antes de la primera columna o después de la última, como en el siguiente ejemplo donde las líneas tabulares deben estar en el margen izquierdo. @example \begin@{flushleft@} \begin@{tabular@}@{@@@{@}l@} ... \end@{tabular@} \end@{flushleft@} @end example El siguiente ejemplo muestra texto, un punto decimal entre las columnas, dispuestas de forma que los números de la tabla queden alineados en ella. @example \begin@{tabular@}@{r@@@{$.$@}l@} $3$ &$14$ \\ $9$ &$80665$ \end@{tabular@} @end example @anchor{\extracolsep} @findex \extracolsep Un comando @code{\extracolsep@{@var{wd}@}} en una expresión @@ provoca un espacio adicional de ancho @var{wd} para que aparezca a la izquierda de todas las subsiguientes columnas, hasta que sea revocado por otro @code{\extracolsep}. A diferencia del espacio entre columnas ordinario, este espacio adicional no se suprime por una @@-expresión. Un comando @code{\extracolsep} solo se puede usar en una @@-expresión en el argumento @code{cols}. A continuación, @LaTeX{} inserta la cantidad correcta de espacios entre columnas para que toda la tabla tenga 4 pulgadas de ancho. @example \begin@{tabular*@}@{4in@}@{l@@@{\extracolsep@{\fill@}@}l@} Siete veces abajo, ocho veces arriba \ldots &¡así es la vida! \end@{tabular*@} @end example Para insertar comandos que se ejecutan automáticamente antes de una determinada columna, carga el paquete @code{array} y usa el especificador @code{>@{...@}}. @c xx se deberían explicar completamente array, tabularx y todos los @c demás paquetes base... @item p@{@var{wd}@} Cada elemento de la columna se escribe en un parbox de ancho @var{wd}, como si fuera el argumento de un comando @code{\parbox[t]@{wd@}@{...@}}. Un salto de línea de doble barra invertida @code{\\} puede no aparecer en el elemento, excepto dentro de un entorno como @code{minipage}, @code{array} o @code{tabular}, o dentro de un @code{\parbox} explícito, o en el entorno de una declaración @code{\centering}, @code{\raggedright} o @code{\raggedleft} (cuando se usa en un elemento de columna @code{p}, estas declaraciones deben aparecer entre llaves, como con @code{@{\centering .. \\ ..@}}). De lo contrario, @LaTeX{} malinterpretará la doble barra invertida como terminando la fila tabular. En cambio, para obtener un salto de línea allí, usa @code{\newline} (@pxref{\newline}). @item *@{@var{num}@}@{@var{cols}@} Equivalente a @var{num} copias de @var{cols}, donde @var{num} es un entero positivo y @var{cols} es una lista de especificadores. Por lo tanto, el especificador @code{\begin@{tabular@}@{|*@{3@}@{l|r@}|@}} es equivalente a el especificador @code{\begin@{tabular@}@{|l|rl|rl|r|@}}. Ten en cuenta que @var{cols} puede contener otra @code{*}-expresión. @end table @item width Obligatorio para @code{tabular*}, no permitido para @code{tabular}. Especifica el ancho del entorno @code{tabular*}. El espacio entre columnas debe ser elástico, como con @code{@@@{\extracolsep@{\fill@}@}}, para permitir la tabla para estirar o encoger para hacer el ancho especificado, o de lo contrario es probable que obtengan el @code{Underfull \hbox (incorrecto 10000) alineado ...} advertencia. @end table Parámetros que controlan el formato: @c xx predeterminados, propio nodo (xref del arreglo)? @ftable @code @item \arrayrulewidth @anchor{tabular arrayrulewidth} Una longitud que es el grosor de la regla creada por @code{|}, @code{\hline} y @code{\vline} en @code{tabular} y @code{array} entornos. El valor predeterminado es @samp{.4pt}. Cámbialo como en @code{\setlength@{\arrayrulewidth@}@{0.8pt@}}. @item \arraystretch @anchor{tabular arraystrech} Un factor por el cual el espacio entre filas en los entorno @code{tabular} y @code{array} se multiplica. El valor predeterminado es @samp{1}, para sin escala. Cámbialo a @code{\renewcommand@{\arraystretch@}@{1.2@}}. @item \doublerulesep @anchor{tabular doublerulesep} Una longitud que es la distancia entre las reglas verticales producidas por el especificador @code{||}. El valor predeterminado es @samp{2pt}. @item \tabcolsep @anchor{tabular tabcolsep} Una longitud que es la mitad del espacio entre columnas. El valor predeterminado es @samp{6pt}. Cámbialo con @code{\setlength}. @end ftable Los siguientes comandos se pueden usar dentro del cuerpo de un entorno @code{tabular}, los dos primeros dentro de una entrada y los dos segundos entre líneas: @menu * \multicolumn:: Haz un artículo que abarque varias columnas. * \vline:: Dibuja una línea vertical. * \cline:: Dibuja una línea horizontal que abarque algunas columnas. * \hline:: Dibuja una línea horizontal que abarque todas las columnas. @end menu @node \multicolumn @subsection @code{\multicolumn} @findex \multicolumn Sinopsis: @example \multicolumn@{@var{numcols}@}@{@var{cols}@}@{@var{text}@} @end example Crea una entrada @code{array} o @code{tabular} que abarque varias columnas. El primer argumento @var{numcols} da el número de columnas a abarcar. El segundo argumento @var{cols} especifica el formato de la entrada, con @code{c} para centrado, @code{l} para alineado a la izquierda o @code{r} para volcarlo a la derecha. El tercer argumento @var{text} da el contenido de esa entrada. En este ejemplo, en la primera fila, la segunda y la tercera columna son abarcadas por el encabezado único @samp{Name}. @example \begin@{tabular@}@{lccl@} \textit@{ID@} &\multicolumn@{2@}@{c@}@{\textit@{Name@}@} &\textit@{Age@} \\ \hline 978-0-393-03701-2 &O'Brian &Patrick &55 \\ ... \end@{tabular@} @end example Lo que cuenta como una columna es:@tie{}el especificador de formato de columna para el entorno @code{array} o @code{tabular} se divide en partes, donde cada parte (excepto la primera) comienza con @code{l}, @code{c}, @code{r}, o@tie{}@code{p}. Así que desde @code{\begin@{tabular@}@{|r|ccp@{1.5in@}|@}} las partes son @code{|r|}, @code{c}, @code{c}, y@tie{}@code{p@{1.5in@}|}. El argumento @var{cols} redefine el área @code{array} o @code{tabular} intercolumna del entorno predeterminado junto a esta entrada multicolumna. Para afectar esa área, este argumento puede contener barras verticales @code{|} que indica la ubicación de las reglas verticales y expresiones @code{@@@{...@}}. Por lo tanto, si @var{cols} es @samp{|c|} entonces esta entrada multicolumna estará centrada y una regla vertical vendrá en el área intercolumna anterior y posterior. Esta tabla detalla el comportamiento exacto. @example \begin@{tabular@}@{|cc|c|c|@} \multicolumn@{1@}@{r@}@{w@} % entrada uno &\multicolumn@{1@}@{|r|@}@{x@} % entrada dos &\multicolumn@{1@}@{|r@}@{y@} % entrada tres &z % entrada cuatro \end@{tabular@} @end example @noindent Antes de la primera entrada, la salida no tendrá una regla vertical porque @code{\multicolumn} tiene el especificador @var{cols} @samp{r} sin barra vertical inicial. Entre la entrada uno y la entrada dos habrá una regla vertical; aunque la primera @var{cols} no tiene barra vertical final, la segunda @var{cols} tiene una inicial. Entre la entrada dos y entrada tres hay una sola regla vertical; a pesar de eso @var{cols} en ambas llamadas de @code{multicolumn} circundantes para una regla vertical, solo obtienes una regla. Entre la entrada tres y la entrada cuatro no hay regla vertical; el valor predeterminado pide una, pero @var{cols} en la entrada tres @code{\multicolumn} lo deja afuera, y eso tiene prioridad. Finalmente, siguiendo la entrada cuatro hay una regla vertical debido al valor predeterminado. El número de columnas distribuidas @var{numcols} puede ser 1. Además de dar la capacidad de cambiar la alineación horizontal, esto también es útil para redefinir una fila de la intercolumna predeterminada de la especificación del área de definición @code{tabular}, incluida la colocación de reglas verticales. En el siguiente ejemplo, en la definición de @code{tabular}, la primera columna se especifica de manera predeterminada justificada a la izquierda, pero en la primera fila la entrada está centrada con @code{\multicolumn@{1@}@{c@}@{\textsc@{Punto@}@}}. También en la primera fila, las columnas segunda y tercera están atravesadas por una entrada única con @code{\\multicolumn@{2@}@{c@}@{\\textsc@{Span@}@}}, redefiniendo la especificación para centrar ese rango de dos columnas en la página en-guión. @example \begin@{tabular@}@{l|r@@@{--@}l@} \multicolumn@{1@}@{c@}@{\textsc@{Punto@}@} &\multicolumn@{2@}@{c@}@{\textsc@{Span@}@} \\ \hline Barroca &1600 &1760 \\ Clásica &1730 &1820 \\ Romántica &1780 &1910 \\ Impresionista &1875 &1925 \end@{tabular@} @end example @noindent Aunque la especificación @code{tabular} de manera predeterminada pone una regla vertical entre la primera y la segunda columna, no aparece tal regla vertical en la primera fila aquí. Eso es porque no hay una barra vertical en la parte @var{cols} del primer comando @code{\multicolumn} de la primera fila. @node \vline @subsection @code{\vline} @findex \vline Dibuja una línea vertical en un entorno @code{tabular} o @code{array} extendiendo la altura y la profundidad completas de la entrada de una fila. Posiblemente también se use en una @@-expresión, aunque su sinónimo barra vertical@tie{}@code{|} es más común. Este comando rara vez se usa en el cuerpo de una tabla; normalmente las líneas verticales de una tabla se especifican en el argumento @var{cols} de @code{tabular} y se anula según sea necesario con @code{\multicolumn} (@pxref{tabular}). El siguiente ejemplo ilustra algunas dificultades. En el segundo de la primera fila la entrada @code{\hfill} mueve @code{\vline} al borde izquierdo de la celda. Pero eso es diferente a ponerlo a medio camino entre las dos columnas, por lo que entre la primera y la segunda columna hay dos reglas verticales, con la del especificador @code{@{c|cc@}} viniendo antes de uno producido por @code{\vline\hfill}. En cambio, la primera fila tercera entrada muestra la forma habitual de poner una barra vertical entre dos columnas. En la segunda fila, @code{ghi} es la entrada más ancha en su columna por lo que en @code{\vline\hfill} el @code{\hfill} no tiene efecto y la línea vertical en esa entrada aparece inmediatamente al lado de @code{g}, sin espacios en blanco. @example \begin@{tabular@}@{c|cc@} x &\vline\hfill y &\multicolumn@{1@}@{|r@}@{z@} \\ % fila 1 abc &def &\vline\hfill ghi % fila 2 \end@{tabular@} @end example @node \cline @subsection @code{\cline} @findex \cline Sinopsis: @example \cline@{@var{i}-@var{j}@} @end example En un entorno @code{array} o @code{tabular}, dibuja una regla horizontal comenzando en column@tie{}@var{i} y terminando en column@tie{}@var{j}. Los guiones, @code{-}, deben aparecer en el argumento obligatorio. Para abarcar una sola columna usa el número dos veces, como con @code{\cline@{2-2@}}. Este ejemplo pone dos líneas horizontales entre la primera y la segunda filas, una línea en la primera columna solamente, y la otra que abarca la tercera y cuarta columnas. Las dos líneas están una al lado de la otra, a la misma altura. @example \begin@{tabular@}@{llrr@} a &b &c &d \\ \cline@{1-1@} \cline@{3-4@} e &f &g &h \end@{tabular@} @end example @node \hline @subsection @code{\hline} @findex \hline Dibuja una línea horizontal del ancho del @code{tabular} adjunto o entorno @code{array}. Se utiliza comúnmente para dibujar una línea arriba, abajo y entre las filas de una tabla. En este ejemplo, la parte superior de la tabla tiene dos reglas horizontales, una arriba de la otra, que abarca ambas columnas. La parte inferior de la tabla tiene una sola regla que abarca ambas columnas. Debido al @code{\hline}, la línea @code{tabular} de la segunda fila que termina con doble barra invertida@tie{}@code{\\} es obligatoria. @example \begin@{tabular@}@{ll@} \hline\hline Béisbol y Medias Rojas \\ Baloncesto y Celtics \\ \hline \end@{tabular@} @end example @node thebibliography @section @code{thebibliography} @EnvIndex{thebibliography} @cindex bibliografía, crear (manualmente) Sinopsis: @example \begin@{thebibliography@}@{@var{widest-label}@} \bibitem[@var{label}]@{@var{cite_key@}} ... \end@{thebibliography@} @end example Elabora una bibliografía o una lista de referencias. Hay dos formas de producir listas bibliográficas. Este entorno es adecuado cuando solo tienes unas pocas referencias y puedes mantener la lista a mano. @xref{Usar BibTeX}, para un enfoque más sofisticado. Esto muestra el entorno con dos entradas. @example Este trabajo se basa en \cite@{latexdps@}. Juntos son \cite@{latexdps, texbook@}. ... \begin@{thebibliography@}@{9@} \bibitem@{latexdps@} Leslie Lamport. \textit@{\LaTeX@{@}: un sistema de preparación de documentos@}. Addison-Wesley, Reading, Massachusetts, 1993. \bibitem@{texbook@} Donald Ervin Knuth. \textit@{El libro de \TeX@}. Addison-Wesley, Reading, Massachusetts, 1983. \end@{thebibliography@} @end example @noindent Esto estiliza la primera referencia como @samp{[1] Leslie ...}, y así @code{... basado en \cite@{latexdps@}} produce la coincidencia @samp{... basado en [1]}. El segundo @code{\cite} produce @samp{[1, 2]}. Debes compilar el documento dos veces para resolver estas referencias. El argumento obligatorio @var{widest-label} es texto que, cuando se compone, es tan ancho como la etiqueta de artículo más ancha producida por los comandos @code{\bibitem}. La tradición es usar @code{9} para bibliografías con menos de 10 referencias, @code{99} para las de menos de 100, etc. @findex \bibname @findex \refname La lista bibliográfica está encabezada por un título como @samp{Bibliography}. Para cambiarlo hay dos casos. En las clases @file{book} y @file{report}, donde la sección de nivel superior es @code{\chapter} y el título predeterminado es @samp{Bibliography}, ese título está en la macro @code{\bibname}. Para @file{article}, donde el nivel superior de la clase de seccionado es @code{\section} y la predeterminada es @samp{References}, el título está en la macro @code{\refname}. Cámbialo redefiniendo el comando, como con @code{\renewcommand@{\refname@}@{Referencias citadas@}}, después @code{\begin@{document@}}. @PkgIndex{babel} Los paquetes de soporte de idiomas como @package{babel} automáticamente redefinen @code{\refname} o @code{\bibname} para ajustarse al idioma seleccionado. @xref{list}, para los parámetros de control de diseño de lista. @menu * \bibitem:: Especifica un elemento de bibliografía. * \cite:: Consulta un elemento de bibliografía. * \nocite:: Incluye un elemento en la bibliografía. * Usar BibTeX:: Generación automática de bibliografías. @end menu @node \bibitem @subsection @code{\bibitem} @findex \bibitem Sinopsis: @example \bibitem@{@var{cite_key}@} @end example @noindent o @example \bibitem[@var{label}]@{@var{cite_key}@} @end example Genera una entrada etiquetada de manera predeterminada por un número generado usando el contador @code{enumi}. La @dfn{clave de cita} @cindex clave de cita @var{cite_key} puede ser cualquier cadena de letras, números y signos de puntuación (pero no comas). @xref{thebibliography}, por ejemplo. Cuando se proporciona, el @var{label} opcional se convierte en la etiqueta de entrada y el contador @code{enumi} no se incrementa. Con este @example \begin@{thebibliography@} \bibitem[Lamport 1993]@{latexdps@} Leslie Lamport. \textit@{\LaTeX@{@}: un sistema de preparación de documentos@}. Addison-Wesley, Reading, Massachusetts, 1993. \bibitem@{texbook@} Donald Ervin Knuth. \textit@{El libro de \TeX@}. Addison-Wesley, Reading, Massachusetts, 1983. \end@{thebibliography@} @end example @noindent la primera entrada tendrá el estilo @samp{[Lamport 1993] Leslie ...} (La cantidad de espacio horizontal que @LaTeX{} deja para la etiqueta depende de el argumento @var{widest-label} del entorno @code{thebibliography}; ve @ref{thebibliography}). De manera similar, @code{... basado en \cite@{latexdps@}} producirá @samp{... basado en [Lamport 1994]}. Si mezclas las entradas de @code{\bibitem} que tienen @var{label} con las que no, entonces @LaTeX{} enumerará las no etiquetadas secuencialmente. En el ejemplo de arriba la entrada @code{texbook} aparecerá como @samp{[1] Donald ...}, a pesar de que es la segunda entrada. Si usas el mismo @var{cite_key} dos veces, obtendrás @samp{Advertencia LaTeX: había etiquetas definidas de forma múltiple}. Bajo el capó, @LaTeX{} recuerda información @var{cite_key} y @var{label} porque @code{\bibitem} la escribe en el archivo auxiliar @file{@var{jobname}.aux} (@pxref{Nombre del trabajo}). Por ejemplo, el ejemplo anterior hace que los dos @code{\bibcite@{latexdps@}@{Lamport, 1993@}} y @code{\bibcite@{texbook@}@{1@}} que aparezcan en ese archivo. El archivo @file{.aux} es leído por el comando @code{\begin@{document@}} y luego la información está disponible para los comandos @code{\cite}. Esto explica por qué necesitas ejecutar @LaTeX{} dos veces para resolver las referencias: una vez para escribirlo y una vez para leerlo. Debido a este algoritmo de dos pasos, cuando agregas un @code{\bibitem} o cambias su @var{cite_key} puedes obtener @samp{Advertencia de LaTeX: la(s) etiqueta(s) puede(n) haber cambiado. Vuelve a ejecutar para obtener referencias cruzadas correctas}. Arréglalo para recompilarlo. @node \cite @subsection @code{\cite} @findex \cite Sinopsis: @example \cite@{@var{keys}@} @end example @noindent o @example \cite[@var{subcite}]@{@var{keys}@} @end example Genera como salida una cita a las referencias asociadas a @var{keys}. La @var{keys} obligatoria es una clave de cita, o una lista de claves de citas separadas por comas (@pxref{\bibitem}). Este @example La fuente definitiva es \cite@{texbook@}. ... \begin@{thebibliography@} \bibitem@{texbook@} Donald Ervin Knuth. \textit@{El libro de \TeX@}. Addison-Wesley, Reading, Massachusetts, 1983. \end@{thebibliography@} @end example @noindent produce una salida como @samp{... la fuente es [1]}. Puedes cambiar la aparición de la cita y de la referencia mediante el uso de estilos de bibliografía si genera automáticamente el entorno @code{thebibliography}. Para más información @ref{Usar BibTeX}. El argumento opcional @var{subcite} se adjunta a la cita. Por ejemplo, @code{Ve 14.3 en \cite[p.~314]@{texbook@}} podría producir @samp{Ve 14.3 en [1, p.@tie{}314]}. Además de lo que aparece en la salida, @code{\cite} escribe información al archivo auxiliar @file{@var{jobname}.aux} (@pxref{Nombre del trabajo}). Por ejemplo, @code{\cite@{latexdps@}} escribe @samp{\citation@{latexdps@}} a ese archivo. Esta información la utiliza Bib@TeX{} para incluir en su lista de referencias solo aquellos trabajos que realmente se han citado; @ref{\nocite} también. Si @var{keys} no está en la información de tu bibliografía, obtendrás @samp{Advertencia de LaTeX: Había referencias no definidas}, y en la salida la cita se muestra como un signo de interrogación en negrita entre corchetes. Hay dos posibles causas. Si has escrito algo mal, como en @code{\cite@{texbok@}} entonces necesitas corregir la ortografía. Por otro lado, si acabas de agregar o modificar información bibliográfica y así cambias el archivo @file{.aux} (@pxref{\bibitem}) entonces la solución puede ser ejecutar @LaTeX{} nuevamente. @node \nocite @subsection @code{\nocite} @findex \nocite Sinopsis: @example @code{\nocite@{@var{keys}@}} @end example No produce salida pero escribe @var{keys} en el archivo auxiliar @file{@var{jobname}.aux} (@pxref{Nombre del trabajo}). El argumento obligatorio @var{keys} es una lista separada por comas de una o más claves de cita (@pxref{\bibitem}). Esta información la utiliza Bib@TeX{} para incluir estos trabajos en tu lista de referencia aunque no los hayas citado explícitamente (@pxref{\cite}). @node Usar BibTeX @subsection Usar Bib@TeX{} @cindex usando Bib@TeX{} @cindex bib@TeX{}, usando @cindex bibliografía, crear (automáticamente) @findex \bibliographystyle @findex \bibliography Como se describe en @code{thebibliography} (@pxref{thebibliography}), un enfoque sofisticado para la gestión de bibliografías es proporcionado por el programa Bib@TeX{}. Esta es solo una introducción; ve la documentación completa sobre CTAN (@pxref{CTAN}). Con Bib@TeX{}, no usas el entorno @code{thebibliography} directamente (@pxref{thebibliography}). En su lugar, incluye estas líneas: @example \bibliographystyle@{@var{bibstyle}@} \bibliography@{@var{bibfile1}, @var{bibfile2}, ...@} @end example @noindent @var{bibstyle} hace referencia a un archivo @file{@var{bibstyle}.bst}, que define cómo se verán tus citas. Los @var{bibstyle}s estándar distribuidos con Bib@TeX{} son: @table @code @item alfa Las etiquetas se forman a partir del nombre del autor y el año de publicación. Los elementos bibliográficos están ordenados alfabéticamente. @item plain Las etiquetas son números enteros. Ordena los elementos bibliográficos alfabéticamente. @item unsrt Como @code{plain}, pero las entradas están en orden de cita. @item abbrv Como @code{plain}, pero etiquetas más compactas. @end table @noindent Existen muchos, muchos otros archivos de estilo Bib@TeX{}, adaptados a las demandas de varias publicaciones. Ve el tema CTAN @url{https://ctan.org/topic/bibtex-sty}. El comando @code{\bibliography} es lo que realmente produce la bibliografía. Su argumento es una lista separada por comas, que se refiere a archivos llamados @file{@var{bibfile1}.bib}, @file{@var{bibfile2}.bib}, @dots{} Estos contienen tu base de datos en formato Bib@TeX{}. Esto muestra un par típico de entradas en ese formato. @example @@book@{texbook, title = @{El @{@{\TeX@}@}book@}, author = @{D.E. Knuth@}, isbn = @{0201134489@}, series = @{Ordenadores \& typesetting@}, year = @{1983@}, publisher = @{Addison-Wesley@} @} @@book@{sexbook, author = @{W.H. Maestros y V.E. Johnson@}, title = @{Respuesta sexual humana@}, year = @{1966@}, publisher = @{Libros Bantam@} @} @end example Solo las entradas bibliográficas a las que se hace referencia a través de @code{\cite} y @code{\nocite} aparecerá en la bibliografía del documento. Así puedes mantener todas tus fuentes juntas en un archivo, o una pequeña cantidad de archivos, y confía en Bib@TeX{} para incluir en este documento solo aquellos que usaste. @cindex @samp{*@}, para todas las claves @code{\nocite}} @findex \nocite @r{@{*@}, para todas las claves} Con Bib@TeX{}, el argumento @var{keys} para @code{\nocite} también puede ser el carácter único @samp{*}. Esto significa citar implícitamente todas las entradas de todas las bibliografías dadas. @menu * Mensajes de error Bib@TeX{}:: @end menu @node Mensajes de error Bib@TeX{} @subsubsection Mensajes de error Bib@TeX{} @cindex Mensajes de error Bib@TeX{} @cindex mensajes de error, de Bib@TeX{} @findex .aux comandos @r{file y Bib@TeX{}} Si olvidas usar @code{\bibliography} o @code{\bibliographystyle} en tu documento (o, menos probablemente, cualquier comando @code{\cite} o @code{\nocite}), Bib@TeX{} emitirá un mensaje de error. Porque Bib@TeX{} se puede usar con cualquier programa, no solo @LaTeX{}, los mensajes de error se refieren a los comandos internos leídos por Bib@TeX{} (desde un archivo @file{.aux}), en lugar de los comandos de nivel de usuario descritos anteriormente. Aquí hay una tabla que muestra los comandos internos mencionados en los errores Bib@TeX{} y los correspondientes comandos a nivel de usuario. @ftable @code @item \bibdata @findex \bibliography @r{y @code{\bibdata} interno} @code{\bibliography} @item \bibstyle @findex \bibliographystyle @r{y @code{\bibstyle} interno} @code{\bibliographystyle} @item \citation @findex \cite @r{y @code{\citation} interna} @findex \nocite @r{y @code{\citation} interna} @code{\cite}, @code{\nocite} @end ftable Por ejemplo, si tu documento no tiene comando @code{\bibliographystyle}, Bib@TeX{} se queja de la siguiente manera: @example No encontré ningún comando \bibstyle --- mientras leía el archivo @var{document}.aux @end example @node theorem @section @code{theorem} @EnvIndex{theorem} @cindex teoremas, tipografía Sinopsis: @example \begin@{theorem@} @var{cuerpo del teorema} \end@{theorem@} @end example Produce @samp{Teorema @var{n}} en negrita seguido del @var{cuerpo del teorema} en cursiva. La posibilidad de numeración para @var{n} se describe en @code{\newtheorem} (@pxref{\newtheorem}). @example \newtheorem@{lem@}@{Lemma@} % en el preámbulo \newtheorem@{thm@}@{Theorem@} ... \begin@{lem@} % en el cuerpo del documento texto del lema \end@{lem@} El siguiente resultado sigue inmediatamente. \begin@{thm@}[Gauss] % pone 'Gauss' entre paréntesis después del encabezado del teorema texto del teorema \end@{thm@} @end example @PkgIndex{amsmath} @PkgIndex{amsthm} La mayoría de los documentos nuevos usan los paquetes @package{amsthm} y @package{amsmath} de la Sociedad Matemática Americana. Entre otras cosas estos paquetes incluyen una gran cantidad de opciones para entornos de teorema, como las opciones de estilo. @node titlepage @section @code{titlepage} @EnvIndex{titlepage} @cindex hacer una página de título @cindex páginas de título, crear Sinopsis: @example \begin@{titlepage@} ... texto y espaciado ... \end@{titlepage@} @end example Crea una página de título, una página sin número de página impreso o encabezado y con las páginas sucesivas numeradas a partir de la página uno. En este ejemplo, todo el formato, incluido el espaciado vertical, se deja a el autor. @example \begin@{titlepage@} \vspace*@{\stretch@{1@}@} \begin@{center@} @{\huge\bfseries Tesis \\[1ex] título@} \\[6.5ex] @{\large\bfseries Nombre del autor@} \\ \vspace@{4ex@} Tesis enviada a \\[5pt] \textit@{Nombre de la universidad@} \\[2cm] en cumplimiento parcial para la concesión del título de \\[2cm] \textsc@{\Gran Doctor en Filosofía@} \\[2ex] \textsc@{\large Matemáticas@} \\[12ex] \vfill Departamento de Matemáticas \\ Dirección \\ \vfill \today \end@{center@} \vspace@{\stretch@{2@}@} \end@{titlepage@} @end example En su lugar, produce una página de título estándar sin un entorno @code{titlepage}, usa @code{\maketitle} (@pxref{\maketitle}). @node verbatim @section @code{verbatim} @EnvIndex{verbatim} @cindex texto literal @cindex simular texto mecanografiado @cindex texto mecanografiado, simular @cindex código, tipografía @cindex programas informáticos, composición tipográfica Sinopsis: @example \begin@{verbatim@} @var{texto-literal} \end@{verbatim@} @end example Un entorno de creación de párrafos en el que @LaTeX{} produce como salida exactamente lo que escribes como entrada. Por ejemplo, dentro de @var{texto-literal} el carácter backslash@tie{}@code{\} no inicia los comandos, imprime una @samp{\}, y se toman literalmente los retornos de carro y espacios en blanco. La salida aparece en una letra de tipo máquina de escribir monoespaciada (@code{\tt}). @example \begin@{verbatim@} Símbolo juramento: %&$#?@!. \end@{verbatim@} @end example La única restricción en @code{texto-literal} es que no puede incluir la cadena @code{\end@{verbatim@}}. @PkgIndex{cprotect} No puedes usar el entorno textual en el argumento de las macros, por instancia en el argumento de un @code{\section}. Esto no es lo mismo que los comandos son frágiles (@pxref{\protect}), en lugar de eso, simplemente no puede funcionar, ya que el entorno @code{verbatim} cambia el régimen de catcode antes de tratar su contenido, y restaurarlo inmediatamente después, sin embargo, con un argumento macro, el contenido del argumento ya se ha convertido en una lista de tókenes a lo largo del régimen catcode vigente cuando se llamó a la macro. Sin embargo, el paquete @package{cprotect} puede ayudar con esto @PkgIndex{listings} @PkgIndex{minted} Un uso común de la entrada textual es escribir código informático. Existen paquetes que son una mejora del entorno @code{verbatim}. Por ejemplo, una mejora es permitir la inclusión palabra por palabra de archivos, o partes de esos archivos. Dichos paquetes incluyen @package{listings}, y @package{minted}. @PkgIndex{fancyvrb} @PkgIndex{verbatimbox} Un paquete que proporciona muchas más opciones para entornos textuales es @package{fancyvrb}. Otro es @package{verbatimbox}. Para obtener una lista de todos los paquetes relevantes, consulta CTAN (@pxref{CTAN}). @menu * \verb:: La forma macro del entorno @code{verbatim}. @end menu @node \verb @subsection @code{\verb} @findex \verb @cindex texto literal, en línea Sinopsis: @example \verb @var{char} @var{texto-literal} @var{char} \verb* @var{char} @var{texto-literal} @var{char} @end example Compone el @var{texto-literal} tal como se ingresa, incluidos los caracteres especiales y espacios, usando la letra de máquina de escribir (@code{\tt}). Este ejemplo muestra dos diferentes invocaciones de @code{\verb}. @example ¡Esto es \verb! ¡Literalmente! la calabaza más grande de todos los tiempos. Y esta es la mejor calabaza, \verb+¡literalmente!+ @end example @noindent El primer @code{\verb} tiene su @var{texto-literal} rodeado de signos de exclamación, @code{!}. En cambio, el segundo usa más, @code{+}, porque el signo de exclamación es parte del @code{texto-literal}. El delimitador de un solo carácter @var{char} rodea @var{texto-literal}---debe ser el mismo carácter antes y después. No hay espacios entre @code{\verb} o @code{\verb*} y @var{char}, o entre @var{char} y @var{texto-literal}, o entre @var{texto-literal} y la segunda aparición de @var{char} (la sinopsis muestra un espacio solo para distinguir un componente del otro). El delimitador no debe aparecer en @var{texto-literal}. El @var{texto-literal} no puede incluir un salto de línea. @cindex espacio visible La forma @code{*} se diferencia solo en que los espacios se imprimen con un carácter espacial. @tex (Es decir, {\tt\char`\}}). @end tex El resultado de esto incluirá un espacio visible en ambos lados de la palabra @samp{con}: @example El primer argumento del comando es \verb*!filename con extensión! y ... @end example @PkgIndex{url} Para escribir direcciones de Internet, URL, el paquete @package{url} es una mejor opción que el comando @code{\verb}, ya que permite saltos de línea. @PkgIndex{listings} @PkgIndex{minted} Para el código informático hay muchos paquetes con ventajas sobre @code{\verb}. Uno es @package{listings}, otro es @package{minted}. @PkgIndex{cprotect} No puedes usar @code{\verb} en el argumento de una macro, por ejemplo en el argumento de una @code{\section}. No es cuestión de que @code{\verb} sea frágil (@pxref{\protect}), en lugar de eso, simplemente no puede trabajar, ya que el comando @code{\verb} cambia el régimen de catcode antes de leer su argumento, y restaurarlo inmediatamente después, sin embargo con un argumento de macro el contenido del argumento ya ha sido convertido a una lista de tókenes a lo largo del régimen catcode vigente cuando se llamó a la macro. Sin embargo, el paquete @package{cprotect} puede ayudar con esto. @node verse @section @code{verse} @EnvIndex{verse} @cindex poesía, un entorno para Sinopsis: @example \begin@{verse@} @var{line1} \\ @var{line2} \\ ... \end@{verse@} @end example Un entorno para la poesía. Aquí hay dos líneas de Romeo y Julieta de Shakespeare. @example Entonces sé claramente que el querido amor de mi corazón está \\ establecido sobre la bella hija del rico Capuleto. @end example @findex \\ @r{(para @code{verse})} Separa las líneas de cada estrofa con @code{\\} y usa una o más líneas en blanco para separar las estrofas. @example \begin@{verse@} \makebox[\linewidth][c]@{\textit@{No cierres tus puertas@} ---Walt Whitman@} \\[1\baselineskip] No cierres tus puertas orgullosa biblioteca, \\ Por lo que faltaba en todos tus estantes bien llenos, \\ \qquad todavía más necesitado, traigo, \\ A partir de la guerra emergente, un libro que he hecho, \\ Las palabras de mi libro nada, la deriva de él todo, \\ Un libro separado, no vinculado con el resto ni sentido por el intelecto, \\ Pero a ustedes, las latencias incalculables les emocionarán en cada página. \end@{verse@} @end example @noindent La salida tiene márgenes sangrados a la izquierda y a la derecha, los párrafos no tienen sangría y el texto no está justificado a la derecha. @node Salto de línea @chapter Salto de línea @cindex salto de linea @cindex romper líneas Lo primero que hace @LaTeX{} al procesar texto ordinario es traducir tu archivo de entrada a una secuencia de glifos y espacios. Para producir un documento impreso, esta secuencia se debe dividir en líneas (y estas líneas se deben dividir en páginas). @LaTeX{} normalmente hace el salto de línea (y de página) en el texto del cuerpo pero en algunos entornos fuerza manualmente los saltos de línea. Un flujo de trabajo común es obtener una versión final del contenido del documento antes de realizar una pasada final y considerar los saltos de línea (y saltos de página). Esto difiere del procesamiento de palabras, donde estás formateando texto a medida que lo ingresas. Aplazar esto hasta el final evita un montón saltos de línea que cambiarán de todos modos. @c Texto alternativo propuesto aquí: @c https://tug.org/pipermail/latexrefman/2021q3/000803.html este texto @c es el de la versión francesa. @ignore Un flujo de trabajo común con LaTeX es obtener una versión final de el contenido del documento antes de realizar una pasada final y considerar los saltos de línea (y saltos de página). La mayoría de la gente no considera a LaTeX como un procesador de palabras, porque no muestra la salida al instante. Sin embargo diferenciar la salida anima al usuario a posponer hasta el final ajustes de formato, y por lo tanto evita un montón de jugo con saltos que cambiarán de todos modos. @noindent Diferir la salida tiene otras ventajas: permite no hacer compromisos sobre la composición tipográfica, lo cual garantiza que lo que ves exactamente es lo que obtienes, y también ayuda a los autores a concentrar su atención en escribir o leer en lugar de distraerlo haciendo ambas cosas al mismo tiempo. @end ignore @menu * \\:: Inicia una nueva línea. * \obeycr y \restorecr:: Hace que cada línea de entrada comience una nueva línea de salida. * \newline:: Rompe la linea * \- (separación silábica):: Inserta separación silábica explícita. * \discretionary:: Control explícito del carácter de guión. * \fussy y \sloppy:: Es más o menos particular con el salto de línea. * \hyphenation:: Dice a @LaTeX{} cómo dividir en sílabas una palabra. * \linebreak y \nolinebreak:: Fuerza y evita saltos de línea. @end menu @node \\ @section @code{\\} @findex \\ @r{(fuerza el salto de línea)} @cindex nueva línea, comenzando @cindex salto de línea, forzando Sinopsis, una de: @example \\ \\[@var{morespace}] @end example @noindent o una de: @example \\* \\*[@var{morespace}] @end example Finaliza la línea actual. El argumento opcional @var{morespace} especifica espacio vertical adicional que se insertará antes de la siguiente línea. Esta es un longitud elástica (@pxref{Longitudes}) y puede ser negativa. El texto antes del salto de línea se establece en su longitud normal, es decir, no se estira para completar el ancho de la línea. Este comando es frágil (@pxref{\protect}). @example \title@{Mi historia: \\[0.25in] una historia de aflicción@} @end example @noindent La forma destacada, @code{\\*}, le dice a @LaTeX{} que no inicie una nueva página entre las dos líneas, emitiendo un @code{\nobreak}. Los saltos de línea explícitos en el cuerpo del texto principal son inusuales en @LaTeX{}. En particular, no comiences nuevos párrafos con @code{\\}. En lugar de eso, deja una línea en blanco entre los dos párrafos. Y no pongas una secuencia de @code{\\}'s para hacer espacio vertical. En su lugar, usa @code{\vspace@{@var{length}@}} o @code{\leavevmode\vspace@{@var{length}@}} o @code{\vspace*@{@var{length}@}} si deseas que no se arroje el espacio en la parte superior de una nueva página (@pxref{\vspace}). El comando @code{\\} se usa principalmente fuera del flujo principal de texto como en un entorno @code{tabular} o @code{array} o en un entorno de la ecuación. El comando @code{\\} es un sinónimo de @code{\newline} (@pxref{\newline}) en circunstancias ordinarias (un ejemplo de una excepción es la columna @code{p@{...@}} en un entorno @code{tabular}; @pxref{tabular}). @c crédito: David Carlisle https://tex.stackexchange.com/a/82666 El comando @code{\\} es una macro y su definición cambia según el contexto para que su definición en texto normal, un entorno @code{center}, un @code{flushleft} y @code{tabular} son todos diferentes. En texto normal, cuando fuerza un salto de línea, esencialmente es una abreviatura para @code{\newline}. No finaliza el modo horizontal ni finaliza el párrafo, simplemente inserta un poco de pegamento y penalizaciones para que cuando el párrafo termine, se produzca un salto de línea en ese punto, con la breve línea rellena con espacios en blanco. Obtienes @samp{Error de LaTeX: No hay línea para terminar aquí} si usas @code{\\} para solicitar una nueva línea, en lugar de finalizar la línea actual. Un ejemplo es si tienes @code{\begin@{document@}\\} o, más probablemente, algo como esto. @example \begin@{center@} \begin@{minipage@}@{0.5\textwidth@} \\ En ese espacio vertical pon tu marca. \end@{minipage@} \end@{center@} @end example @noindent Solucionalo reemplazando la doble barra invertida con algo como @code{\vspace@{\baselineskip@}}. @node \obeycr y \restorecr @section @code{\obeycr} y @code{\restorecr} @anchor{\obeycr} @anchor{\restorecr} @findex \obeycr @findex \restorecr @cindex nueva línea, salida como entrada El comando @code{\obeycr} hace un retorno en el archivo de entrada (@samp{^^M}, internamente) lo mismo que @code{\\}, seguido de @code{\relax}. Así que cada nueva línea en la entrada también será una nueva línea en la salida. El comando @code{\restorecr} restaura el comportamiento normal de salto de línea. Esta no es la forma de mostrar texto textual o código informático. Usa @code{verbatim} (@pxref{verbatim}) en su lugar. Con los valores predeterminados habituales de @LaTeX{}, este @example aaa bbb \obeycr ccc ddd eee \restorecr fff ggg hhh iii @end example @noindent produce una salida como esta. @example aaa bbb ccc ddd eee fff ggg hhh iii @end example @noindent Las sangrías son sangrías de párrafo. @node \newline @section @code{\newline} @findex \newline @cindex nueva línea, comenzando (modo párrafo) En texto ordinario, esto termina una línea de una manera que no se justifica a la derecha. Para que el texto anterior al final de la línea no se estire, es decir, en modo de párrafo (@pxref{Modos}), el comando @code{\newline} es equivalente a doble barra invertida (@pxref{\\}). Este comando es frágil (@pxref{\protect}). Sin embargo, los dos comandos son diferentes dentro de un entorno @code{tabular} o entorno @code{array}. En una columna con un especificador que produce un cuadro de párrafo como típicamente @code{p@{...@}}, @code{\newline} inserta un final de línea dentro de la columna; es decir, no rompe toda la fila tabular. Para dividir toda la fila, usa @code{\\} o su equivalente @code{\tabularnewline}. Esto imprimirá @samp{Nombre:} y @samp{Dirección:} como dos líneas en una sola celda de la tabla. @example \begin@{tabular@}@{p@{1in@}@@@{\hspace@{2in@}@}p@{1in@}@} Nombre: \newline Dirección: &Date: \\ \hline \end@{tabular@} @end example @noindent @samp{Date:} se alineará con la línea base con @samp{Nombre:}. @node \- (separación silábica) @section @code{\-} (guion discrecional) @findex \- @r{(separación silábica)} @cindex separación silábica, forzando Le dice a @LaTeX{} que puede separar la palabra en ese punto. Cuando insertas comandos @code{\-} en una palabra, la palabra solo se dividirá con guiones en esos puntos y en ninguno de los otros puntos de guiones que @LaTeX{} podría haber elegido de otro modo. Este comando es robusto (@pxref{\protect}). @LaTeX{} es bueno separando guiones y generalmente encuentra la mayoría de los puntos de separación con guiones, mientras que casi nunca se usa uno incorrecto. El comando @code{\-} es para casos excepcionales. Por ejemplo, @LaTeX{} normalmente no separa palabras que contienen un guión. Abajo, la palabra larga y con guión significa que @LaTeX{} tiene que poner en espacios inaceptablemente grandes para colocar la columna estrecha. @example \begin@{tabular@}@{rp@{1.75in@}@} Isaac Asimov &La cepa del antiintelectualismo % an\-ti-in\-te\-lec\-tu\-al\-ismo ha sido un hilo constante que se abre camino a través de nuestra vida política y cultural, alimentada por la falsa noción de que democracia significa que 'mi ignorancia es tan buena como tu conocimiento'. \end@{tabular@} @end example @noindent Comentar la tercera línea y descomentar la cuarta hace mucho mejor ajuste. El comando @code{\-} solo permite que @LaTeX{} rompa allí, no requiere que se rompa allí. Puedes forzar una división con algo como @code{Hef-\linebreak feron}. Por supuesto, si luego cambias el texto, entonces este salto de línea forzado puede parecer fuera de lugar, por lo que este enfoque requiere sumo cuidado. @node \discretionary @section @code{\discretionary} (punto de separación silábica generalizada) @cindex separación silábica, discrecional @cindex discrecional, separación silábica Sinopsis: @example \discretionary@{@var{pre-break}@}@{@var{post-break}@}@{@var{no-break}@} @end example Maneja cambios de palabras alrededor de guiones. Este comando no se usa a menudo en documentos @LaTeX{}. Si se produce un salto de línea en el punto donde aparece @code{\discretionary} entonces @TeX{} pone @var{pre-break} al final de la línea actual y pone @var{post-break} al comienzo de la siguiente línea. Si no hay salto de linea aquí entonces @TeX{} pone @var{no-break}. En @samp{difficult} las tres letras @code{ffi} forman una ligadura. Pero no obstante, @TeX{} se puede dividir entre las dos @samp{f} con esto. @example di\discretionary@{f-@}@{fi@}@{ffi@}cult @end example Ten en cuenta que los usuarios no tienen que hacer esto. Normalmente se maneja automáticamente por el algoritmo de separación silábica de @TeX{}. @c xxx TODO, completa este nodo, ve LaTeX-fr (copiar y pegar a @c continuación, con letra acentuada escapada) @ignore @c Los argumentos de @code{\discretionary} solo pueden contener @c caracteres, recuadros o cr@enages. @c @c El comando @code{\discretionary} permite controlar finamente la @c medida en casos donde ni el control estándar es suficiente de la @c censura hace el algoritmo @TeX{} censura y las reglas para censuras @c dadas por los paquetes de gestión de idiomas, ni los medios @c explícitos de control ofrecidos por los comandos @c @code{\hyphenation} (@pxref{\hyphenation}) y @code{\-} (@pxref{\- @c (guion),\- (censura @`a gr@'e)}). @c @c El uso típico de @code{\discretionary} es, por ejemplo, para @c controlar la censura dentro de una fórmula matemática en modo línea @c (ve también @ref{Math miscellany,Miscellan@'ees math@'ematique @c (entr@'ee \*)}). Abajo un ejemplo de control del censura dentro de @c una dirección reticular, donde autorizamos la censura sobre los @c oblicuos pero usando una barra invertida morada al lugar@tie{}del @c guión: @c @c @example @c \documentclass@{article@} @c \usepackage[T1]@{fontenc@} @c \usepackage[utf8]@{inputenc@} @c \usepackage@{xcolor@} @c \usepackage@{hyperref@} @c \usepackage@{french@} @c \newcommand*\DiscrSlash@{\discretionary@{\mbox@{\textcolor @c @{purple@}@{\textbackslash@}@}@}@{/@}@{/@}@} @c \begin@{document@} @c Allez donc @`a \href@{http://une/tr\%c3\%A8s/tr\%c3\%A8s/longue% @c /mais/vraiment/tr\%c3\%A8s/longue/adresse/r\%C3\%A9ticulaire% @c /index.html@}@{http://une\DiscrSlash tr@`es\DiscrSlash tr@`es\DiscrSlash @c longue\DiscrSlash mais\DiscrSlash vraiment\DiscrSlash @c tr@`es\DiscrSlash longue\DiscrSlash adresse\DiscrSlash @c r@'eticulaire\DiscrSlash index.html@} @c \end@{document@} @c @end example @end ignore @node \fussy y \sloppy @section @code{\fussy} y @code{\sloppy} @anchor{\fussy} @anchor{\sloppy} @findex \fussy @findex \sloppy @cindex saltos de línea, cambiando Declaraciones para hacer que @TeX{} sea más o menos quisquilloso con el salto de línea. Declarar @code{\fussy} por lo general evita demasiado espacio entre palabras, a costa de alguna que otra caja llena en exceso. En cambio, @code{\sloppy} evita cajas demasiado llenas mientras sufre espaciado interpalabras sueltas. El valor predeterminado es @code{\fussy}. El salto de línea en un párrafo es controlado por cualquier declaración que esté vigente al final del párrafo, es decir, en la línea en blanco o @code{\par} o ecuación mostrada que termina ese párrafo. Entonces, para afectar los saltos de línea, incluye ese material de final de párrafo en el entorno del párrafo. @menu * sloppypar:: Versión de entorno del comando \sloppy. @end menu @node sloppypar @subsection @code{sloppypar} @EnvIndex{sloppypar} @cindex entorno descuidado Sinopsis: @example \begin@{sloppypar@} ... párrafos ... \end@{sloppypar@} @end example Compone los párrafos con @code{\sloppy} en efecto (@pxref{\fussy y \sloppy}). Usa esto para ajustar localmente el salto de línea, para evitar los errores @samp{Caja demasiado llena} o @samp{Caja incompleta}. El ejemplo es simple. @example \begin@{sloppypar@} Con su plan para la mañana así resuelto, se sentó en silencio a su libro después del desayuno, resolviendo permanecer en el mismo lugar y el mismo empleo hasta que el reloj dio la una; y por costumbre muy poco incomodado por los comentarios y exclamaciones de la Sra.\ Allen, cuyo vacío de mente e incapacidad para pensar eran tales, que como ella nunca hablaba mucho, por lo que nunca podría estar completamente silencioso; y, por lo tanto, mientras ella estaba sentada en su trabajo, si perdiera su aguja o le rompía el hilo, si oía un carruaje en la calle, o vio una mota en su vestido, debe observarla en voz alta, ya sea nadie tenía tiempo para responderle o no. \end@{sloppypar@} @end example @node \hyphenation @section @code{\hyphenation} @findex \hyphenation @cindex separación silábica, definiendo Sinopsis: @example \hyphenation@{@var{word1} ...@} @end example Declara los puntos de separación de palabras permitidos dentro de las palabras de la lista. Las palabras en esa lista están separadas por espacios. Muestra puntos permitidos para separación silábica con un guión, @code{-}. Aquí hay un ejemplo: @example \hyphenation@{hat-er il-lit-e-ra-ti tru-th-i-ness@} @end example Utiliza letras minúsculas. @TeX{} solo dividirá si la palabra coincide exactamente, no se intentan inflexiones. Múltiples @code{\hyphenation} los comandos se acumulan. @c xx Vuelve a alinear en LaTeX-fr que también menciona fontenc, y eso @c babel/polyglossia ya carga los patrones de separación de sílabas, y @c tienes que declarar solo palabras no existentes. @node \linebreak y \nolinebreak @section @code{\linebreak} y @code{\nolinebreak} @anchor{\linebreak} @anchor{\nolinebreak} @findex \linebreak @findex \nolinebreak @cindex saltos de línea, forzando @cindex saltos de línea, previniendo Sinopsis, una de: @example \linebreak \linebreak[@var{cero-a-cuatro}] @end example @noindent o uno de estos. @example \nolinebreak \nolinebreak[@var{cero-a-cuatro}] @end example Anima o desalienta un salto de línea. El @var{cero-a-cuatro} opcional es un número entero entre 0 y 4 que te permite suavizar la instrucción. El valor predeterminado es 4, por lo que sin el argumento opcional estos comandos fuerzan o previenen por completo la ruptura. Pero por ejemplo, @code{\nolinebreak[1]} es una sugerencia de que otro lugar puede ser mejor. Cuanto mayor sea el número, más insistente será la solicitud. Ambos comandos son frágiles (@pxref{\protect}). Aquí le decimos a @LaTeX{} que un buen lugar para poner un salto de línea es después del texto legal estándar. @example \boilerplatelegal@{@} \linebreak[2] Alentamos especialmente las solicitudes de miembros de tradicionalmente grupos subrepresentados. @end example Cuando emite @code{\linebreak}, los espacios en la línea se estiran para que el punto de quiebre alcance el margen derecho. @xref{\\} y@tie{}@ref{\newline}, para que los espacios no se extiendan. @node Salto de página @chapter Salto de página @cindex salto de página @cindex rompiendo páginas Normalmente, @LaTeX{} automáticamente se encarga de dividir la salida en páginas con su habitual aplomo. Pero si estás escribiendo comandos, o ajustar la versión final de un documento, es posible que debas entender cómo influir en sus acciones. @c crédito: H Vogt https://tex.stackexchange.com/a/115563 @cindex badness El algoritmo de @LaTeX{} para dividir un documento en páginas es más complejo que simplemente esperar hasta que haya suficiente material para llenar una página y producir el resultado. En cambio, @LaTeX{} compone más material que cabría en la página y luego elige un salto que es óptimo en alguna forma (tiene el @dfn{badness} más pequeño). Un ejemplo de la ventaja de este enfoque es que si la página tiene algún espacio vertical que se puede estirar o encoger, como con tiras de goma entre párrafos, entonces @LaTeX{} lo puede usar para evitar líneas viudas (donde comienza una nueva página con la última línea de un párrafo; @LaTeX{} puede exprimir la línea adicional en la primera página) y huérfanas (donde la primera línea del párrafo está al final de una página; @LaTeX{} puede estirar el material de la primera página para que la línea extra caiga en la segunda página). Otro ejemplo es donde @LaTeX{} usa la reducción vertical disponible para caber en una página que no solo el encabezado de una nueva sección, pero también las dos primeras líneas de esa sección. Pero @LaTeX{} no optimiza el conjunto de saltos de páginas del documento completo. Entonces puede suceder que el salto de la primera página sea genial pero el segundo sea pésimo; para romper la página actual @LaTeX{} no ve tan adelante como el siguiente salto de página. Así que de vez en cuando es posible que desees influir en los saltos de página al preparar una versión final de un documento. @xref{Composición}, para obtener más material relevante para el salto de página. @menu * \clearpage y \cleardoublepage:: Inicia una nueva página; expulsa flotantes. * \newpage:: Inicia una nueva página. * \enlargethispage:: Agranda un poco la página actual. * \pagebreak y \nopagebreak:: Forzar y evitar saltos de página. @end menu @node \clearpage y \cleardoublepage @section @code{\clearpage} y @code{\cleardoublepage} @anchor{\clearpage} @findex \clearpage @cindex enjuagar flotantes y comenzar una página @cindex comenzar una nueva página y borrar flotantes @anchor{\cleardoublepage} @findex \cleardoublepage @cindex comenzando en una página de la derecha Sinopsis: @example \clearpage @end example @noindent o @example \cleardoublepage @end example Finaliza la página actual y genera todas las figuras flotantes pendientes y tablas (@pxref{Flotantes}). Si hay demasiados flotantes para caber en la página entonces @LaTeX{} pondrá páginas adicionales que solo contienen flotantes. En impresión a doble cara, @code{\cleardoublepage} también hace que la siguiente página de contenido sea una página de la derecha, una página impar, si es necesario insertando una página en blanco. El comando @code{\clearpage} es robusto mientras @code{\cleardoublepage} es frágil (@pxref{\protect}). Los saltos de página de @LaTeX{} están optimizados, por lo que normalmente solo usas este comando en el cuerpo de un documento para pulir la versión final, o dentro de comandos. @c crédito: https://www.tex.ac.uk/FAQ-reallyblank.html El comando @code{\cleardoublepage} colocará una página en blanco, pero tendrá los encabezados y pies de página en ejecución. Para obtener una página con espacio en blanco, usa este comando. @example \let\origdoublepage\cleardoublepage \newcommand@{\clearemptydoublepage@}@{% \clearpage @{\pagestyle@{empty@}\origdoublepage@}% @} @end example @noindent Si deseas que el comando @code{\chapter} estándar de @LaTeX{} haga esto, entonces agrega la línea @code{\let\cleardoublepage\clearemptydoublepage}. (Por supuesto, esto afecta todos los usos de @code{\cleardoublepage}, no solo uno en @code{\chapter}). El comando @code{\newpage} (@pxref{\newpage}) también termina la página actual, pero sin borrar los flotantes pendientes. Y, si @LaTeX{} está en modo de dos columnas, entonces @code{\newpage} finaliza la columna actual mientras @code{\clearpage} y @code{\cleardoublepage} finalizan la página actual. @node \newpage @section @code{\newpage} @findex \newpage @cindex nueva página, comenzando @cindex comenzando una nueva página Sinopsis: @example \newpage @end example Finaliza la página actual. Este comando es robusto (@pxref{\protect}). Los saltos de página de @LaTeX{} están optimizados, por lo que normalmente solo usas este comando en el cuerpo de un documento para pulir la versión final, o dentro de comandos. Mientras que los comandos @code{\clearpage} y @code{\cleardoublepage} también finalizan la página actual, además borran los flotantes pendientes (@pxref{\clearpage y \cleardoublepage}). Y, si @LaTeX{} está en modo de dos columnas, entonces @code{\clearpage} y @code{\cleardoublepage} terminan la página actual, posiblemente dejando una columna vacía, mientras @code{\newpage} solo finaliza la columna actual. A diferencia de @code{\pagebreak} (@pxref{\pagebreak y \nopagebreak}), el comando @code{\newpage} hará que la nueva página comience justo donde se solicitó. Este @example Hace cuarenta y siete años nuestros padres dieron a luz en este continente, \newpage \noindent una nueva nación, concebida en Libertad, y dedicada a la proposición de que todos los hombres son creados iguales. @end example @noindent hace que una nueva página comience después de @samp{continente}, y la línea cortada no se justifica a la derecha. Además, @code{\newpage} no estira verticalmente la página, como lo hace @code{\pagebreak}. @node \enlargethispage @section @code{\enlargethispage} @findex \enlargethispage @cindex ampliar la página actual Sinopsis, una de: @example \enlargethispage@{@var{size}@} \enlargethispage*@{@var{size}@} @end example Amplía el @code{\textheight} para la página actual. El argumento requerido @var{size} debe tener una longitud rígida (@pxref{Longitudes}). Puede ser positivo o negativo. Este comando es frágil (@pxref{\protect}). Una estrategia común es esperar hasta tener el texto final de un documento y, a continuación, pásalo ajustando los saltos de línea y de página. Este comando te permite cierto margen de maniobra en el tamaño de la página. Esto permitirá una línea adicional en la página actual. @example \enlargethispage@{\baselineskip@} @end example La forma con estrella @code{\enlargesthispage*} intenta exprimir el material juntos en la página tanto como sea posible, para el caso de uso común de obtener una línea más en la página. Esto se usa a menudo junto con un @code{\pagebreak} explícito. @node \pagebreak y \nopagebreak @section @code{\pagebreak} y @code{\nopagebreak} @anchor{\pagebreak} @anchor{\nopagebreak} @findex \pagebreak @findex \nopagebreak @cindex salto de página, forzando @cindex salto de página, evitando Sinopsis: @example \pagebreak \pagebreak[@var{cero-a-cuatro}] @end example @noindent o @example \nopagebreak \nopagebreak[@var{cero-a-cuatro}] @end example Anima o desalienta un salto de página. El @var{cero-a-cuatro} opcional es un número entero que te permite suavizar la solicitud. El valor predeterminado es 4, de modo que sin el argumento opcional estos comandos fuerzan o previenen el quiebre. Pero, por ejemplo, @code{\nopagebreak[1]} sugiere a @LaTeX{} que otro lugar podría ser preferible. Cuanto mayor sea el número, más insistente la petición. Ambos comandos son frágiles. (@pxref{\protect}). Los finales de página de @LaTeX{} están optimizados, por lo que normalmente solo usas estos comandos en el cuerpo de un documento para pulir la versión final, o dentro de comandos. Si los usas dentro de un párrafo, se aplica al punto siguiente de la línea en la que aparecen. Así que esto @example Hace cuarenta y siete años nuestros padres dieron a luz en este continente, \pagebreak una nueva nación, concebida en Libertad, y dedicada a la proposición que todos los hombres son creados iguales. @end example @noindent no da un salto de página en @samp{continente}, sino en @samp{nación}, ya que ahí es donde @LaTeX{} rompe esa línea. Además, con @code{\pagebreak} el espacio vertical en la página se estira donde sea posible para que se extienda hasta el fondo del margen normal. Esto puede parecer extraño, y si @code{\flushbottom} está en efecto esto puede hacer que obtengas @samp{Infralleno \vbox (incorrecto 10000) ocurrió mientras \output está activo}. @xref{\newpage}, para un comando que no tiene estos efectos. @findex \samepage @findex samepage @r{entorno} (Hay una declaración obsoleta @code{\samepage}, que intenta solo permitir un salto de línea entre dos párrafos. Hay un entorno relacionado @code{samepage}, también obsoleto. Ninguno de estos funciona de manera confiable. Para más información sobre cómo mantener el material en la misma página, consulta la entrada de preguntas frecuentes @url{https://texfaq.org/FAQ-nopagebrk}). @node Notas al pie @chapter Notas al pie @cindex notas al pie, crear Coloca una nota a pie de página en la parte inferior de la página actual, como aquí. @example No@"{e}l Coward bromeó diciendo que tener que leer una nota al pie es como tener que bajar las escaleras para abrir la puerta, mientras está en medio de hacer amor.\footnote@{% No sabría, no leo las notas al pie.@} @end example Puedes poner varias notas al pie de página en una página. Si el texto de la nota al pie se vuelve demasiado largo, entonces fluirá a la página siguiente. También puedes producir notas al pie combinando @code{\footnotemark} y los comandos @code{\footnotetext}, que es útil en casos con circunstancias especiales. Para que las referencias bibliográficas salgan a pie de página es necesario incluir un estilo bibliográfico con ese comportamiento (@pxref{Usar BibTeX}). @menu * \footnote:: Inserta una nota al pie. * \footnotemark:: Solamente inserta la marca de nota al pie. * \footnotetext:: Solo inserta el texto de la nota al pie. * Notas a pie de página en los títulos de las secciones:: Títulos de capítulo o sección. * Notas al pie en una tabla:: Notas al pie de la tabla. * Notas al pie de notas al pie:: Varias clases de notas al pie. @end menu @node \footnote @section @code{\footnote} @findex \footnote Sinopsis, una de: @example \footnote@{@var{text}@} \footnote[@var{number}]@{@var{text}@} @end example Coloca @var{text} como nota al pie al final de la página actual. @example Hay más de mil notas a pie de página en el libro de Gibbon. \textit@{Decadencia y Caída del Imperio Romano@}.\footnote@{% Después de leer una versión anterior con notas finales, David Hume se quejó: ``Uno también está plagado de sus Notas, según el presente Método de imprimir el Libro'' y sugirió que ``sólo para ser impreso en el margen o en la parte inferior de la página.''@} @end example El argumento opcional @var{number} te permite especificar el número de la nota al pie. Si usas esto, entonces @LaTeX{} no incrementa el contador @code{footnote}. @cindex notas al pie, símbolos en lugar de números @findex \fnsymbol@r{, y notas al pie} @findex \@@fnsymbol De manera predeterminada, @LaTeX{} usa números arábigos como marcadores de notas al pie. Cambia esto con algo como @code{\renewcommand@{\thefootnote@}@{\fnsymbol@{footnote@}@}}, que utiliza una secuencia de símbolos (@pxref{\alph \Alph \arabic \roman \Roman \fnsymbol}). Para que este cambio sea global, ponlo en el preámbulo. Si realizas el cambio local, entonces es posible que desees restablecer el contador con @code{\setcounter@{footnote@}@{0@}}. @LaTeX{} determina el espaciado de las notas al pie con dos parámetros. @cindex parámetros de nota al pie @cindex parámetros, para notas al pie @ftable @code @item \footnoterule @anchor{footnote footnoterule} Produce la regla que separa el texto principal de una página del texto de la notas al pie de la página. Dimensiones predeterminadas en las clases de documentos estándar (excepto @code{slides}, donde no aparece) es: espesor vertical de @code{0.4pt}, y tamaño horizontal de @code{0.4\columnwidth} de largo. Cambia la regla con algo como esto. @c Agregación de créditos: https://tex.stackexchange.com/a/21917 @example \renewcommand@{\footnoterule@}@{% Kerns evita el espacio vertical \kern -3pt % Este -3 es negativo \hrule width \textwidth height 1pt % de la suma de este 1 \kern 2pt@} % y este 2 @end example @item \footnotesep @anchor{footnote footnotesep} @cindex strut La altura del puntal colocado al comienzo de la nota al pie. (@pxref{\strut}). De manera predeterminada, esto se establece en el puntal normal para @code{\footnotesize} fuentes (@pxref{Tamaños de los tipos de letra}), por lo tanto no hay espacio adicional entre las notas al pie. Este es @samp{6.65pt} para @samp{10pt}, @samp{7.7pt} para @samp{11pt} y @samp{8.4pt} para @samp{12pt}. Cambio como con @code{\setlength@{\footnotesep@}@{11pt@}}. @end ftable El comando @code{\footnote} es frágil (@pxref{\protect}). El valor predeterminado de @LaTeX{} pone muchas restricciones sobre dónde puedes usar un @code{\footnote}; por ejemplo, no lo puedes usar en un argumento para un comando de seccionado como @code{\chapter} (solo se puede usar en modo de párrafo; @pxref{Modos}). Hay algunas soluciones; ve las siguientes secciones. @cindex footnotes, en una minipágina @cindex mpfootnote contador En un entorno @code{minipage}, el comando @code{\footnote} usa el contador @code{mpfootnote} en lugar del contador @code{footnote}, por lo que se numeran de forma independiente. Se muestran en la parte inferior del entorno, no en la parte inferior de la página. Y de manera predeterminada se muestran alfabéticamente. @xref{minipage} y @ref{Notas al pie en una tabla}. @node \footnotemark @section @code{\footnotemark} @findex \footnotemark Sinopsis, una de: @example \footnotemark \footnotemark[@var{number}] @end example Coloca la marca de nota al pie actual en el texto. Para especificar texto asociado para la nota al pie@tie{}@ref{\footnotetext}. El argumento @var{number} opcional hace que el comando use ese número para determinar la marca de nota al pie. Este comando se puede utilizar en el modo de párrafo interior (@pxref{Modos}). Si usas @code{\footnotemark} sin el argumento opcional, entonces incrementa el contador @code{footnote}, pero si usas el contador opcional @var{number} entonces no lo hace. El siguiente ejemplo produce varios marcadores consecutivos de notas al pie que se refieren a la misma nota al pie. @example El primer teorema\footnote@{Debido a Gauss.@} y el segundo teorema\footnotemark[\value@{footnote@}] y el tercer teorema.\footnotemark[\value@{footnote@}] @end example Si hay notas al pie intermedias, debes recordar el valor de el número de la marca común. Este ejemplo da la misma afiliación institucional del primer y tercer autor (@code{\thanks} es una versión de @code{\footnote}), dando a mano el número de la nota al pie. @example \title@{Un tratado sobre el teorema del binomio@} \author@{J Moriarty\thanks@{Universidad de Leeds@} \y AC Doyle\thanks@{Universidad de Durham@} \y S Holmes\footnotemark[1]@} \begin@{document@} \maketitle @end example Utiliza un contador para recordar el número de la nota al pie. La tercera frase va seguida del mismo marcador de nota al pie que la primera. @example \newcounter@{footnoteValueSaver@} Todos los bebés son ilógicos.\footnote@{% Lewis Carroll.@}\setcounter@{footnoteValueSaver@}@{\value@{footnote@}@} No se desprecia a nadie que pueda manejar un cocodrilo.\footnote@{% Capitán Garfio.@} Las personas ilógicas son despreciadas.\footnotemark[\value@{footnoteValueSaver@}] Por lo tanto, cualquiera que pueda manejar un cocodrilo no es un bebé. @end example @PkgIndex{cleveref} @PkgIndex{hyperref} Este ejemplo logra lo mismo usando el paquete @package{cleveref}. @c del usuario SE Jake https://tex.stackexchange.com/a/10116/339 @example \usepackage@{cleveref@}[2012/02/15] % en el preámbulo \crefformat@{footnote@}@{#2\footnotemark[#1]#3@} ... El teorema es de Evers.\footnote@{\label@{fn:TE@}Tinker, Evers, 1994.@} El corolario es de Chance.\footnote@{Evers, Chance, 1990.@} Pero el lema clave es de Tinker.\cref@{fn:TE@} @end example @PkgIndex{hyperref} Funcionará con el paquete @package{hyperref}. @node \footnotetext @section @code{\footnotetext} @findex \footnotetext Sinopsis, una de: @example \footnotetext@{@var{text}@} \footnotetext[@var{number}]@{@var{text}@} @end example Coloca @var{text} en la parte inferior de la página como nota al pie. Se empareja con @code{\footnotemark} (@pxref{\footnotemark}) y puede venir en cualquier lugar después de ese comando, pero debe aparecer en modo de párrafo externo (@pxref{Modos}). El argumento opcional @var{number} cambia el número de la marca de nota al pie. @xref{\footnotemark} y@tie{}@ref{Notas al pie en una tabla}, para usar en ejemplos @node Notas a pie de página en los títulos de las secciones @section Notas a pie de página en los títulos de las secciones @cindex Notas a pie de página, en los títulos de las secciones @cindex tabla de contenido, evitando notas al pie de página Pone una nota al pie en el título de una sección, como en: @example \section@{Juegos completos\protect\footnote@{Este material se debe a ...@}@} @end example @noindent hace que la nota al pie de página aparezca en la parte inferior de la página donde comienza la sección, como es habitual, pero también en la parte inferior de la tabla de contenido, donde no es probable que sea deseado. La forma más sencilla de hacer que no aparezca en la tabla de contenido es usar el argumento opcional para @code{\section} @example \section[Por favor]@{Por favor\footnote@{% ¡No incluyas notas al pie en los encabezados de capítulos y secciones!@}@} @end example @noindent No se necesita @code{\protect} delante de @code{\footnote} aquí porque lo que se mueve a la tabla de contenido es el argumento opcional. @node Notas al pie en una tabla @section Notas al pie en una tabla @cindex nota al pie, en una tabla Dentro de un entorno @code{tabular} o @code{array} el comando @code{\footnote} no funciona; hay una marca de nota al pie en la celda de la tabla, pero el texto de la nota al pie no aparece. La solución es usar un entorno @code{minipage} como aquí (@pxref{minipage}). @example \begin@{center@} \begin@{minipage@}@{\textwidth@} \centering \begin@{tabular@}@{l|l@} \textsc@{Barco@} &\textsc@{Libro@} \\ \hline \textit@{HMS Sophie@} &Maestro y Comandante \\ \textit@{HMS Polychrest@} &Capitán de puesto \\ \textit@{HMS Lively@} &Capitán de puesto \\ \textit@{HMS Surprise@} &Un número de libros\footnote@{% Comenzando con \textit@{HMS Sorpresa@}.@} \end@{tabular@} \end@{minipage@} \end@{center@} @end example Dentro de una @code{minipage}, las marcas de las notas al pie son letras minúsculas. Cambio que con algo así @code{\renewcommand@{\thempfootnote@}@{\arabic@{mpfootnote@}@}} (@pxref{\alph \Alph \arabic \roman \Roman \fnsymbol}). Las notas al pie en el ejemplo anterior aparecen en la parte inferior de la @code{minipage}. Para que aparezcan en la parte inferior de la página principal, como parte de la secuencia regular de notas al pie, utiliza @code{\footnotemark} y @code{\footnotetext} empareja y crea un nuevo contador. @example \newcounter@{mpFootnoteValueSaver@} \begin@{center@} \begin@{minipage@}@{\textwidth@} \setcounter@{mpFootnoteValueSaver@}@{\value@{footnote@}@} \centering \begin@{tabular@}@{l|l@} \textsc@{Mujer@} &\textsc@{Relación@} \\ \hline Mona &Adjunto\footnotemark\\ Diana Villiers &Eventual esposa \\ Christine Hatherleigh Wood &Prometida\footnotemark \end@{tabular@} \end@{minipage@}% El signo de porcentaje mantiene el texto de la % nota al pie cerca de la minipágina \stepcounter@{mpFootnoteValueSaver@}% \footnotetext[\value@{mpFootnoteValueSaver@}]@{% Poco se sabe aparte de su muerte.@}% \stepcounter@{mpFootnoteValueSaver@}% \footnotetext[\value@{mpFootnoteValueSaver@}]@{% Relación no resuelta en XXI.@} \end@{center@} @end example @PkgIndex{tablefootnote} Para un entorno @code{table} flotante (@pxref{table}), usa el paquete @package{tablefootnote}. @example \usepackage@{tablefootnote@} % en el preámbulo ... \begin@{table@} \centering \begin@{tabular@}@{l|l@} \textsc@{Fecha@} &\textsc@{Campaña@} \\ \hline 1862 & Fuerte Donelson \\ 1863 &Vicksburg \\ 1865 &Ejército de Virginia del Norte\tablefootnote@{% Pone fin a la guerra.@} \end@{tabular@} \caption@{Fuerzas capturadas por US Grant@} \end table@} @end example @noindent La nota al pie aparece en la parte inferior de la página y está numerada en secuencia con otras notas al pie. @node Notas al pie de notas al pie @section Notas al pie de notas al pie @cindex nota al pie, de una nota al pie @PkgIndex{bigfoot} Particularmente en las humanidades, los autores pueden tener múltiples clases de notas al pie, incluyendo tener notas al pie de las notas al pie. El paquete @package{bigfoot} amplía el mecanismo de notas al pie predeterminado de @LaTeX{} en muchas maneras, incluyendo permitir estos dos, como en este ejemplo. @example \usepackage@{bigfoot@} % en el preámbulo \DeclareNewFootnote@{Predeterminado@} \DeclareNewFootnote@{from@}[alph] % crea clase \footnotefrom@{@} ... El tercer teorema es un inverso parcial del segundo.\footnotefrom@{% Anotado en Wilson.\footnote@{Segunda edición solamente.@}@} @end example @node Definiciones @chapter Definiciones @cindex definiciones @LaTeX{} tiene soporte para crear nuevos comandos de muchos tipos diferentes. @menu * \newcommand y \renewcommand:: (Re)define un nuevo comando. * \providecommand:: Define un nuevo comando, si no se usa el nombre. * \makeatletter y \makeatother:: Cambia el estado del carácter arroba. * \@@ifstar:: Define tus propios comandos con variantes-*. * \newcounter:: Define un nuevo contador. * \newlength:: Define una nueva longitud. * \newsavebox:: Define una nueva caja. * \newenvironment y \renewenvironment:: Define un nuevo entorno. * \newtheorem:: Define un nuevo entorno similar a un teorema. * \newfont:: Define un nuevo nombre de tipo de letra. * \protect:: Usando comandos complicados. * \ignorespaces e \ignorespacesafterend:: Descarta los espacios adicionales. * paquete xspace:: Espacio después de una macro, condicionalmente. @end menu @node \newcommand y \renewcommand @section @code{\newcommand} y @code{\renewcommand} @anchor{\newcommand} @anchor{\renewcommand} @findex \newcommand @findex \renewcommand @cindex comandos, definiendo nuevos @cindex comandos, redefiniendo @cindex definir un nuevo comando @cindex redefinir un comando @cindex nuevos comandos, definiendo Sinopsis, una de (tres formas regulares, tres formas destacadas): @example \newcommand@{\@var{cmd}@}@{@var{defn}@} \newcommand@{\@var{cmd}@}[@var{nargs}]@{@var{defn}@} \newcommand@{\@var{cmd}@}[@var{nargs}][@var{optargdefault}]@{@var{defn}@} \newcommand*@{\@var{cmd}@}@{@var{defn}@} \newcommand*@{\@var{cmd}@}[@var{nargs}]@{@var{defn}@} \newcommand*@{\@var{cmd}@}[@var{nargs}][@var{optargdefault}]@{@var{defn}@} @end example @noindent o todas las mismas posibilidades con @code{\renewcommand} en lugar de @code{\newcommand}: @example \renewcommand@{\@var{cmd}@}@{@var{defn}@} \renewcommand@{\@var{cmd}@}[@var{nargs}]@{@var{defn}@} \renewcommand@{\@var{cmd}@}[@var{nargs}][@var{optargdefault}]@{@var{defn}@} \renewcommand*@{\@var{cmd}@}@{@var{defn}@} \renewcommand*@{\@var{cmd}@}[@var{nargs}]@{@var{defn}@} \renewcommand*@{\@var{cmd}@}[@var{nargs}][@var{optargdefault}]@{@var{defn}@} @end example Define o redefine un comando (ve también @code{\DeclareRobustCommand} en @ref{Comandos class y package}). @cindex forma estrella, definiendo nuevos comandos @cindex *-forma, definiendo nuevos comandos @findex \long La forma estrellada de estos dos prohíbe que los argumentos contengan varios párrafos de texto (en términos simples de @TeX{}: los comandos no son @code{\long}). Con la forma predeterminada, los argumentos pueden ser varios párrafos. Estos son los parámetros (a continuación se muestran algunos ejemplos): @table @var @item cmd Requerido; @code{\@var{cmd}} es el nombre del comando. Debe comenzar con una barra invertida, @code{\}, y no debe comenzar con la cadena de cuatro caracteres @code{\end}. Para @code{\newcommand}, no debe estar ya definido. Para @code{\renewcommand}, este nombre ya debe estar definido. @item nargs Opcional; un número entero de 0 a 9, especificando el número de argumentos que toma el comando, incluido cualquier argumento opcional. Omitir este argumento es lo mismo que especificar 0, lo cual significa que el comando no tiene argumentos. Si redefines un comando, la nueva versión puede tener un diferente número de argumentos que la versión anterior. @item optargdefault @cindex argumentos opcionales, definir y usar @cindex argumentos, opcional, definir y usar Opcional; si este argumento está presente entonces el primer argumento de @code{\@var{cmd}} es opcional, con valor predeterminado @var{optargdefault} (que puede ser la cadena vacía). Si @var{optargdefault} no está presente entonces @code{\@var{cmd}} no toma un argumento opcional. Es decir, si @code{\@var{cmd}} se llama con el siguiente argumento entre corchetes, como en @code{\@var{cmd}[@var{optval}]@{...@}...}, entonces dentro de @var{defn}, el parámetro@tie{}@code{#1} se establece en @var{optval}. Por otro lado, si @code{\@var{cmd}} se llama sin los siguientes corchetes entonces dentro de @var{defn} se establece el parámetro @code{#1} a @var{optargdefault}. En cualquier caso, los argumentos requeridos comienzan con @code{#2}. Omitir @code{[@var{optargdefault}]} de la definición es completamente diferente de dar los corchetes con contenido vacío, como en @code{[]}. El primero dice que el comando que se define no requiere un argumento opcional, por lo que @code{#1} es el primer argumento requerido (si @math{@var{nargs} @geq{} 1}); este último establece el argumento opcional @code{#1} a la cadena vacía como valor predeterminado, si no hay un argumento opcional dado en la llamada. De manera similar, omitir @code{[@var{optval}]} de una llamada también es completamente diferente de dar los corchetes con contenido vacío. El anterior establece @code{#1} al valor de @var{optval} (suponiendo que el comando se definió para tomar un argumento opcional); el último @code{#1} configurado a la cadena vacía, al igual que con cualquier otro valor. Si un comando no está definido para tomar un argumento opcional, pero es llamado con un argumento opcional, los resultados son impredecibles: allí puede haber un error de @LaTeX{}, puede haber una salida tipográfica incorrecta, o ambos. @item defn @cindex parámetros, sustituir Requerido; el texto que se sustituirá por cada aparición de @code{\@var{cmd}}. Los parámetros @code{#1}, @code{#2}, @dots{}, @code{#@var{nargs}} se reemplazan por los valores proporcionados cuando se llama al comando (o por @var{optargdefault} en el caso de un argumento opcional no especificado en la llamada, como se acaba de explicar). @end table @cindex espacios en blanco, después de las secuencias de control @TeX{} ignora los espacios en blanco en la fuente después de una secuencia de control (@pxref{Secuencias de control}), como en @samp{\cmd }. Si quieres un espacio allí, una solución es escribir @code{@{@}} después del comando (@samp{\cmd@{@} }), y otra solución es usar un espacio de control explícito (@samp{\cmd\ }). Un ejemplo simple de definición de un nuevo comando: @code{\newcommand@{\RS@}@{Robin Smith@}} da como resultado que @code{\RS} sea reemplazado por el texto más largo. Redefinir un comando existente es similar: @code{\renewcommand@{\qedsymbol@}@{@{\small QED@}@}}. Si usas @code{\newcommand} y el nombre del comando ya se ha usado entonces obtienes algo como @samp{Error de LaTeX: Comando \fred ya definido. O nombre \end... ilegal, ve la p.192 del manual}. De manera similar, si usas @code{\renewcommand} y el nombre del comando no se ha definido, obtienes algo como @samp{Error de LaTeX: \hank no se ha definido}. Aquí la primera definición crea un comando sin argumentos, y la segunda, un comando con un argumento requerido: @example \newcommand@{\student@}@{Ms~O'Leary@} \newcommand@{\defref@}[1]@{Definición~\ref@{#1@}@} @end example @noindent Usa el primero como en @code{Te recomiendo \student@{@}}. El segundo tiene un argumento variable, por lo que @code{\defref@{def:basis@}} se expande a @code{Definición~\ref@{def:basis@}}, que finalmente se expande a algo así como @samp{Definición~3.14}. Del mismo modo, pero con dos argumentos obligatorios: @code{\newcommand@{\nbym@}[2]@{$#1 \times #2$@}} se invoca como @code{\nbym@{2@}@{k@}}. Este ejemplo tiene un argumento opcional. @example \newcommand@{\salutation@}[1][Señor o señora]@{Estimado #1:@} @end example @noindent Entonces @code{\salutation} da @samp{Estimado señor o señora:} mientras @code{\salutation[John]} da @samp{Querido John:}. Y @code{\salutation[]} da @samp{Estimado :}. Este ejemplo tiene un argumento opcional y dos argumentos obligatorios. @example \newcommand@{\lawyers@}[3][empresa]@{#2, #3 y~#1@} Empleo a \lawyers[Howe]@{Dewey@}@{Cheatem@}. @end example @noindent El resultado es @samp{Empleo Dewey, Cheatem y Howe}. El argumento opcional, @code{Howe}, está asociado con @code{#1}, mientras que @code{Dewey} y @code{Cheatem} están asociados con @code{#2} y@tie{}@code{#3}. Debido al argumento opcional, @code{\lawyers@{Dewey@}@{Cheatem@}} dará la salida @samp{Empleo Dewey, Cheatem y Howe}. Las llaves alrededor de @var{defn} no definen un grupo, es decir, no delimitan el alcance del resultado de expandir @var{defn}. Por ejemplo, con @code{\newcommand@{\shipname@}[1]@{\it #1@}}, en esta oración, @example El \shipname@{Monitor@} se encontró con el \shipname@{Merrimac@}. @end example @noindent las palabras @samp{se encontró con el}, y el punto, estarían incorrectamente en cursiva. La solución es poner otro par de corchetes dentro de la definición: @code{\newcommand@{\shipname@}[1]@{@{\it #1@}@}}. @menu * Secuencias de control:: Secuencia de control, palabra de control y símbolo de control. @end menu @node Secuencias de control @subsection Secuencia de control, palabra de control y símbolo de control @cindex secuencias de control Al leer la entrada @TeX{} convierte el flujo de caracteres leídos en una secuencia de @dfn{tókenes}. Cuando @TeX{} ve una barra invertida @code{\}, la hará manejar los siguientes caracteres de una manera especial para hacer un token de @dfn{secuencia de control}. Las secuencias de control se dividen en dos categorías: @itemize @item @cindex palabra de control, definir @dfn{palabra de control}, cuando la secuencia de control se obtiene de una @code{\} seguida de al menos una letra ASCII (@code{A-Z} y @code{a-z}), seguida de al menos una no letra. @item @cindex símbolo de control, definir @dfn{símbolo de control}, cuando la secuencia de control se obtiene de una @code{\} seguida de un carácter que no sea una letra. @end itemize La secuencia de caracteres que se encuentran después de una @code{\} también se denominan el @dfn{nombre de la secuencia de control}. Los espacios en blanco después de una palabra de control se ignoran y no producen espacio en blanco en la salida (@pxref{\newcommand y \renewcommand} y @ref{\(SPACE)}). Así como el comando @code{\relax} no hace nada, la siguiente entrada simplemente imprimirá @samp{¡Hola!} @inlinefmt{tex, usamos espacios visibles @samp{@visiblespace{}} en lugar de espacios en blanco}@inlinefmt{info, (si utilizas el visor Info de Emacs@comma{} activa el modo menor @code{whitespace-mode} para ver los espacios finales)}: @example ¡Hol\relax@visiblespace{}@visiblespace{}@visiblespace{} @visiblespace{}@visiblespace{}@visiblespace{}a! @end example @noindent Esto se debe a que los espacios en blanco después de @code{\relax}, incluida la nueva línea, son ignorados, y los espacios en blanco al principio de una línea también son ignorados (@pxref{Espacios en blanco iniciales}). @node \providecommand @section @code{\providecommand} @findex \providecommand @cindex comandos, definiendo nuevos @cindex definir un nuevo comando @cindex nuevos comandos, definiendo Sinopsis, una de: @example \providecommand@{\@var{cmd}@}@{@var{defn}@} \providecommand@{\@var{cmd}@}[@var{nargs}]@{@var{defn}@} \providecommand@{\@var{cmd}@}[@var{nargs}][@var{optargdefault}]@{@var{defn}@} \providecommand*@{\@var{cmd}@}@{@var{defn}@} \providecommand*@{\@var{cmd}@}[@var{nargs}]@{@var{defn}@} \providecommand*@{\@var{cmd}@}[@var{nargs}][@var{optargdefault}]@{@var{defn}@} @end example Define un comando, siempre que no exista ningún comando con este nombre. Si no existe ningún comando con este nombre, esto tiene el mismo efecto que @code{\newcommand}. Si ya existe un comando con este nombre, entonces esta definición no hace nada. Esto es particularmente útil en un archivo que se puede cargar más de una vez, como un archivo de estilo. @xref{\newcommand y \renewcommand}, para la descripción de los argumentos. Este ejemplo @example \providecommand@{\myaffiliation@}@{Colegio de San Miguel@} \providecommand@{\myafiliation@}@{Lyc\'ee Henri IV@} De \myafiliation. @end example @noindent produce @samp{De Saint Michael's College.} A diferencia de @code{\newcommand}, el uso repetido de @code{\providecommand} para (intentar) definir @code{\myaffiliation} no da error. @node \makeatletter y \makeatother @section @code{\makeatletter} y @code{\makeatother} @anchor{\makeatletter} @anchor{\makeatother} @findex \makeatother @findex \makeatother Sinopsis: @example \makeatletter ... definición de comandos con @@ en su nombre .. \makeatother @end example Usa este par cuando redefines los comandos de @LaTeX{} que se nombran con un carácter arroba@tie{}@samp{@code{@@}}. La declaración @code{\makeatletter} hace que el carácter de arroba tenga el código de categoría de una letra, code@tie{}11. La declaración @code{\makeatother} establece el código de categoría del signo de arroba a code@tie{}12, su valor predeterminado. A medida que @TeX{} lee caracteres, asigna a cada uno un código de categoría, o @cindex catcode @cindex código de categoría de caracter @cindex código de categoría, carácter @dfn{catcode}. Por ejemplo, asigna el carácter@tie{}@samp{@code{\}} de barra invertida el catcode@tie{}0. Nombres de comandos constan de un carácter categoría@tie{}0, normalmente barra invertida, seguido por letras, caracteres de categoría@tie{}11 (excepto que un nombre de comando también puede constar de un carácter categoría@tie{}0 seguido de un solo símbolo que no es una letra). El código fuente de @LaTeX{} tiene la convención de que algunos comandos usan @code{@@} en su nombre. Estos comandos están destinados principalmente a escritores de paquete o de clase. La convención impide que los autores que solo utilizan un paquete o clase reemplacen accidentalmente dicho comando con uno de ellos mismos, porque de manera predeterminada el signo de arroba tiene el catcode@tie{}12. Usa el par @code{\makeatletter} y @code{\makeatother} dentro de un @file{.tex}, generalmente en el preámbulo, cuando estás definiendo o redefiniendo comandos nombrados con @code{@@}, haciendo que rodeen tu definición. No los uses dentro de los archivos @file{.sty} o @file{.cls} ya que los comandos @code{\usepackage} y @code{\documentclass} ya disponen que la arroba tenga el código de carácter de una letra, catcode@tie{}11. @PkgIndex{macros2e} Para obtener una lista completa de macros con un signo de arroba en sus nombres, consulta @url{https://ctan.org/pkg/macros2e}. En este ejemplo, el archivo de clase tiene un comando @code{\thesis@@universityname} que el usuario quiere cambiar. Estas tres líneas deben ir en el preámbulo, antes del @code{\begin@{document@}}. @example @code{\begin@{document@}}. \makeatletter \renewcommand@{\thesis@@universityname@}@{Colegio de San Miguel@} \makeatother @end example @node \@@ifstar @section @code{\@@ifstar} @findex \@@ifstar @cindex comandos, variantes con estrella @cindex variantes con estrella, comandos Sinopsis: @example \newcommand@{\mycmd@}@{\@@ifstar@{\mycmd@@star@}@{\mycmd@@nostar@}@} \newcommand@{\mycmd@@nostar@}[@var{nostar-num-args}]@{@var{nostar-body}@} \newcommand@{\mycmd@@star@}[@var{star-num-args}]@{@var{star-body}@} @end example Muchos entornos o comandos estándar de @LaTeX{} tienen una variante con el mismo nombre pero terminando con un carácter de estrella@tie{}@code{*}, un asterisco. Algunos ejemplos son los entornos @code{table} y @code{table*} y los comandos @code{\section} y @code{\section*}. Al definir entornos, seguir este patrón es sencillo porque @code{\newenvironment} y @code{\renewenvironment} permiten que el nombre del entorno contenga una estrella. Entonces solo tienes que escribir @code{\newenvironment@{@var{myenv}@}} o @code{\newenvironment@{@var{myenv}*@}} y continúa la definición de la manera habitual. Para los comandos la situación es más compleja ya que la estrella no es una letra no puede ser parte del nombre del comando. Como en la sinopsis anterior, habrá un comando llamado por el usuario, dado anteriormente como @code{\mycmd}, que mira hacia delante para ver si le sigue una estrella. Por ejemplo, @LaTeX{} realmente no tiene un comando @code{\section*}; en cambio, el comando @code{\section} mira hacia adelante. Este comando no acepta argumentos, sino que se expande a uno de los dos comandos que aceptan argumentos. En la sinopsis estos dos son @code{\mycmd@@nostar} y @code{\mycmd@@star}. Podrían tomar el mismo número de argumentos o un número diferente, o ningún argumento en absoluto. Como siempre, en un documento @LaTeX{} un comando usando una arroba@tie{}@code{@@} en su nombre se debe encerrar dentro de un bloque @code{\makeatletter ... \makeatother} (@pxref{\makeatletter y \makeatother}). Este ejemplo de @code{\@@ifstar} define el comando @code{\ciel} y una variante @code{\ciel*}. Ambos tienen un argumento obligatorio. Una llamada a @code{\ciel@{blue@}} devolverá "cielo azul no estrellado" mientras @code{\ciel*@{night@}} devolverá "cielo nocturno estrellado". @example \makeatletter \newcommand*@{\ciel@@unstarred@}[1]@{no estrellado #1 cielo@} \newcommand*@{\ciel@@starred@}[1]@{cielo estrellado #1@} \newcommand*@{\ciel@}@{\@@ifstar@{\ciel@@starred@}@{\ciel@@unstarred@}@} \makeatother @end example En el siguiente ejemplo, la variante destacada toma un número diferente de argumentos que el sin estrella. Con esta definición, el Agente 007 @code{``Mi nombre es \agentsecret*@{Bond@}, \agentsecret@{James@}@{Bond@}.''} es equivalente a ingresar los comandos @code{``Mi nombre es \textsc@{Bond@}, \textit@{James@} textsc@{Bond@}.''} @example \newcommand*@{\agentsecret@@unstarred@}[2]@{\textit@{#1@} \textsc@{#2@}@} \newcommand*@{\agentsecret@@starred@}[1]@{\textsc@{#1@}@} \newcommand*@{\agentsecret@}@{% \@@ifstar@{\agentsecret@@starred@}@{\agentsecret@@unstarred@}@} @end example Después de un nombre de comando, una estrella se maneja de manera similar a un argumento opcional. (Esto difiere de los nombres de entornos en los que la estrella es parte del nombre mismo y como tal podría estar en cualquier posición). Por lo tanto, técnicamente es posible poner cualquier número de espacios entre el comando y la estrella. Así @code{\agentsecret*@{Bond@}} y @code{\agentsecret@w{ *}@{Bond@}} son equivalentes. Sin embargo, la práctica estándar es no insertar tales espacios. @PkgIndex{sufijo} @PkgIndex{xparse} Hay dos formas alternativas de realizar el trabajo de @code{\@@ifstar}. (1)@tie{}El paquete @package{suffix} permite la construcción @code{\newcommand\mycommand@{@var{variante-sin-estrella}@}} seguida por @code{\WithSuffix\newcommand\mycommand*@{@var{starred-variant}@}}. (2)@tie{}@LaTeX{} proporciona el paquete @package{xparse}, que permite este código: @example \NewDocumentCommand\foo@{s@}@{\IfBooleanTF#1 @{@var{variante-con-estrella}@}% @{@var{variante-sin-estrella}@}% @} @end example @node \newcounter @section @code{\newcounter}: Asignar un contador @findex \newcounter @cindex contadores, definiendo nuevos Sinopsis, una de: @example \newcounter@{@var{countername}@} \newcounter@{@var{countername}@}[@var{supercounter}] @end example Define globalmente un nuevo contador llamado @var{countername} y lo inicializa a cero (@pxref{Contadores}). El nombre @var{countername} debe constar únicamente de letras. No comienza con una barra invertida. Este nombre no debe estar ya en uso por otro contador. Cuando usas el argumento opcional @code{[@var{supercounter}]} entonces el contador @var{countername} se restablecerá a cero siempre que @var{supercounter} se incrementa. Por ejemplo, ordinariamente @code{subsection} está numerado dentro de @code{section} para que cada vez que incremente @var{sección}, ya sea con @code{\stepcounter} (@pxref{\stepcounter}) o @code{\refstepcounter} (@pxref{\refstepcounter}), entonces @LaTeX{} restablecerá @var{subsection} a cero. Este ejemplo @example \newcounter@{asuper@} \setcounter@{asuper@}@{1@} \newcounter@{asub@}[asuper] \setcounter@{asub@}@{3@} % Nota `asuper' El valor de asuper es \arabic@{asuper@} y el de asub es \arabic@{asub@}. \stepcounter@{asuper@} Ahora asuper es \arabic@{asuper@} mientras que asub es \arabic@{asub@}. @end example produce @samp{El valor de asuper es 1 y el de asub es 3} y @samp{Ahora asuper es 2 mientras que asub es 0}. Si el contador ya existe, por ejemplo ingresando @code{asuper} dos veces, obtienes algo como @samp{Error LaTeX: Comando \c@@asuper Ya definido. O name \end... ilegal, ve la p.192 del manual.}. Si usas el argumento opcional, entonces el súper contador ya debe existir. Al ingresar @code{\newcounter@{jh@}[lh]} cuando @code{lh} no es un contador definido obtendrás @samp{Error LaTeX: Sin contador 'lh' definido.} @node \newlength @section @code{\newlength} @findex \newlength @cindex longitudes, asignando nuevas @cindex longitudes elásticas, definiendo nuevas @cindex omitir registro, @TeX{} simple @cindex registro de pegamento, @TeX{} simple Sinopsis: @example \newlength@{\@var{len}@} @end example Asigna un nuevo registro de longitud (@pxref{Longitudes}). El argumento requerido @code{\@var{len}} tiene que ser una secuencia de control (@pxref{Secuencias de control}), y como tal debe comenzar con una barra invertida, @code{\} bajo circunstancias normales. El nuevo registro contiene longitudes elásticas como @code{72.27pt} o @code{1in plus.2in minus.1in} (una longitud de registro @LaTeX{} es lo que @TeX{} llama un @code{skip} de registro). El valor inicial es cero. La secuencia de control @code{\@var{len}} no debe estar definida ya. Un ejemplo: @example \newlength@{\graphichgt@} @end example Si olvidas la barra invertida, obtienes @samp{Insertada secuencia de control faltante}. Si la secuencia de control ya existe, entonces obtienes algo así como @samp{Error LaTeX: Comando \graphichgt ya definido. O nombre \end... ilegal, ve la p.192 del manual}. @node \newsavebox @section @code{\newsavebox} @findex \newsavebox @cindex caja, asignando nueva Sinopsis: @example \newsavebox@{\@var{cmd}@} @end example Define \@var{cmd}, la cadena que consta de una barra invertida seguida de @var{cmd}, para referirse a un nuevo contenedor para almacenar material. Estos contenedores contienen material que ha sido compuesto, para usar varias veces o para medir o manipular (@pxref{Cajas}). El nombre del contenedor \@var{cmd} es obligatorio, debe comenzar con una barra invertida, \, y no debe ser un comando definido. Este comando es frágil (@pxref{\protect}). Esto asigna un contenedor y luego coloca material tipográfico en él. @example \newsavebox@{\logobox@} \savebox@{\logobox@}@{LoGo@} Nuestro logo es \usebox@{\logobox@}. @end example @noindent La salida es @samp{Nuestro logotipo es LoGo}. Si ya hay un contenedor definido, obtienes algo como @samp{Error de LaTeX: Comando \logobox ya definido. O nombre \end... ilegal, ve la p.192 del manual}. La asignación de una caja es global. @node \newenvironment y \renewenvironment @section @code{\newenvironment} y @code{\renewenvironment} @anchor{\newenvironment} @anchor{\renewenvironment} @findex \newenvironment @findex \renewenvironment @cindex entornos, definiendo @cindex definiendo nuevos entornos @cindex redefiniendo entornos Sinopsis, una de: @example \newenvironment@{@var{env}@}@{@var{begdef}@}@{@var{enddef}@} \newenvironment@{@var{env}@}[@var{nargs}]@{@var{begdef}@}@{@var{enddef}@} \newenvironment@{@var{env}@}[@var{nargs}][@var{optargdefault}]@{@var{begdef}@}@{@var{enddef}@} \newenvironment*@{@var{env}@}@{@var{begdef}@}@{@var{enddef}@} \newenvironment*@{@var{env}@}[@var{nargs}]@{@var{begdef}@}@{@var{enddef}@} \newenvironment*@{@var{env}@}[@var{nargs}][@var{optargdefault}]@{@var{begdef}@}@{@var{enddef}@} @end example @noindent o uno de estos. @example \renewenvironment@{@var{env}@}@{@var{begdef}@}@{@var{enddef}@} \renewenvironment@{@var{env}@}[@var{nargs}]@{@var{begdef}@}@{@var{enddef}@} \renewenvironment@{@var{env}@}[@var{nargs}][@var{optargdefault}]@{@var{begdef}@}@{@var{enddef}@} \renewenvironment*@{@var{env}@}@{@var{begdef}@}@{@var{enddef}@} \renewenvironment*@{@var{env}@}[@var{nargs}]@{@var{begdef}@}@{@var{enddef}@} \renewenvironment*@{@var{env}@}[@var{nargs}][@var{optargdefault}]@{@var{begdef}@}@{@var{enddef}@} @end example Definir o redefinir el entorno @var{env}, es decir, crear el constructor @code{\begin@{@var{env}@} ... @var{body} ... \end@{@var{env}@}}. @cindex forma-@code{*} de comandos de entorno La forma de asterisco de estos comandos requiere que los argumentos no contienen varios párrafos de texto. Sin embargo, el cuerpo de estos entornos pueden contener varios párrafos. @table @var @item env Requerido; el nombre del entorno. Se compone sólo de letras o el carácter forma-@code{*} y, por lo tanto, no comienza con una barra invertida, @code{\}. No debe comenzar con la cadena @code{end}. Para @code{\newenvironment}, el nombre @var{env} no debe ser el nombre de un entorno ya existente, y también el comando @code{\@var{env}} debe ser indefinido. Para @code{\renewenvironment}, @var{env} debe ser el nombre de un entorno existente. @item nargs Opcional; un número entero de 0 a 9 que indica el número de argumentos que toma el entorno. Cuando usas el entorno, estos argumentos aparecen después de @code{\begin}, como en @code{\begin@{@var{env}@}@{@var{arg1}@} ... @{@var{argn}@}}. Omitiendo esto es equivalente a establecerlo en 0; el entorno no tendrá argumentos. Al redefinir un entorno, la nueva versión puede tener un diferente número de argumentos que la versión anterior. @item optargdefault Opcional; si esto está presente, entonces el primer argumento del entorno definido es opcional, con el valor predeterminado @var{optargdefault} (que puede ser la cadena vacía). Si esto no está en la definición, entonces el entorno no acepta un argumento opcional. Es decir, cuando @var{optargdefault} está presente en la definición del entorno entonces puedes comenzar el entorno con corchetes, como en @code{\begin@{@var{env}@}[@var{optval}]@{...@} ... \end@{@var{env}@}}. En este caso, dentro de @var{begdefn} el parámetro @code{#1} se establece en el valor de @var{optval}. Si llamas a @code{\begin@{@var{env}@}} sin corchetes, luego dentro de @var{begdefn} el parámetro @code{#1} es establecido en el valor predeterminado @var{optargdefault}. En cualquier caso, cualquier argumento requerido comienza con @code{#2}. Omitir @code{[@var{myval}]} en la llamada es diferente a tener corchetes sin contenido, como en @code{[]}. Los resultados anteriores en @code{#1} expandiéndose a @var{optargdefault}; esto último resulta en @code{#1} expandiéndose a la cadena vacía. @item begdef Requerido; el texto se expande en cada aparición de @code{\begin@{@var{env}@}}. Dentro de @var{begdef}, los parámetros @code{#1}, @code{#2}, ... @code{#@var{nargs}}, se sustituyen por los valores que proporcionas cuando llamas al entorno; ve los ejemplos abajo. @item enddef Requerido; el texto se expande en cada aparición de @code{\end@{@var{env}@}}. Esto no puede contener ningún parámetro, es decir, no puedes usar @code{#1}, @code{#2}, etc., aquí (pero ve el ejemplo final a continuación). @end table Todos los entornos, es decir el código @var{begdef}, el entorno body y el código @var{enddef} se procesan dentro de un grupo. Así, en el primer ejemplo a continuación, el efecto de @code{\small} se limita a la cotización y no se extiende al material siguiendo el entorno. Si intentas definir un entorno y el nombre ya se ha utilizado entonces obtienes algo como @samp{Error de LaTeX: Comando \fred ya definido. O nombre \end... ilegal, ve la p.192 del manual}. Si intentas redefinir un entorno y el nombre aún no se ha utilizado, entonces obtienes algo como @samp{Error de LaTeX: Entorno hank indefinido.}. Este ejemplo proporciona un entorno como @code{quotation} de @LaTeX{} excepto que se establecerá en letra más pequeña. @example \newenvironment@{smallquote@}@{% \small\begin@{quotation@} @}@{% \end@{quotation@} @} @end example Esto tiene un argumento, que está en negrita al comienzo de un párrafo. @example \newenvironment@{point@}[1]@{% \noindent\textbf@{#1@} @}@{% @} @end example Este muestra el uso de un argumento opcional; da un entorno quotation que cita el autor. @example \newenvironment@{citequote@}[1][Shakespeare]@{% \begin@{quotation@} \noindent\textit@{#1@}: @}@{% \end@{quotation@} @} @end example @noindent El nombre del autor es opcional y de manera predeterminada es @samp{Shakespeare}. En el documento, utiliza el entorno como este. @example \begin@{citequote@}[Lincoln] ... \end@{citequote@} @end example El último ejemplo muestra cómo guardar el valor de un argumento para usarlo en @var{enddef}, en este caso en una caja (@pxref{\sbox y \savebox}). @example \newsavebox@{\quoteauthor@} \newenvironment@{citequote@}[1][Shakespeare]@{% \sbox\quoteauthor@{#1@}% \begin@{quotation@} @}@{% \hspace@{1em plus 1fill@}---\usebox@{\quoteauthor@} \end@{quotation@} @} @end example @node \newtheorem @section @code{\newtheorem} @findex \newtheorem @cindex teoremas, definiendo @cindex definir nuevos teoremas @cindex entorno similar a un teorema @cindex entorno, similar a un teorema Sinopsis: @example \newtheorem@{@var{name}@}@{@var{title}@} \newtheorem@{@var{name}@}@{@var{title}@}[@var{numbered_within}] \newtheorem@{@var{name}@}[@var{numbered_like}]@{@var{title}@} @end example Define un nuevo entorno similar a un teorema. Puedes especificar uno de @var{numbered_within} y @var{numbered_like}, o ninguno, pero no ambos. La primera forma, @code{\newtheorem@{@var{name}@}@{@var{title}@}}, crea un entorno que se etiquetará con @var{title}; ve el primer ejemplo a continuación. La segunda forma, @code{\newtheorem@{@var{name}@}@{@var{título}@}[@var{numbered_within}]}, crea un entorno cuyo contador está subordinado al counter existente @var{numbered_within}, por lo que este contador se restablecerá cuando @var{numbered_within} se restablece. Ve el segundo ejemplo a continuación. La tercera forma @code{\newtheorem@{@var{name}@}[@var{numbered_like}]@{@var{title}@}}, con un argumento opcional entre los dos argumentos requeridos, crea un entorno cuyo contador compartirá el contador definido previamente @var{numbered_like}. Ve el tercer ejemplo. Este comando crea un contador llamado @var{name}. Además, a menos que se use el argumento opcional @var{numbered_like}, dentro del entorno similar a un teorema, el valor actual de @code{\ref} será el de @code{\the@var{numbered_within}} (@pxref{\ref}). Esta declaración es global. Es frágil (@pxref{\protect}). Argumentos: @table @var @item name El nombre del entorno. Es una cadena de letras. No debe comenzar con una barra invertida, @code{\}. No debe ser el nombre de un entorno existente, y el nombre del comando @code{\@var{name}} no debe estar definido. @item title El texto que se imprimirá al principio del entorno, antes del número. Por ejemplo, @samp{Teorema}. @item numbered_within Opcional; el nombre de un contador ya definido, generalmente una unidad seccional como @code{chapter} o @code{section}. Cuando el contador @var{numbered_within} se restablece y luego el entorno @var{name} el contador también se restablecerá. Si no se utiliza este argumento opcional, el comando @code{\the@var{name}} se establece en @code{\arabic@{@var{name}@}}. @item numbered_like Opcional; el nombre de un entorno similar a un teorema ya definido. El nuevo entorno se numerará en secuencia con @var{numbered_like}. @end table Sin ningún argumento opcional, los entornos están numerados secuencialmente. El siguiente ejemplo tiene una declaración en el preámbulo que da como resultado @samp{Definición@tie{}1} y @samp{Definición@tie{}2} en producción. @example \newtheorem@{defn@}@{Definición@} \begin@{document@} \section@{...@} \begin@{defn@} Primer definición \end@{defn@} \section@{...@} \begin@{defn@} Segunda definición \end@{defn@} @end example Este ejemplo tiene el mismo cuerpo de documento que el anterior. Pero aquí el argumento opcional de @code{\newtheorem} @var{numbered_within} se da como @code{section}, por lo que el resultado es como @samp{Definición@tie{}1.1} y @samp{Definición@tie{}2.1}. @example \newtheorem@{defn@}@{Definición@}[sección] \begin@{document@} \section@{...@} \begin@{defn@} Primer definición \end@{defn@} \section@{...@} \begin@{defn@} Segunda definición \end@{defn@} @end example En el siguiente ejemplo hay dos declaraciones en el preámbulo, el segundo de los cuales requiere que el nuevo entorno @code{thm} use el mismo contador como @code{defn}. Da @samp{Definición@tie{}1.1}, seguido por @samp{Teorema@tie{}2.1} y @samp{Definición@tie{}2.2}. @example \newtheorem@{defn@}@{Definición@}[sección] \newtheorem@{thm@}[defn]@{Teorema@} \begin@{document@} \section@{...@} \begin@{defn@} Primer definición \end@{defn@} \section@{...@} \begin@{thm@} Primer thm \end@{thm@} \begin@{defn@} Segunda definición \end@{defn@} @end example @node \newfont @section @code{\newfont} @findex \newfont @cindex tipos de letra, nuevos comandos para @cindex definir nuevos tipos de letra @c @findex .fd @r{archivo} Este comando está obsoleto. Esta descripción está aquí solo para ayudar con los viejos documentos. Los nuevos documentos deben definir letras en familias a través del nuevo esquema de selección de letras que te permite, por ejemplo, asociar una negrita con una romana (@pxref{Tipos de letra}). @c Esto se hace usando archivos @file{.fd} o mediante el uso de un @c motor que pueda acceder a los tipos de letra del sistema como @c Xe@LaTeX{} (@pxref{Motores @TeX{}}). Sinopsis: @example \newfont@{\@var{cmd}@}@{@var{font description}@} @end example Define un comando @code{\@var{cmd}} que cambiará el tipo de letra actual. La secuencia de control no debe estar ya definida. Debe comenzar con una barra invertida, @code{\}. @cindex cláusula at, en definiciones de tipos de letra @cindex tamaño de diseño, en definiciones de letras La @var{descripción de la letra} consta de un @var{nombre de letra} y una opción @dfn{cláusula at}. @LaTeX{} buscará en tu sistema un archivo llamado @file{@var{fontname}.tfm}. La cláusula at puede tener la forma @code{en @var{dimen}} o @code{@var{factor} de escala}, donde un @var{factor} de @samp{1000} significa que no hay escalado. Para los propósitos de @LaTeX{}, todo lo que hace es escalar todos los caracteres y otras dimensiones de fuente relativo al tamaño de diseño de la fuente, que es un valor definido en el archivo @file{.tfm}. Esto define dos tipos de letra equivalentes y algunos caracteres tipográficos en cada una. @example \newfont@{\testfontat@}@{cmb10 at 11pt@} \newfont@{\testfontscaled@}@{cmb10 scaled 1100@} \testfontat abc \testfontscaled abc @end example @node \protect @section @code{\protect} @findex \protect @cindex comandos frágiles @cindex comandos robustos Todos los comandos de @LaTeX{} son frágiles ---@dfn{fragile}--- o robustos ---@dfn{robust}---. Un comando frágil se puede romper cuando se usa en el argumento para ciertos otros comandos. Comandos que contienen datos que @LaTeX{} escribe en un archivo auxiliar y las relecturas posteriores son frágiles. Esto incluye material que va en una tabla de contenido, lista de figuras, lista de tablas, etc. Los comandos frágiles también incluyen saltos de línea, cualquier comando que tenga un argumento opcional, y muchos más. Para evitar que tales comandos rompan, una solución es precederlos con el comando @code{\protect}. Por ejemplo, cuando @LaTeX{} ejecuta @code{\section@{@var{nombre sección}@}} escribe el texto @var{nombre sección} en el archivo auxiliar @file{.aux}, moviéndolo allí para usarlo en otra parte del documento como en la tabla de contenido. Cualquier argumento que sea expandido internamente por @LaTeX{} sin escribirlo directamente es referido como un @cindex argumentos móviles @dfn{argumento móvil}. Un comando es frágil si se puede expandir durante este proceso en un código @TeX{} no válido. Algunos ejemplos de los argumentos móviles son los que aparecen en el comando @code{\caption@{...@}} (@pxref{figure}), en el comando @code{\thanks@{...@}} (@pxref{\maketitle}), y en @@expresiones en los entornos @code{tabular} y @code{array} (@pxref{tabular}). Si obtienes extraños errores de los comandos utilizados para mover argumentos, intenta precediéndolos con @code{\protect}. Todos los comandos frágiles se deben proteger con su propio @code{\protect}. Aunque por lo general un comando @code{\protect} no duele, los comandos de longitud son robustos y no deben estar precedidos por un comando @code{\protect}. Tampoco se puede usar un comando @code{\protect} en el argumento para los comandos @code{\addtocounter} o @code{\setcounter}. En este ejemplo, el comando @code{\caption} da un misterioso error sobre una llave extra. Soluciona el problema precediendo a cada comando @code{\raisebox} con @code{\protect}. @example \begin@{figure@} ... \caption@{Sede de la empresa A\raisebox@{1pt@}@{B@}\raisebox@{-1pt@}@{C@}@} \end@{figure@} @end example En el siguiente ejemplo, el comando @code{\tableofcontents} da un error porque los @code{\(..\)} en el título de la sección se expande a ilegal @TeX{} en el archivo @file{.toc}. Puedes resolver esto cambiando @code{\(..\)} a @code{\protect\(..\protect\)}. @example \begin@{document@} \tableofcontents ... \section@{Einstein \( e=mc^2 \)@} ... @end example @node \ignorespaces e \ignorespacesafterend @section @code{\ignorespaces e \ignorespacesafterend} @anchor{\ignorespaces} @anchor{\ignorespacesafterend} @findex \ignorespaces @findex \ignorespacesafterend @cindex espacios, ignorar en comandos @cindex comandos, ignorar espacios Sinopsis: @example \ignorespaces @end example @noindent o @example \ignorespacesafterend @end example Ambos comandos hacen que @LaTeX{} ignore los espacios en blanco (es decir, los caracteres de catcode@tie{}10 como espacio o tabulación) después del final del comando hasta el primer cuadro o carácter que no esté en blanco. El primero es un comando primitivo de @TeX{}, y el segundo es específico de @LaTeX{}. El @code{\ignorespaces} se usa a menudo cuando se definen comandos a través de @code{\newcommand}, o @code{\newenvironment}, o @code{\def}. El ejemplo a continuación lo ilustra. Permite a un usuario mostrar los valores de los puntos para las preguntas de la prueba en el margen, pero es un inconveniente porque, como se muestra en la lista @code{enumerate}, los usuarios no deben poner ningún espacio entre el comando y el texto de la pregunta. @example \newcommand@{\points@}[1]@{\makebox[0pt]@{\makebox[10em][l]@{#1~pts@}@} \begin@{enumerate@} \item\points@{10@}no hay salida de espacio adicional aquí \item\points@{15@} espacio extra entre el número y el `extra' \end@{enumerate@} @end example @noindent La solución es cambiar a esto. @example \newcommand@{\points@}[1]@{% \makebox[0pt]@{\makebox[10em][l]@{#1~pts@}@}\ignorespaces@} @end example Un segundo ejemplo muestra la eliminación de espacios en blanco del frente del texto. Los comandos a continuación permiten a un usuario adjuntar uniformemente un título a los nombres. Pero, tal como se indica, si un título accidentalmente comienza con un espacio, entonces @code{\fullname} reproducirá eso. @example \newcommand@{\honorific@}[1]@{\def\honorific@{#1@}@} % recuerda el % título \newcommand@{\fullname@}[1]@{\honorific~#1@} % pone el título % antes del nombre \begin@{tabular@}@{|l|@} \honorific@{Mr/Ms@} \fullname@{Jones@} \\ % sin espacio adicional % aquí \honorific@{ Mr/Ms@} \fullname@{Jones@} % espacio adicional antes % del título \end@{tabular@} @end example @noindent Para arreglar esto, cambia a @code{\newcommand@{\fullname@}[1]@{\ignorespaces\honorific~#1@}}. El @code{\ignorespaces} también se usa a menudo en un @code{\newenvironment} al final de la cláusula @var{begin}, como en @code{\begin@{newenvironment@}@{@var{nombre entorno}@}@{... \ignorespaces@}@{...@}}. Para quitar los espacios en blanco del final de un entorno, usa @code{\ignorespacesafterend}. Un ejemplo es que esto mostrará mucho mayor espacio vertical entre el primer y el segundo entorno que entre el segundo y el tercero. @example \newenvironment@{eq@}@{\begin@{equation@}@}@{\end@{equation@}@} \begin@{eq@} e=mc^2 \end@{eq@} \begin@{equation@} F=ma \end@{equation@} \begin@{equation@} E=IR \end@{equation@} @end example Poner un carácter de comentario@tie{}@code{%} inmediatamente después del @code{\end@{eq@}} hará desaparecer el espacio vertical, pero eso es inconveniente. La solución es cambiar a @code{\newenvironment@{eq@}@{\begin@{equation@}@}@{\end@{equation@}\ignorespacesafterend@}}. @node paquete xspace @section paquete xspace @findex \xspace @PkgIndex{xspace} @cindex espacios, ignorar en comandos @cindex comandos, ignorar espacios Sinopsis: @example \usepackage@{xspace@} ... \newcommand@{...@}@{...\xspace@} @end example La macro @code{\xspace}, cuando se usa al final de una definición de comando, agrega un espacio a menos que el comando vaya seguido de ciertos caracteres de puntuación. Después de un comando de secuencia de control que es una palabra de control (@pxref{Secuencias de control}, a diferencia de los símbolos de control como @code{\$}), @TeX{} engulle caracteres en blanco. Por lo tanto, en la primera oración a continuación, la salida tiene @samp{Vermont} colocado cómodamente contra el punto, sin ningún espacio intermedio. @example \newcommand@{\VT@}@{Vermont@} Nuestro colegio está en \VT. Los veranos \VT@{@} son agradables. @end example Pero debido al engullimiento, la segunda oración necesita llaves vacías o de lo contrario no habría espacio que separe a @samp{Vermont} de @samp{veranos}. (Muchos autores en su lugar utilizan una barra invertida-espacio @code{\ } para esto. @xref{\(SPACE)}). El paquete @package{xspace} proporciona @code{\xspace}. Es para escribir comandos que están diseñados para ser utilizados principalmente en texto. Se debe colocar al final de la definición de estos comandos. Inserta un espacio después de ese comando a menos que lo que siga inmediatamente esté en una lista de excepciones. En este ejemplo, las llaves vacías no son necesarias. @example \newcommand@{\VT@}@{Vermont\xspace@} Nuestro colegio está en \VT . \VT los veranos son agradables. @end example La lista de excepciones predeterminada contiene los caracteres @code{,.'/?;:!~-)}, la llave de apertura y el comando de espacio de barra invertida explicados anteriormente, y los comandos @code{\footnote} o @code{\footnotemark}. Añaden a esa lista @code{\xspaceaddexceptions@{\myfni \myfnii@}} que agrega @code{\myfni} y@tie{}@code{\myfnii} a la lista, y elimina de esa lista como con @code{\xspaceaddexceptions@{!@}}. @c David Carlisle https://tex.stackexchange.com/a/86620/339 Un comentario: muchos expertos prefieren no usar @code{\xspace}. Ponerlo en una definición significa que el comando generalmente obtendrá el espaciado correcto. Pero no es fácil predecir cuándo ingresar llaves vacías porque @code{\xspace} se equivocará, como cuando le sigue otro comando, por lo que @code{\xspace} puede hacer que editar material sea más difícil y más propenso a errores que siempre insertar las llaves vacías. @node Contadores @chapter Contadores @cindex contadores, una lista de @cindex variables, una lista de Todo lo que @LaTeX{} numera para ti tiene un contador asociado con él. El nombre del contador suele ser el mismo que el nombre del entorno o comando asociado con el número, excepto que el nombre del contador no tiene barra invertida@tie{}@code{\}. Así, asociado al comando @code{\chapter} está el contador @code{chapter} que mantiene la pista del número de capítulo. A continuación se muestra una lista de los contadores utilizados en la clase @code{document} estándar de @LaTeX{} para controlar la numeración. @findex contador de partes @findex contador de capítulos @findex contador de sección @findex contador de subsección @findex contador de subsubsección @findex contador de párrafos @findex contador de subpárrafos @findex contador de páginas @findex contador de ecuaciones @findex contador de cifras @findex contador de tabla @findex contador de notas al pie @findex contador de mpfootnote @findex contador enumi @findex contador enumii @findex contador enumiii @findex contador enumiv @example parte párrafo figura enumi capítulo subpárrafo tabla enumii sección página nota al pie enumiii subsección ecuación mpfootnote enumiv subsubsección @end example El contador @code{mpfootnote} lo utiliza el comando @code{\footnote} dentro de una minipágina (@pxref{minipage}). Los contadores @code{enumi} a través de @code{enumiv} se utilizan en el entorno @code{enumerate}, por hasta cuatro niveles de anidamiento (@pxref{enumerate}). Los contadores pueden tener cualquier valor entero, pero normalmente son positivos. Los nuevos contadores se crean con @code{\newcounter}. @xref{\newcounter}. @menu * \alph \Alph \arabic \roman \Roman \fnsymbol:: Imprime el valor de un contador. * \usecounter:: Utiliza un contador específico en un entorno de lista. * \value:: Usa el valor de un contador en una expresión. * \setcounter:: Establece el valor de un contador. * \addtocounter:: Agrega una cantidad a un contador. * \refstepcounter:: Incrementa un contador. * \stepcounter:: Incrementa un contador, restableciendo los contadores subsidiarios. * \day - \month y \year:: Valores numéricos de fecha. @end menu @node \alph \Alph \arabic \roman \Roman \fnsymbol @section @code{\alph \Alph \arabic \roman \Roman \fnsymbol}: Imprime contadores @cindex contadores, impresión Imprime el valor de un contador, en un estilo específico. Por ejemplo, si el contador @var{counter} tiene el valor 1 entonces un @code{\alph@{@var{counter}@}} en tu fuente resultará en una letra@tie{}a en minúsculas que aparece en la salida. Todos estos comandos toman un solo contador como argumento, por ejemplo, @code{\alph@{enumi@}}. Ten en cuenta que el nombre del contador no comienza con una barra invertida. @ftable @code @item \alph@{@var{counter}@} Imprime el valor de @var{counter} en minúsculas: `a', `b', @enddots{} Si el valor del contador es menor que 1 o mayor que 26, entonces obtienes @samp{Error de LaTeX: Contador demasiado grande}. @item \Alph@{@var{counter}@} Escribe en letras mayúsculas: `A', `B', @enddots{} Si el valor del contador es menor que 1 o mayor que 26, obtiene @samp{Error de LaTeX: Contador demasiado grande.} @item \arabic@{@var{counter}@} Imprime en números arábigos como @samp{5} o @samp{-2}. @item \roman@{@var{counter}@} Escribe en minúsculas números romanos: `i', `ii', @enddots{} Si el valor del contador es menor que 1, entonces no recibe ninguna advertencia o error, pero @LaTeX{} no imprime nada en la salida. @item \Roman@{@var{counter}@} Imprime en números romanos en mayúsculas: `I', `II', @enddots{} Si el valor del contador es menor que 1, entonces no recibe ninguna advertencia o error, pero @LaTeX{} no imprime nada en la salida. @item \fnsymbol@{@var{counter}@} Imprime el valor de @var{counter} usando una secuencia de nueve símbolos que se utilizan tradicionalmente para etiquetar las notas al pie. El valor de @var{counter} debe estar entre@tie{}1 y@tie{}9, inclusive. Si el el valor del contador es menor que 0 o mayor que 9, entonces obtienes @samp{Error de LaTeX: Contador demasiado grande}, mientras que si es 0, no obtienes ningún error o advertencia pero @LaTeX{} no genera nada. Aquí están los símbolos: @multitable @columnfractions .11 .30 .30 .29 @headitem Número@tab Nombre@tab Comando@tab Símbolo @item 1@tab asterisk@tab@code{\ast}@tab@iftexthenelse{@math{\ast},*} @item 2@tab dagger@tab@code{\dagger}@tab@BES{2020,\dagger} @item 3@tab ddagger@tab@code{\ddagger}@tab@BES{2021,\ddagger} @item 4@tab section-sign@tab@code{\S}@tab@BES{00A7,\S} @item 5@tab paragraph-sign@tab@code{\P}@tab@BES{00B6,\P} @item 6@tab double-vert@tab@code{\parallel}@tab@BES{2016,\parallel} @item 7@tab double-asterisk@tab@code{\ast\ast}@tab@iftexthenelse{@math{\ast\ast},**} @item 8@tab double-dagger@tab@code{\dagger\dagger}@tab@BES{2020,\dagger}@BES{2020,\dagger} @item 9@tab double-ddagger@tab@code{\ddagger\ddagger}@tab@BES{2021,\ddagger}@BES{2021,\ddagger} @end multitable @end ftable @node \usecounter @section @code{\usecounter} @findex \usecounter @cindex listar elementos, especificando contador @cindex elementos numerados, especificando contador Sinopsis: @example \usecounter@{@var{counter}@} @end example Usado en el segundo argumento del entorno @code{list} (@pxref{list}), este declara que los elementos de la lista serán numerados por @var{counter}. Inicializa @var{counter} a cero y organiza que cuando se llama a @code{\item} sin su argumento opcional, entonces @var{counter} se incrementa en @code{\refstepcounter}, haciendo que su valor sea el valor actual de @code{ref} (@pxref{\ref}). Este comando es frágil (@pxref{\protect}). Al ponerlo en el preámbulo del documento, este ejemplo crea un nuevo entorno de lista enumerada con @var{testcounter}: @example \newcounter@{testcounter@} \newenvironment@{test@}@{% \begin@{list@}@{@}@{% \usecounter@{testcounter@} @} @}@{% \end@{list@} @} @end example @node \value @section @code{\value} @findex \value @cindex contadores, obteniendo el valor de Sinopsis: @example \value@{@var{counter}@} @end example Se expande al valor del contador @var{counter}. (Ten en cuenta que el nombre de un contador no comienza con una barra invertida). Este ejemplo genera @samp{El contador de prueba es@tie{}6. Otro contador es@tie{}5.}. @example \newcounter@{test@} \setcounter@{test@}@{5@} \newcounter@{other@} \setcounter@{other@}@{\value@{test@}@} \addtocounter@{test@}@{1@} El contador de prueba es \arabic@{test@}. Otro contador es \arabic@{other@}. @end example El comando @code{\value} no se usa para componer el valor del contador. Para eso, @ref{\alph \Alph \arabic \roman \Roman \fnsymbol}. A menudo se usa en @code{\setcounter} o @code{\addtocounter} pero @code{\value} se puede usar en cualquier lugar donde @LaTeX{} espera un número, como en @code{\hspace@{\value@{foo@}\parindent@}}. No debe estar precedido por @code{\protect} (@pxref{\protect}). Este ejemplo inserta @code{\hspace@{4\parindent@}}. @example \setcounter@{myctr@}@{3@} \addtocounter@{myctr@}@{1@} \hspace@{\value@{myctr@}\parindent@} @end example @node \setcounter @section @code{\setcounter} @findex \setcounter @cindex contadores, ajuste de @cindex configurar contadores Sinopsis: @example \setcounter@{@var{counter}@}@{@var{value}@} @end example Configura globalmente el contador @var{counter} para que tenga el valor del argumento @var{value}, que debe ser un número entero. Por lo tanto, puedes establecer un valor del contador como @code{\setcounter@{section@}@{5@}}. Ten en cuenta que el nombre del contador no comienza con una barra invertida. En este ejemplo, si el contador @code{theorem} tiene el valor 12, entonces la segunda línea imprimirá @samp{XII}. @example \setcounter@{ejercicio@}@{\value@{teorema@}@} Aquí está en Roman: \Roman@{exercise@}. @end example @node \addtocounter @section @code{\addtocounter} @findex \addtocounter Sinopsis: @example \addtocounter@{@var{counter}@}@{@var{value}@} @end example Incrementar globalmente @var{counter} por la cantidad especificada por el argumento @var{value}, que puede ser negativo. En este ejemplo, el valor de la sección aparece como @samp{VII}. @example \setcounter@{section@}@{5@} \addtocounter@{section@}@{2@} Aquí está en Roman: \Roman@{section@}. @end example @node \refstepcounter @section @code{\refstepcounter} @findex \refstepcounter Sinopsis: @example \refstepcounter@{@var{counter}@} @end example Incrementa globalmente el valor de @var{counter} en uno, al igual que @code{\stepcounter} (@pxref{\stepcounter}). La diferencia es que este comando restablece el valor de cualquier contador numerado dentro de él. (Para la definición de ``contadores numerados dentro'', @pxref{\newcounter}). Además, este comando también define el valor actual de @code{\ref} es el resultado de @code{\thecounter}. Mientras que el valor del contador se establece globalmente, el valor de @code{\ref} se establece localmente, es decir, dentro del grupo actual. @node \stepcounter @section @code{\stepcounter} @findex \stepcounter Sinopsis: @example \stepcounter@{@var{counter}@} @end example Agrega globalmente uno a @var{counter} y restablece todos los contadores numerados dentro de ella. (Para la definición de ``contadores numerados dentro'', @pxref{\newcounter}). Este comando difiere de @code{\refstepcounter} en que este no influye en las referencias; es decir, no define el valor actual de @code{\ref} será el resultado de @code{\thecounter} (@pxref{\refstepcounter}). @node \day - \month y \year @section @code{\day}, @code{\month} y @code{\year} @anchor{\day} @anchor{\month} @anchor{\year} @findex \day @findex \month @findex \year @LaTeX{} define el contador @code{\day} para el día del mes (nominalmente con valor entre 1 y 31), @code{\month} para el mes del año (nominalmente con un valor entre 1 y 12), y @code{\year} para el año. Cuando @TeX{} se inicia, se establecen a partir de los valores actuales en el sistema. El comando relacionado @code{\today} produce una cadena que representa el día actual (@pxref{\today}). Los contadores no se actualizan a medida que avanza el trabajo, por lo que, en principio, podría ser incorrecto al final. Además, @TeX{} no controla la sensatez: @example \day=-2 \month=13 \year=-4 \today @end example @noindent no da ningún error o advertencia y da como resultado la salida @samp{-2, -4} (el valor del mes falso no produce ningún resultado). @xref{Entrada de la línea de comandos}, para forzar la fecha a un valor dado desde la línea de comandos. @node Longitudes @chapter Longitudes @cindex longitudes, definiendo y usando @dfn{length} es una medida de distancia. Muchos comandos de @LaTeX{} toman un argumento como longitud. @cindex longitudes rígidas @cindex longitudes elásticas @cindex dimen @r{@TeX{} simple} @cindex skip @r{@TeX{} simple} @cindex pegamento @r{simple @TeX{}} Las longitudes vienen en dos tipos. Un @dfn{longitud rígida} como @code{10pt} no contiene un componente @code{plus} o @code{minus}. (@TeX{} sencillo llama a esto una @dfn{dimensión}). Una @dfn{longitud de goma} (que @TeX{} simple llama a @dfn{skip} o @dfn{glue}) como con @code{1cm plus0.05cm minus0.01cm} puede contener uno o ambos componentes. En esa longitud elástica, el @code{1cm} es la @dfn{longitud natural} mientras que los otros dos, componentes @code{plus} y @code{minus}, permiten que @TeX{} estire o reduzca la longitud para optimizar la colocación. Las siguientes ilustraciones utilizan estos dos comandos. @example % hace una barra negra de 10pt de alto y #1 de ancho \newcommand@{\blackbar@}[1]@{\rule@{#1@}@{10pt@}@} % Hace un cuadro alrededor del #2 que tenga el #1 de ancho (excluyendo % el borde) \newcommand@{\showhbox@}[2]@{% \fboxsep=0pt\fbox@{\hbox a #1@{#2@}@}@} @end example @noindent Este ejemplo usa esos comandos para mostrar una barra negra de 100@tie{}puntos de largo entre @samp{XXX} y @samp{YYY}. Esta longitud es rígida. @example XXX\muestracaja@{100pt@}@{\barranegra@{100pt@}@}YYY @end example En cuanto a las longitudes elásticas, la reducción es más simple: con @code{1cm minus 0.05cm}, la longitud natural es 1@dmn{cm} pero @TeX{} la puede reducir hasta 0.95@dmn{cm}. Más allá de eso, @TeX{} se niega a encogerse más. Por lo tanto, debajo del primero funciona bien, produciendo un espacio de 98@tie{}puntos entre las dos barras. @example XXX\showhbox@{300pt@}@{% \blackbar@{101pt@}\hspace@{100pt minus 2pt@}\blackbar@{101pt@}@}YYY XXX\showhbox@{300pt@}@{% \blackbar@{105pt@}\hspace@{100pt minus 1pt@}\blackbar@{105pt@}@}YYY @end example @noindent Pero el segundo recibe una advertencia como @samp{Overfull \hbox (1.0pt too wide) detectado en la línea 17}. En la salida, la primer @samp{Y} se sobrescribe al final de la barra negra, porque el material de la caja es más ancho que los 300@dmn{pt} asignados, ya que @TeX{} se ha negado a reducir el total a menos de 309@tie{}puntos. Estirar es como encoger excepto que si se le pide a @TeX{} que estire más allá de la cantidad dada, lo hará. Aquí la primera línea está bien, produciendo un espacio de 110@tie{}puntos entre las barras. @example XXX\showhbox@{300pt@}@{% \blackbar@{95pt@}\hspace@{100pt plus 10pt@}\blackbar@{95pt@}@}YYY XXX\showhbox@{300pt@}@{% \blackbar@{95pt@}\hspace@{100pt plus 1pt@}\blackbar@{95pt@}@}YYY @end example @noindent En la segunda línea @TeX{} necesita un tramo de 10@tie{}puntos y solo se especificó 1@tie{}punto. @TeX{} estira el espacio al requerido pero te da una advertencia como @samp{Infracompleto \hbox (maliciosos 10000) detectados en la línea 22}. (No hablaremos de la malicia). Puedes estirar y encoger en la misma longitud, como en @code{1ex plus 0.05ex minus 0.02ex}. Si @TeX{} está configurando dos o más longitudes elásticas, asigna la ampliación o reducción en proporción. @example XXX\showhbox@{300pt@}@{% \blackbar@{100pt@}% left \hspace@{0pt plus 50pt@}\blackbar@{80pt@}\hspace@{0pt plus 10pt@}% middle \blackbar@{100pt@}@}YYY % right @end example @noindent Las barras izquierda y derecha ocupan 100@tie{}puntos, por lo que la del medio necesita otros 100. La barra central es de 80@tie{}puntos por lo que los dos @code{\hspace} se deben extender 20@tie{}puntos. Porque los dos son @code{plus 50pt} y @code{plus 10pt}, @TeX{} obtiene 5/6 del tramo del primer espacio y 1/6 del segundo. El componente @code{plus} o @code{minus} de una longitud elástica puede contener un componente @dfn{fill}, como en @code{1in plus2fill}. Esto da la longitud infinita capacidad de estiramiento o contracción para que @TeX{} pueda establecer a cualquier distancia. Aquí las dos figuras estarán espaciadas por igual en la página. @example \begin@{minipage@}@{\linewidth@} \hspace@{0pt plus 1fill@}\includegraphics@{godel.png@}% \hspace@{0pt plus 1fill@}\includegraphics@{einstein.png@}% \hspace@{0pt plus 1fill@} \end@{minipage@} @end example @TeX{} tiene tres niveles de infinito para componentes de pegamento: @code{fil}, @code{fill} y @code{filll}. Los últimos son más infinitos que los anteriores. Por lo general, los autores de documentos solo usan el del medio (@pxref{\hfill} y @pxref{\vfill}). Multiplicar una longitud elástica por un número la convierte en una longitud rígida, por lo que después de @code{\setlength@{\ylength@}@{1in plus 0.2 in@}} y @code{\setlength@{\zlength@}@{3\ylength@}} entonces el valor de @code{\zlength} es @code{3in}. @menu * Unidades de longitud:: Las unidades que conoce @LaTeX{}. * \setlength:: Establece el valor de una longitud. * \addtolength:: Agrega una cantidad a una longitud. * \settodepth:: Establece una longitud a la profundidad de algo. * \settoheight:: Establece una longitud a la altura de algo. * \settowidth:: Establece una longitud al ancho de algo. * \stretch:: Agrega capacidad de estiramiento infinita. * Expresiones:: Calcular con longitudes y números enteros. @end menu @node Unidades de longitud @section Unidades de longitud @cindex unidades, de longitud @TeX{} y @LaTeX{} conocen estas unidades tanto dentro como fuera del modo math. @ftable @code @item pt @cindex point @anchor{unidades de longitud pt} Punto, 1/72,27 pulgadas. La conversión (aproximada) a unidades métricas es 1@dmn{punto} = .35146@dmn{mm} = .035146@dmn{cm}. @item pc @cindex pica @anchor{unidades de longitud pc} Pica, 12 puntos @item in @cindex inch @anchor{unidades de longitud en} Pulgada, 72.27 puntos @item bp @cindex gran punto @cindex punto PostScript @anchor{unidades de longitud pb} Punto grande, 1/72 pulgada. Esta longitud es la definición de un punto en PostScript y muchos sistemas de autoedición. @item mm @cindex milímetro @anchor{mm unidades de longitud} Milímetro, 2.845@dmn{pt} @item cm @cindex centímetro @anchor{cm unidades de longitud} Centímetro, 10@dmn{mm} @item dd @cindex punto didot @anchor{unidades de longitud dd} Punto didot, 1.07 pt @item cc @cindex cícero @anchor{unidades de longitud cc} Cicero, 12 dd @item sp @cindex punto escalado @anchor{unidades de longitud sp} Punto escalado, 1/65536 pt @end ftable Otras tres unidades se definen de acuerdo con la letra actual, en lugar de que sea una dimensión absoluta. @ftable @code @item ex @cindex x-height @cindex ex @anchor{Longitudes/ex} @anchor{unidades de longitud ex} La altura x de la letra actual @dfn{ex}, tradicionalmente la altura de la letra minúscula x, se usa a menudo para longitudes verticales. @item em @cindex m-width @cindex em @anchor{Longitudes/em} @anchor{unidades de longitud em} Del mismo modo @dfn{em}, tradicionalmente el ancho de la letra M mayúscula, se utiliza a menudo para longitudes horizontales. Este también a menudo es el tamaño de la letra actual, por ejemplo, una letra nominal 10@dmn{pt} debe tener 1@dmn{em} = 10@dmn{pt}. @LaTeX{} tiene varios comandos para producir espacios horizontales basados en em (@pxref{\enspace - \quad y \qquad}). @item mu @cindex mu, unidad matemática @anchor{unidades de longitud mu} Finalmente, en el modo matemático, muchas definiciones se expresan en términos de la unidad matemática @dfn{mu}, definida por 1@dmn{em} = 18@dmn{mu}, donde el em es tomar de la familia actual de símbolos matemáticos. @xref{Espaciado en modo matemático}. @end ftable El uso de estas unidades puede ayudar a que una definición funcione mejor en todos los cambios de letra. Por ejemplo, una definición del espacio vertical entre lista de elementos dados como @code{\setlength@{\itemsep@}@{1ex plus 0.05ex minus 0.01ex@}} es más probable que siga siendo razonable si se cambia la letra que una definición dada en puntos. @node \setlength @section @code{\setlength} @findex \setlength @cindex longitudes, configuración Sinopsis: @example \setlength@{\@var{len}@}@{@var{amount}@} @end example Establece la longitud \@var{len} en @var{amount}. El nombre de longitud @code{\@var{len}} tiene que ser una secuencia de control (@pxref{Secuencias de control}), y como tal debe comenzar con una barra invertida, @code{\} bajo circunstancias normales. La @var{cantidad} puede ser una longitud elástica (@pxref{Longitudes}). Puede ser positivo, negativo o cero, y puede estar en cualquier unidad que @LaTeX{} entienda (@pxref{Unidades de longitud}). A continuación, con los valores predeterminados de @LaTeX{}, el primer párrafo tendrá sangría mientras que el segundo no. @example Le dije al médico que me rompí la pierna en dos lugares. \setlength@{\parindent@}@{0em@} Dijo que dejara de ir a esos lugares. @end example Si no declaraste \@var{len} con @code{\newlength}, por ejemplo si lo escribes mal como en @code{\newlength@{\specparindent@}\setlength@{\sepcparindent@}@{...@}}, entonces obtienes un error como @samp{Secuencia de control no definida.