diff --git a/content/snippets/guia-groff.md b/content/snippets/guia-groff.md new file mode 100644 index 0000000..2309a9d --- /dev/null +++ b/content/snippets/guia-groff.md @@ -0,0 +1,244 @@ +--- +title: "Guía rápida para groff" +date: 2023-11-16 +--- + +# Formato general de página y contenido + +```groff +.ds FAM T \" H=Helvetica C=Courier +.nr PS 10 \" Tamaño de letra +.nr VS 12 \" Espaciado +.nr PO 1i \" Espaciado borde izquierdo +.nr LL 6i \" Longitud de línea +.nr LT 6i \" Longitud de encabezado y pie de página +.nr HM 1i \" Margen del encabezado +.nr FM 1i \" Margen del pie de página +``` + +Por ejemplo, utilizando: + +```groff +.ds FAM T \" Tipo de letra +.nr PS 12 \" Tamaño de letra +.nr VS 20 \" Espaciado +.TL +Título +.AU +Autor +. +.LP +Lorem ipsum dolor sit amet, consectetur... +``` + +Produce: + +![ejemplo-times](times.png) + +... y utilizando: + +```groff +.ds FAM H \" Tipo de letra +.nr PS 12 \" Tamaño de letra +.nr VS 20 \" Espaciado +.TL +Título +.AU +Autor +. +.LP +Lorem ipsum dolor sit amet, consectetur... +``` + +Produce: + +![ejemplo-helvetica](helvetica.png) + +# Primera página + +```groff +.TL + +.AU + +.AU + +.AI + +. +.AB + +.AE +``` + +Por defecto, groff empezará el documento justo después +del RESUMEN o ABSTRACT, o si no existe, después del autor +o el título. Para utilizar una **portada**, se pueden utilizar +las siguientes directivas: + +```groff +.RP no \" 'Report page' o portada. +.P1 \" Empezar numeración en página 1 +``` + +# Secciones y tabla de contenido + +```groff +.NH +.XN "" +. +.NH 2 +.XN "" +. +.SH +.XN "" +. +.TC \" Tabla de contenido al final del documento +``` + +Por defecto, groff pone la table de contenido al final de la página. +Para ponerla al inicio, o después de una página de portada, se puede utilizar +la siguiente macro: + +```groff +.\" github.com/SudarsonNantha +.\" --- +.\" Relocate .TC at the end of the document to either +.\" 'before' or 'after' (by giving those arguments) +.\" the page where this macro was sourced. +.\" --- +.\" Requires -mspdf macros +. +.if '\*[.T]'pdf' \X'pdf: pagename here' +.rn TC TCold +.de TC +. ds CF +. ds CH +. if '\*[.T]'pdf' \X'pdf: switchtopage \\$1 here' +. TCold +.. +``` + +Para utilizarla, se agrega el código anterior al inicio del +documento y al momento de llamar `.TC` al final del +código, se puede cambiar la directiva por `.TC after` +para poner la tabla de contenidos después de la portada, o +`.TC before` para ponerla antes de la portada. + +![ejemplo-tablacontenido](tablacontenido.png) + +# Párrafos + +```groff +.PP + +. +.LP + +``` + +![ejemplo-parrafo](parrafo.png) + +# Matemáticas + +Las siguientes definiciones en `eqn`, permiten el +uso de sintaxis simplificado a la hora de crear ecuaciones. +(El `delim $$` funciona para poner syntax matemático dentro del texto, +similar a LaTeX). + +```groff +.EQ +delim $$ +define / 'over' +define <( '{ \[la] }' +define )> '{ \[ra] }' +define grad '{ \[gr] }' +define lag '\f[U-HR]\[u2112]' +.EN +``` + +Por ejemplo, la expresión: + +```groff +.EQ +\[gr] \f[U-HR]\[u2112] ( lambda , x , y ) = + \[la] + {partial lag} over {partial lambda} , + {partial lag} over {partial x} , + {partial lag} over {partial y} + \[ra] +.EN +``` + +Puede ser simplificada como (después de aplicar las definiciones anteriores): + +```groff +.EQ +grad lag ( lambda , x , y ) = + <( + {partial lag} / {partial lambda} , + {partial lag} / {partial x} , + {partial lag} / {partial y} + )> +.EN +``` + +Para producir: + +![ejemplo-eqn](eqn.png) + +# Otros idiomas + +groff usa variables para guardar los nombres de +la tabla de contenido, o las referencias. Para +cambiarlos, se modifican las variables así: + +```groff +.\" Redefinición de registros comunes +.\" para títulos y fechas en español. +. +.ds ABSTRACT RESUMEN +.ds TOC Tabla de contenido +.ds REFERENCES Referencias +. +.ds MONTH1 enero +.ds MONTH2 febrero +.ds MONTH3 marzo +.ds MONTH4 abril +.ds MONTH5 mayo +.ds MONTH6 junio +.ds MONTH7 julio +.ds MONTH8 agosto +.ds MONTH9 septiembre +.ds MONTH10 octubre +.ds MONTH11 noviembre +.ds MONTH12 diciembre +. +.ds DY \n[dy] de \*[MO] de \n[year] +``` + +# Utilidades + +## Regla + +```groff +.de rule +\D'l \\$1 0' +.. +``` + +Definiendo esta macro, se puede utilizar la directiva +`.rule LONGITUD` para dibujar una línea en el documento, +por ejemplo después de un título (el espaciado es para +evitar que el título tome la longitud de la línea): + +```groff +.NH +.XN "\s'20'Título de ejemplo" +.sp 0i \" Espaciado de 0 +.rule 6.25i +``` + +El `\s'20'` pone el tamaño de letra en 20, y produce: + +![ejemplo-regla](regla.png) diff --git a/content/snippets/guia-groff/eqn.png b/content/snippets/guia-groff/eqn.png new file mode 100644 index 0000000..bbd1af3 Binary files /dev/null and b/content/snippets/guia-groff/eqn.png differ diff --git a/content/snippets/guia-groff/helvetica.png b/content/snippets/guia-groff/helvetica.png new file mode 100644 index 0000000..cb5e583 Binary files /dev/null and b/content/snippets/guia-groff/helvetica.png differ diff --git a/content/snippets/guia-groff/parrafo.png b/content/snippets/guia-groff/parrafo.png new file mode 100644 index 0000000..de54afe Binary files /dev/null and b/content/snippets/guia-groff/parrafo.png differ diff --git a/content/snippets/guia-groff/regla.png b/content/snippets/guia-groff/regla.png new file mode 100644 index 0000000..02aa10d Binary files /dev/null and b/content/snippets/guia-groff/regla.png differ diff --git a/content/snippets/guia-groff/tablacontenido.png b/content/snippets/guia-groff/tablacontenido.png new file mode 100644 index 0000000..74f3a76 Binary files /dev/null and b/content/snippets/guia-groff/tablacontenido.png differ diff --git a/content/snippets/guia-groff/times.png b/content/snippets/guia-groff/times.png new file mode 100644 index 0000000..60e708c Binary files /dev/null and b/content/snippets/guia-groff/times.png differ