Aplicación de composición tipográfica en LaTeX

Hola Habr! Todos aquellos que no están muy contentos con el fascinante llenado de los formularios oficiales de Word, los invito a cat.

¿Cómo empezó todo?


Todo comenzó con el hecho de que fui invitado a participar en una conferencia. Requisitos como "¡los resúmenes se envían en formato Word!" Estaba acostumbrado de alguna manera, pero mi paciencia se quebró cuando recibí un formulario de "opinión sobre la posibilidad de publicación abierta" en mi correo.

El formulario era un archivo .doc que abundaba en campos típicos del flujo de trabajo ruso para completar con la mano en los lugares correctos: una línea horizontal a lo largo de toda la línea con una explicación debajo (por ejemplo, "Nombre, Posición, Firma"). Todo se vuelve aún más divertido si enciende la pantalla de personajes ocultos.

Parece que presione insertar en el teclado y escriba "en la parte superior" de las líneas regladas, ¿qué es difícil? De hecho, al principio traté de hacer eso, pero toda esta "belleza" se rompía constantemente, salía del campo y me ponía nerviosa. ¿Cuál es el tamaño del texto que vale la pena esforzarse por romper de 12 a 8 y luego volver? Apreté los dientes durante unos 20 minutos y tomé la decisión definitiva de hacer todo en látex. ¡Como resultado, pasé solo dos noches y obtuve un documento hermoso y de alta calidad!

Cómo llegar al diseño


!!!
Todos los nombres son ficticios. Cualquier coincidencia con personas, organizaciones y direcciones reales es aleatoria.
!!!

Imaginemos que un empleado del Instituto de Investigación de Sistemas de Control Electrónico K. Kuznetsov va al maravilloso foro de Sistemas de Control Electrónico en la maravillosa ciudad de New Vasyuki para presentar el informe "Computación periférica para sistemas de control".

Preámbulo


En 2019, trabajar en el látex es bastante fácil: elige el editor a tu gusto, declara el tipo de documento, carga los paquetes necesarios y ya no piensas en el diseño de tu texto.

Esta vez tampoco ha cambiado nada: seleccionamos el formato A4, el tamaño 12 y desactivamos la portada. Si no me equivoco, algunas de estas opciones son los valores predeterminados para la clase de artículo. Al mismo tiempo, conectamos el paquete que normaliza la visualización en pdf:

\documentclass[12pt,a4paper,notitlepage]{article} \usepackage{cmap} 

Luego debe especificar la codificación del texto fuente, la familia de fuentes y conectar el idioma ruso:

 %%% language, font, encoding \usepackage[T2A]{fontenc} \usepackage[utf8]{inputenc} \usepackage[russian]{babel} 

Los campos estándar en latech son, en mi opinión, muy amplios, claramente más anchos que los campos en la forma original. Prefiero trabajar con ellos usando el paquete de geometría. Usualmente uso 2 cm en todos los lados. Cortésmente rechazamos los pies de página:

 \usepackage[top=2cm,bottom=2cm,left=2cm,right=2cm,nohead,nofoot]{geometry} 

Como usamos explicaciones interlineales, es necesario aumentar el espacio entre líneas. Esto es fácil de hacer con \ linespread, pero prefiero un paquete especializado:

 \usepackage[doublespacing]{setspace} 

El logotipo de la empresa estaba presente en el formulario enviado, sin embargo, si no necesita imágenes en el documento, no puede conectar este paquete:

 \usepackage{graphicx} 

Y ahora la parte divertida! Estos paquetes hicieron todo el trabajo por mí. El paquete corporativo de la American Mathematical Society amsmath define una macro de subconjunto que le permite crear texto de "subíndice", y un paquete ulem que facilita el trabajo con guiones bajos:

 \usepackage{amsmath} \usepackage{ulem} 

Cuerpo del documento


Conducimos en el familiar principio-fin {documento} y comenzamos a crear. Nuestro diseño será absolutamente manual, por lo tanto, no está de más borrar el estilo de la página:

 \pagestyle{empty} 

Si desea incluir un logotipo en el documento
Aquí no hay nada complicado: declaramos un objeto flotante, utilizamos la macro includegraphics definida en graphicx con el ancho necesario y disfrutamos de la vida. Además, pdflatex es un gran amigo del formato png.

 \begin{figure}[t!] \includegraphics[width=0.4\textwidth]{logo.png} \end{figure} 


La declaración generalmente tiene un sello. En un habr, vi cómo se implementa usando una tabla con un ancho dado. No me gustó este enfoque, ya que la tabla tiene parámetros arraystretch y tabcolsep, que estropean un poco la sangría y el formato. Siempre se pueden redefinir, pero en mi opinión es mucho más fácil usar el entorno de minipage. Personalmente, prefiero que la máquina misma seleccione los intervalos necesarios, para esto hay hfill. Sin embargo, no siempre necesitamos completar la línea completa, como, por ejemplo, en el caso de la fecha. Aquí usaremos la regla para dejar el lugar necesario:

 \begin{flushright} \begin{minipage}{0.4\textwidth} \centering{ \\ } \raggedright{ \hfill\hfill\hfill<<\hfill>>\\ \hrulefill~~.~.\\ } <<\hspace{0.25cm}>>~\rule{2cm}{0.25pt}~201\hspace{0.25cm}.\hfill \end{minipage} \end{flushright} 

Hacer una línea para el número de decreto tampoco es difícil. Parece que en algunos de los paquetes el símbolo "No." se define por separado, pero me parece irracional conectar todo el paquete por el simple hecho de hacerlo:

 \begin{flushleft} \rule{2cm}{0.25pt}~N$^{\underline{\circ}}$~\rule{2cm}{0.25pt} \end{flushleft} 


Especifique el nombre del documento y alinéelo al centro de la línea:
 \begin{center}  \\     \end{center} 

Finalmente, se nos dio la oportunidad de usar el paquete ulem. Para nosotros, el paquete es notable principalmente porque el texto subrayado se transfiere automáticamente a la siguiente línea, a diferencia del subrayado. No sabemos cuánto espacio ocupará el texto, y para que las líneas siempre lleguen a los márgenes, agregamos hfill.

   (-)  << >> \uline{   << >>  . .\hfill}\\ 

Ahora hemos llegado a la parte más interesante del documento. Implementamos explicaciones en subíndice usando la macro de subconjunto del paquete amsmath. El único problema con este enfoque es trabajar en modo matemático. En consecuencia, hfill ya no nos ayudará. Aquí tenemos que hacer un poco más de trabajo: estirar manualmente las cajas usando hspace y organizar transferencias forzadas si es necesario. Inicialmente, intenté automatizar esta parte con el paquete resizebox graphicx, pero esto no condujo a resultados digeribles. (Los invito a comentar sobre los expertos en programación de TeX).

 \\ $\underset{\text{( , ,  )}}{\text{\uline{    . . <<    >>\hspace{2.75cm}}}}$\\ \uline{    <<  >>,   1  10  2019    .  ,  , . ,  37\hfill}\\ 

La parte legalmente más importante de la declaración:

 ,   :\\ $\underset{\text{(         )}}{\text{\uline{         \hspace{4.25cm}}}}$\\     :\hfill$\underset{\text{( )}}{\text{\uline{\hspace{3.5cm} \hspace{3.5cm}}}}$\\ $\underset{\text{(     ,  )}}{\rule{\textwidth}{0.25pt}}$\\   : \uline{        \hfill}\\ 

Finalmente, nombramos expertos responsables. Podemos dejarlo así, pero podemos ingresar nombres y posiciones reales, sin olvidarnos de hspace:

 $\underset{\text{(, , )}}{\rule{\textwidth}{0.25pt}}$\\ $\underset{\text{(, , )}}{\rule{\textwidth}{0.25pt}}$\\ $\underset{\text{(  , , )}}{\rule{\textwidth}{0.25pt}}$\\ 

Toques finales


Casi siempre, cualquier documento se divide en partes lógicas, que son muy fáciles de organizar en una hoja al colocar vfill entre ellas. Volviendo al diseño de las líneas, si no funciona hacer una línea uniforme en los campos, puede dejarla un poco más pequeña y agregar hfiil al comienzo de la línea.

Me gustaría expresar un agradecimiento especial a los autores de los artículos:
habr.com/en/post/207364 escrito por dbarashev
habr.com/en/post/144648 por Skiminok

Buen diseño!

Texto fuente
 \documentclass[12pt,a4paper,notitlepage]{article} \usepackage{cmap} %%% language, font, encoding \usepackage[T2A]{fontenc} \usepackage[utf8]{inputenc} \usepackage[russian]{babel} %%% pagesize \usepackage[top=2cm,bottom=2cm,left=2cm,right=2cm,nohead,nofoot]{geometry} %%% line spacing and indentation \usepackage[doublespacing]{setspace} %%% working with graphics \usepackage{graphicx} \usepackage{amsmath} \usepackage{ulem} \begin{document} \pagestyle{empty} \vfill \begin{flushright} \begin{minipage}{0.4\textwidth} \centering{ \\ } \raggedright{ \hfill\hfill\hfill<<\hfill>>\\ \hrulefill~~.~.\\ } <<\hspace{0.25cm}>>~\rule{2cm}{0.25pt}~201\hspace{0.25cm}.\hfill \end{minipage} \end{flushright} \vfill \begin{flushleft} \rule{2cm}{0.25pt}~N$^{\underline{\circ}}$~\rule{2cm}{0.25pt} \end{flushleft} \vfill \begin{center}  \\     \end{center} \vfill   (-)  << >> \uline{   << >>  . .\hfill}\\ \\ $\underset{\text{( , ,  )}}{\text{\uline{    . . <<    >>\hspace{2.75cm}}}}$\\ \uline{    <<  >>,   1  10  2019    .  ,  , . ,  37\hfill}\\ ,   :\\ $\underset{\text{(         )}}{\text{\uline{         \hspace{4.25cm}}}}$\\     :\hfill$\underset{\text{( )}}{\text{\uline{\hspace{3.5cm} \hspace{3.5cm}}}}$\\ $\underset{\text{(     ,  )}}{\rule{\textwidth}{0.25pt}}$\\   : \uline{        \hfill}\\    (-):\\ $\underset{\text{(, , )}}{\rule{\textwidth}{0.25pt}}$\\ $\underset{\text{(, , )}}{\rule{\textwidth}{0.25pt}}$\\ $\underset{\text{(  , , )}}{\rule{\textwidth}{0.25pt}}$\\ \vfill \end{document} 

Source: https://habr.com/ru/post/463965/


All Articles