Cómo escribir un libro de física en LaTeX. Articulo 1

Este es mi primer artículo sobre Habré.



Capítulo 1 Introducción



1.1 Permítanme presentarme y explicar por qué escribo esto.



Soy investigador, físico. Recientemente publicó un libro sobre espectroscopia con 880 páginas y un peso de 1560 gramos. He estado escribiendo este libro durante 9 años, mientras daba conferencias sobre su contenido. Me tomó mucho tiempo, lo cual es natural. Lo que no es natural es que una gran parte del tiempo se dedicó al diseño, es decir, al aprendizaje del idioma latech. Y esto a pesar de que he estado escribiendo sobre Latekh toda mi vida, personalmente escribí y publiqué cerca de 50 artículos en diferentes editoriales.



En este artículo (se planea una continuación, pero así es como se desarrollará) me gustaría compartir con mis lectores mi conocimiento adquirido a un gran costo. Si el lector escribe solo artículos, entonces realmente no necesita mi artículo, contiene lo que necesitan los autores de libros grandes.



Después de la publicación del libro (hasta ahora, por desgracia, solo en ruso), tuve un gran deseo de escribir otro libro "Cómo escribir un libro sobre física en latekh"



1.2 ¿Y por qué en Habré?



Si hubiera un foro principal para usuarios de Latech en Rusia, yo estaría allí. Pero no lo es, por desgracia. Si hay en el mundo, no lo sé. Hay foros muy decentes como latex.org/forum o tex.stackexchange.com , pero en su mayoría hay preguntas y respuestas.



Hay buenos autores en Rusia, pero no hay un gran foro conocido. Es una pena.



Un estudiante conocido de la Universidad Estatal de San Petersburgo me dijo recientemente que se ven obligados a escribir textos en latekh, pero que no recomiendan libros ni buenos sitios. Con este enfoque, nuestros cocodrilos pueden despegar, pero solo muy bajo.



1.3 ¿Por qué Latech?



Simplemente no conozco a otros editores. Nunca en mi vida escribí un solo trabajo serio en Word u OpenOffice. Por tanto, no puedo comparar editores. Latech es como una vieja esposa. Hubo amor, hubo riñas, todo fue ... Pero sin él ya no puedo.



A menudo existe la opinión de que Latech formatea el texto mejor, más fácil y más hermoso que cualquier otro editor. Eso le dice al autor: "Hazte a un lado, todavía no entiendes nada sobre el diseño del texto, deja que un profesional trabaje".



Creo que esto es solo parcialmente cierto. Pasé mucho tiempo diseñando el texto y es muy triste. No voy a describir las reglas para trabajar con Latech, hay buenos libros para esto, (*) todo lo contrario, voy a escribir sobre lo que estos libros no tienen.



Hay muchas técnicas complicadas en el diseño de texto y la creación de dibujos que quiero describir al menos brevemente si mi texto le interesa a alguien aquí en Habré.



1.4 ¿Tengo un objetivo



? Por supuesto, entiendo que un número insignificante de personas escribe en Latech. Por regla general, matemáticos y físicos, e incluso entonces no todos. De los autores que escriben en Latech, la proporción de quienes escriben libros es muy, muy pequeña. Finalmente, la escritura en ruso es insignificante.



La lógica de esta nota no es darle al lector una visión amplia del uso de Latech para la escritura de libros. No tengo una perspectiva suficiente para esto: estoy seguro de que quien excava en todas partes no profundiza. La lógica de la nota es la siguiente: "No sé qué caminos conducen a dónde en nuestro denso bosque. Caminé por un denso bosque por un camino, y te lo voy a contar".



Si hablamos de tendencias, entonces la introducción generalizada de la cienciometría en Rusia, es decir, los índices de Hirsch (y similares) y el número de citas, debería destruir por completo un libro científico. Me refiero, en primer lugar, a tener en cuenta esta cienciometría a la hora de nombrar cargos, así como a la hora de distribuir becas y otros tipos de financiación. Permítanme recordarles que los libros no se cuentan en absoluto en el índice de Hirsch.



Si nuestros supervisores científicos son consistentes en todo, en el futuro deberían prohibir el idioma ruso, especialmente el escrito, por escribir libros - castigar, y por escribir libros en ruso - severamente castigado, hasta e incluyendo el despido. Por el uso extremadamente ineficaz del tiempo de trabajo oficial.



Por eso, mi trabajo, este libro, a veces me parece algo estúpido e innecesario. Pero es aburrido vivir sin excéntricos (¿tontos?) ...



Además, aquí, en Habré, la gente suele escribir artículos sobre todo tipo de basura, como discos de gramófono o grabadoras de casete. ¿Por qué mi tema es peor?



1.5 Los mejores libros modernos



En el proceso de escribir mi libro de texto, revisé una gran cantidad de libros y libros de texto extranjeros y llegué a la conclusión de que los mejores libros de texto en mi campo fueron escritos por Atkins (PW Atkins ) de Oxford con varios coautores. Véase, por ejemplo, " Molecular Quantum Mechanics " (2005). También hay muy buenos libros de Demtroder ( W. Demtroder, "Espectroscopía láser: conceptos básicos e instrumentación", 2003; Electrodinámica y óptica ", 2019; ... )



Lo que es interesante de Demtroder: agradece el servicio especial que lo ayudó a organizar el libro en Latehe: Existe un servicio de este tipo en Alemania, pero no en Rusia.



Además, estos libros son los mejores no tanto en contenido como en diseño. A simple vista puede ver que todos están hechos en Latech con el uso activo del paquete TikZ. Como resultado, tuve la sensación de que la combinación Latech - TikZ es la mejor manera de crear un libro diseñado al mejor nivel mundial. Es por eso que TikZ se usó mucho en mi libro (incluso donde puede prescindir de él).



1.6 El libro ideal del futuro



Me gustaría especular sobre el libro ideal del futuro. Es decir, sobre dónde vendrá inevitablemente la publicación científica (bueno ... debería llegar). Es decir, en lo que nosotros, los científicos, deberíamos esforzarnos para aumentar nuestra competitividad y atractivo.



Naturalmente, el libro del futuro existirá en dos versiones: papel y electrónico. Además, se coloreará. Además, no solo los dibujos se destacarán en color.



La clara división moderna del contenido en texto, imágenes, tablas y fórmulas será cosa del pasado. Por ejemplo, se necesitan flechas que conecten algunos lugares en textos, figuras, tablas, etc. ¿Por qué separar figuras y tablas? ¿Por qué no puedo colocar fotografías dentro de la mesa o viceversa? ¿No es más conveniente a veces tener una mezcla de ellos?



La Figura 1 muestra dos páginas de mi libro (versión en línea) para dejar en claro que el texto y los gráficos pueden fluir sin problemas entre sí.





Figura: 1. Un ejemplo del diseño de mi libro. Se muestra el flujo de la tabla en la imagen



Otras ideas, de improviso.



  1. , , , .. (, , ).
  2. . . .
  3. — . .
  4. , , . , — , .

    - - " ". ?
  5. , : . : TikZ.


Por supuesto, todos estos sueños florecieron en mi cabeza solo hasta que conocí a un editor vivo, que considera todo este capricho caro e innecesario, pero ese es otro tema.



1.7 Acerca de compiladores, editores, dialectos de Latech

Este es un tema muy extenso y doloroso.



Utilizo el paquete Windows / MikTeX / WinEdt (= OS / compiler / editor), pero incluso dentro de este paquete hay una gran selección de versiones.



Considero que el editor de WinEdt es el mejor (aunque a veces también uso TexStudio), pero después de la versión 5.6 comenzó a evolucionar de una manera desagradable para mí (no describo el hack de WinEdt aquí, pero esto no es un problema para ninguna versión).



Por ejemplo, soy conservador y ciego, por lo que solo reconozco mi color de sintaxis, no el sugerido por el creador de WinEdt, ver fig. 2 y fig. 3.





Figura: 2. Coloración de sintaxis en WinEdt v.10





Fig. 3. Mi coloración de sintaxis en WinEdt v.5.6



Pero la principal molestia es que los nuevos compiladores pretenden poder trabajar con fuentes de ocho bits en codificaciones UTF-8, para lo cual se han desarrollado e introducido activamente dialectos como LuaLatex, XeLatex, etc. que estos nuevos dialectos son capaces de crear texto con cualquier tipo de letra, incluso con Old Church Slavonic. Pero cuántos costos hay ...



Una de mis principales quejas es que si transfiero algún texto de Internet, entonces probablemente habrá una mezcla de codificaciones, el editor no me mostrará algunos de los caracteres y el compilador dará un error que será difícil de encontrar.



Para el texto en ruso, solo reconozco fuentes de siete bits y codificación ANSI / Windows1251, y transfiero textos de Internet no directamente, sino a través de algún editor simplificado (por ejemplo, Notepad ++), en el que puede configurar todas las codificaciones según sea necesario.



Y solo al final, haciendo el formateo final del texto, puede cambiar a UTF-8. Esto es un montón de trabajo.



La única mejora simple de la fuente de Latech que no afecta el formato del texto de ninguna manera es la transición de CM a CM-super.



Permítame recordarle que siempre puede jugar con la configuración de formato, por ejemplo,

\clubpenalty=400   %   --     .  = 300,   = 10000.
\widowpenalty=400  %%      ,      .
\righthyphenmin=2 %    .   Babel,    .
\tolerance=500   %max=10000, default=200 (    ).
%  ,  !
\looseness=-1 %       .
\hfuzz=2.5pt %        2.5 pt.


Capítulo 2. Tus estándares



2.1 Consejos para el escritor principiante



Aquí hay una lista de consejos básicos para el aspirante a escritor de textos largos. El texto grande es un texto que es muy tedioso para hojear, solo se puede editar con los comandos de búsqueda y reemplazo.

Como dirían los militares, cada consejo está "escrito con sangre". Bueno, vale, no con sangre ... Pero el tiempo pasado, los nervios, el dolor de cabeza ... Al principio parece que luego habrá tiempo de arreglarlo todo. Y luego resulta que reelaborar un libro para adaptarlo a los gustos de la oficina editorial es un negocio que requiere mucho tiempo.



2.1.1 Descubra el formato de página de su futuro libro e inclúyalo en el preámbulo desde el principio. Esto le evitará el doloroso reformateo. Desde el principio, especifique en el preámbulo el diseño de la página final (encabezados, pies de página, márgenes, etc.), así como el tamaño y tipo de fuente.



Por ejemplo, el formato de mi libro es 70x100 1/16 y, por lo tanto, el preámbulo contiene las siguientes configuraciones:

\special{papersize=170mm,240mm}
\textheight 187mm % 200-(12+25)*0.35146 = 186.99598
\textwidth 130mm
\headheight13.6pt % = 0.48 mm
\oddsidemargin -5.4mm
\evensidemargin -5.4mm
\topmargin -5.4mm
\usepackage{setspace}
\singlespacing


aquí está el comando

\singlespacing
establece todo el documento a un solo espacio y es en sí mismo parte del paquete setspace.

Debe entenderse de esta manera. Los márgenes, superior e inferior, son de 20 mm. Por lo tanto, está disponible un área de 130 * 200 mm. Grabación

\topmargin -5.4mm


significa que la distancia desde la parte superior del encabezado h hasta la parte superior de la página es h = 1 pulgada + margen superior = 2 cm, que es lo que desea. El ancho del texto es de 130 mm, pero a partir de la altura de 200 mm, reste la altura del encabezado (altura de la cabeza) y la distancia desde el encabezado al texto (encabezado).

Se entiende que hay tres comandos más:

\voffset=0 \headheight12pt \headsep25pt % 1 pt = 0.3528 


y la fórmula general:

240 = tamaño de papel y = 2 * (2,54 cm + margen superior) + altura de texto y + altura de cabeza + separación de cabeza = 40+ 186,99598 + (12 + 25) * 0,35146 mm.



Todo, al parecer, está claro. Pero el compilador muestra el mensaje en cada página:

Paquete Fancyhdr Advertencia: \ headheight is too small (12.5pt):

Hágalo al menos 13.59999pt.

Ahora lo hacemos así de grande para el resto del documento.

Sin embargo, esto puede hacer que el diseño de la página sea inconsistente.




Entonces, estamos rehaciendo. Ahora
\headheight13.6pt


Es útil recordar que las fuentes nativas, es decir, incorporadas en Latech, son de 10, 11 y 12 pt. Para otros tamaños, debe conectar paquetes especiales. Quería que la fuente fuera más pequeña para que quepa más texto en la página. Pero en la oficina editorial me dijeron que la fuente Latech de 11 puntos se ve como 10,5 puntos en Microsoft Word. Entonces elegí 11 pt. Pero en vano. Era necesario 10 pt, como hacen en la mayoría de las editoriales en el extranjero.



Una editorial grande y seria tiene su propio estilo, y luego el autor no necesita pensar, pero esto (generalmente) no se aplica a Rusia.



Escribí y pensé que sería bueno que los nuestros rara vez mostraran su estilo. Recientemente envió un artículo a la revista AIP Conference Proceedings, su estilo de documento

\documentclass[aip,cp,amsmath,amssymb,reprint]{revtex4-2}


y obtengo la respuesta: "... Su diseño no coincide ... Las direcciones de correo electrónico deben estar justo después de los nombres de los autores, y no en notas al pie ..."



¿Y cómo puede no coincidir si tomé el estilo y la plantilla del documento de su sitio web? En el curso de la correspondencia con el servicio de soporte, resultó que, como ellos piensan, algunos de mis paquetes están desactualizados y, por lo tanto, es mejor para mí compilar mis artículos en su sitio web, el servicio www.overleaf.com/latex En



primer lugar, odio ¿Pueden estos intentos de moda simplificar mi computadora a una interfaz para programas ubicados en Internet y, en segundo lugar, qué tan creativo debe ser para vincular el estilo de los artículos a algunas configuraciones profundamente ocultas de mi compilador?



Cambie el estilo de la revista (cp), cambie el estilo del editor (revtex4-2), pero ¿por qué hacerlos dependientes del compilador?



2.1.2 Selección de



fuente La fuente en el editor debe ser monoespaciada (Consolas, Lucida Console, Courier, Courier New, ...), y el editor de texto debe cambiar fácilmente entre los modos de bloque y línea. Esto le permite reorganizar las columnas en las tablas si están preparadas correctamente.



Otro ejemplo. Cuando necesito dejar solo un archivo para la compilación (un capítulo de veinte), selecciono la columna de los signos de% y la muevo al principio del párrafo. Luego utilizo mis manos para eliminar el signo% que está frente al archivo que necesito y, como resultado, todos los archivos resultan ser comentarios, excepto el deseado.



2.1.3 La memoria visual de una persona funciona bien. Reconoce pasajes familiares en el texto y es un pecado no usar esta habilidad. Entonces mi estándar es una oración = un párrafo. Sin alineación automática de líneas (deshabilite Wrap). Como resultado, la posición del texto en la línea no cambiará si cambio algo en las oraciones anteriores.



2.1.4 El nombre del archivo con la imagen debe coincidir con su etiqueta. Esto es conveniente y también guarda una variable en la macro que llama al dibujo.



2.1.5 El nombre del artículo (etiqueta) se compila de acuerdo con el estándar. Es muy conveniente, pero no hay camaradas en gusto y color.

Mi estándar: referencia Purcell46_681 significa (autor) - (año de publicación) - (número de página).



2.1.6 Coloración de sintaxis. Por alguna razón es muy importante para mí. Un ejemplo de mi coloración y la coloración estándar de WinEdt se muestran en la Fig. 2. El

color de la sintaxis del fabricante WinEdt, en mi opinión, es pobre y no se corresponde con mis gustos.

Los principios correctos de (mi) coloración son los siguientes:

- comentarios: texto en cursiva tenue sobre un fondo gris,

- texto del enlace (\ ref, \ cite): fondo brillante, pero diferente para referencias a literatura y ecuaciones,

- corchetes: negrita, brillante fondo, el corchete posterior debe estar subrayado,

- comandos latech (\ begin): fondo claro,

- caracteres de servicio ($, _,): negrita y resaltados en el texto con color,

- fin de línea en la tabla (\\): negrita blanco sobre negro antecedentes.

2.1.7 La estructura "correcta" más simple de un libro son dos directorios: uno es para el texto del libro, el otro es un taller para hacer dibujos vectoriales en el paquete TikZ.

Dentro de cada uno hay un subdirectorio \ Figs para dibujos confeccionados.

No hablaré del taller en este artículo.



Capítulo 3. Sus designaciones



3.1 Pequeños reemplazos

que estoy acostumbrado a llamar macros, aunque probablemente esto sea incorrecto.



Érase una vez, hace 30 años, estaba muy impresionado de que pudiera completar fórmulas matemáticas a la velocidad de una ametralladora sin mirar el monitor. Aún me gusta. Pero especialmente me enamoré de escribir textos usando mis designaciones. Todos ellos, por supuesto, están recogidos en un archivo de preámbulo.



¿Se pueden introducir siempre abreviaturas? No, lamentablemente, no siempre. El compilador no quiere comprender muchos de ellos. Por ejemplo, todavía no he encontrado una abreviatura para entornos terriblemente útiles como
\begin{split}--\end{split}, \begin{align}--\end{align}




Los ejemplos más sencillos.

\newcommand*{\BE}{\begin{equation}} %
\newcommand*{\EN}{\end{equation}} %
\newcommand*{\BEA}{\begin{subequations} \begin{eqnarray}} %
\newcommand*{\ENA}{\end{eqnarray} \end{subequations}} 


Texto de cosas como

\begin{equation}


muy perezoso. Por lo tanto, introduje la abreviatura - \ BE hace mucho tiempo. ¿Por qué con letras grandes? Porque hace unos 30 años, el Dos Latech (= EmTex) no quería trabajar con letras pequeñas.

En inglés, el primer párrafo comienza sin una línea roja. Para anular esta regla, generalmente se usa el comando \ hs:

\newcommand*{\hs}{\hspace*{\parindent}}


Cancelar la numeración automática de fórmulas:

\newcommand*{\nn}{\nonumber}


Para la lista de autores, un análogo del ruso , etc .:

\newcommand*{\ea}{{\it et al\/}\xspace}


Esto es especialmente útil si desea imprimir et al en cursiva. Preste atención al comando \ xspace, este entiende si necesita hacer un espacio (si las palabras van más allá) o no (si los signos de puntuación van más allá).



Si escribe con frecuencia fórmulas químicas, entonces sustituciones como

\newcommand*{\1}{$_1$}
\newcommand*{\2}{$_2$}
\newcommand*{\3}{$_3$}
\newcommand*{\4}{$_4$}
\newcommand*{\5}{$_5$}
\newcommand*{\6}{$_6$}
\newcommand*{\7}{$_7$}
\newcommand*{\8}{$_8$}
\newcommand*{\9}{$_9$}


Por ejemplo, en lugar de C $ _2 $ H $ _5 $ OH, escribo C \ 2H \ 5OH. Es un poquito más rápido.



Para insertar texto en fórmulas matemáticas, utilizo

\newcommand*{\T}[1]{\text{#1}}


En mi ciencia, los números de onda se usan a menudo (estas son unidades de frecuencia, son iguales a centímetros recíprocos),

\newcommand*{\ic}{cm $^{-1}$\xspace}


Hubo momentos en los que corté literalmente todo. Por ejemplo, si fuera demasiado vago para escribir palabras como "fotodisociación", ingresaría la abreviatura \ pd.

Si necesitas escribir números, hice abreviaturas como

\newcommand*{\po}[1]{$\times \! $10$^{#1}$} % *10(-n)
\newcommand*{\vp}[2]{#1$ \times \! $10$^{#2}$\xspace} % v*10(n)
\newcommand*{\ve}[2]{#1$\pm$#2\xspace} % v+-e
\newcommand*{\vep}[3]{$(#1 \pm #2)\times \! 10^{#3}$\xspace} % (v+-e)*10^n


Por ejemplo, \ vep es el número v con un error de e multiplicado por 10 elevado a p , es decir \ vep {v} {e} {p} $ = (v \ pm e) \ times10 ^ {p} $.



3.2 Refiriéndose a tablas y figuras

Un poco sobre otra cosa: La referencia de Latech a la referencia \ ref no distingue figuras, tablas, secciones, ... Cuando hay muchas, es molesto y puede generar confusión. Resultó que es muy conveniente formatear enlaces en la forma \ fref {fig: name}, \ fref {tab: name}, \ fref {sec: name}, ... lo cual se puede hacer usando el paquete fancyref.

No solo comprenderá usted mismo a qué se refiere el enlace, sino que también será posible diseñarlos de diferentes maneras (en fuente y color).



3.3 Grandes reemplazos

El estilo se desarrolló gradualmente: para manipulaciones complejas, nunca use los estándares de Latech directamente, sino solo a través de macros. Es muy conveniente cuando hay que editarlo todo para complacer los caprichos del consejo editorial.

Aquí hay una macro para crear una imagen envuelta con texto:

\newcommand*{\EpsWrapD}[7]{%
\begin{wrapfigure}[#5]{#3}{#2 \textwidth} % #3=l,r,L,R
\begin{center} \sffamily
\includegraphics*[width= #2 \textwidth ]{#1} % 1-    ,
% 2-  (   )
\vspace{-#7mm} % #7:       
\caption{\label{fig:#1}#4} % #4 -   
\vspace{-#6pt}
\end{center}% #6:          \end{wrapfigure}}


Aquí hay una macro para crear una tabla envuelta en texto:

\newcommand*{\TableBE}[5]{
\begin{table}[#1] %\captionabove
\vspace*{-#5mm}
\centering \sffamily \caption{\label{tab:#2}#3} \begin{tabular}{#4} \toprule }

\newcommand*{\TableEN}[3]{
\bottomrule \end{tabular}
\vspace{-#2mm} \small \begin{flushleft} #1 \end{flushleft}
\vspace{-#3mm}
\end{table}}


Y aquí está el texto de una tabla simple.

\TableBE{H}{RS_Ham_2pi}{\TableBE{H}{RS_Ham_2pi}{     $^2\Pi $}{G LL}{2} $^2\Pi $ }{G LL}{2}
\CR & |^2\Pi_{1/2} JM_J \pm \rangle & |^2\Pi_{3/2} JM_J \pm \rangle \\
\midrule
|^2\Pi_{1/2} JM_J \pm \rangle & B[J_{\perp}^2+1] -A/2 & -B J_{\perp} \\
|^2\Pi_{3/2} JM_J \pm \rangle & -B J_{\perp} & B[J_{\perp}^2-1] +A/2 \\
\TableEN{}{0}{0}


y su forma compilada:







Macro \ TableBE tiene 5 variables:

# 1) cómo y dónde poner la tabla. Por ejemplo, h = "Me gustaría una mesa aquí",

h! = "Realmente quiero una mesa aquí", H = "Quiero una mesa aquí y eso es todo",

t! = Ponga la tabla en la parte superior de la página,

# 2) enlace a la tabla,

# 3) título de la tabla.

# 4) Descripción de columnas. Por ejemplo, {G LL} significa: alineación a la izquierda, modo matemático, colorear la primera columna.

# 5) Estética: A veces quieres reducir el espacio entre el título y la tabla.

La macro \ TableEN tiene 3 variables:

# 1) texto debajo de la tabla.

# 2) Estética: a veces quieres reducir la distancia entre el texto y la tabla.

# 3) Estética: a veces quieres reducir la distancia entre la mesa y el siguiente texto.



Suele ser conveniente crear macrofamilias. Por ejemplo, tengo una macro principal para insertar una imagen en el texto.

\newcommand*{\RisEpsLarge}[7]{
\begin{figure}[#5] \begin{center}
\includegraphics*[width= #2 \textwidth,#6]{#1} %#6: scale=2, bb=10 20 100 200
\vspace{-#3mm}
\sansmath
\caption{ \label{fig:#1}#4}
\vspace{-#7mm}
\end{center} \end{figure}
}


Tiene 7 parámetros, lo cual es mucho para mí. Por lo tanto, creé la familia de macros que se muestra a continuación. La idea principal es reducir el número de parámetros para que pueda pensar lo menos posible al crear una tabla. El lector adivinará fácilmente que difieren en la regla de la disposición de la imagen y su rotación en + -90 grados (a veces es necesario, porque este tonto inteligente, Latech, tiene sus propias ideas sobre cómo rotar los dibujos).

\newcommand*{\RisEpsPos}[5]{\RisEpsLarge{#1}{#2}{#3}{#5}{#4}{angle=0}{0}}

\newcommand*{\RisEps}[4]{\RisEpsLarge{#1}{#2}{#3}{#4}{!tbhp}{angle=0}{0}}
\newcommand*{\RisEpsTop}[4]{\RisEpsLarge{#1}{#2}{#3}{#4}{!t}{angle=0}{0}}
\newcommand*{\RisEpsBot}[4]{\RisEpsLarge{#1}{#2}{#3}{#4}{!b}{angle=0}{0}}
\newcommand*{\RisEpsPlace}[5]{\RisEpsLarge{#1}{#2}{#3}{#5}{#4}{angle=0}{0}}

\newcommand*{\RisEpsRot}[4]{\RisEpsLarge{#1}{#2}{#3}{#4}{tbhp}{angle=90}{0}}
\newcommand*{\RisEpsRotTop}[4]{\RisEpsLarge{#1}{#2}{#3}{#4}{!t}{angle=90}{0}}
\newcommand*{\RisEpsRotBot}[4]{\RisEpsLarge{#1}{#2}{#3}{#4}{!b}{angle=90}{0}}
\newcommand*{\RisEpsRotBotPlace}[5]{\RisEpsLarge{#1}{#2}{#3}{#5}{#4}{angle=90}{0}}

\newcommand*{\RisEpsRotClock}[4]{\RisEpsLarge{#1}{#2}{#3}{#4}{tbhp}{angle=-90}{0}}
\newcommand*{\RisEpsRotClockTop}[4]{\RisEpsLarge{#1}{#2}{#3}{#4}{!t}{angle=-90}{0}}
\newcommand*{\RisEpsRotClockBot}[4]{\RisEpsLarge{#1}{#2}{#3}{#4}{!b}{angle=-90}{0}}
\newcommand*{\RisEpsRotClockBotPlace}[5]{\RisEpsLarge{#1}{#2}{#3}{#5}{#4}{angle=-90}{0}}


Finalmente, el ejemplo de este artículo usa una macro para insertar una tabla en el texto.

\WrapTableBE<\source>
<source lang="tex">\newcommand*{\WrapTableBE}[6]{
\renewcommand{\baselinestretch}{0.75}\small\normalsize
\begin{wraptable}{#1}{#5\textwidth} \sffamily
\begin{center} \vspace*{-#6mm}
\caption{\label{tab:#2}#3} \begin{tabular}{#4} \toprule }
% #1 : l, r #2 : label #3 : caption #4 : cc|cc|rr|ll #5 : 4 #6: 5%    , 

\newcommand*{\WrapTableEN}[2]{
\bottomrule \end{tabular} \end{center} \vspace{-#2pt} \small #1 \end{wraptable}
\renewcommand{\baselinestretch}{1}\small\normalsize}




Capítulo 4. Exportación de texto a diferentes partes de un libro u otros libros



Al final de cada capítulo, pongo una lista de problemas y una lista de preguntas para el examen. Al final del libro se encuentran estos problemas con las soluciones, así como una lista completa de preguntas del examen.

También estoy escribiendo un segundo libro en paralelo, "Reshebnik", que contiene soluciones a problemas del libro de texto. Esto significa que durante la compilación del libro, el texto se agrega al "Reshebnik".

Por tanto, los mismos textos deberían aparecer en dos lugares completamente diferentes. En lo que sigue, por brevedad, analizaremos solo los problemas con soluciones al final del libro. Quiero que el enunciado de cada problema se imprima dos veces, al final del capítulo y al final del libro, antes de la solución.

Pero absolutamente no quiero tener dos versiones del mismo texto en diferentes lugares, porque esta es la fuente de un número infinito de errores. Esto significa que el compilador debe duplicar por sí mismo fragmentos de texto, copiándolos en diferentes lugares en diferentes libros.

¿Cómo soluciono este problema? Al final del preámbulo, tengo el comando:

\usepackage{newfile} %   newfile
\newoutputstream{ZO} %     ZO
\openoutputfile{Zadachi.tex}{ZO} %       Zadachi.tex
\newcommand*{\PutNumberZO}{\addtostream{ZO}{$\{$\thechapter.\theenumi$\}$}} %   Zadachi.tex %      .


Abre el archivo Zadachi.tex y dirige un flujo de texto allí en tiempo de compilación. El archivo Zadachi.tex está vacío antes de comenzar a trabajar, y también hay un archivo Zadachi_Head.tex que luego se compilará y que se ve, por ejemplo, así:

\chapter{  }
\Epigraf{0.68}{   ,       5 .      12 ,    ?}{"  ", .}
\bigskip
\input{Zadachi}
\endinput
                
\closeoutputstream{ZO}  %   ZO
\include{Zadachi_Head} %   Zadachi_Head.tex 


Aquí viene el nuevo paquete de portapapeles que tiene solo cuatro comandos:

\newclipboard{myclipboard}
- abrir el archivo myclipboard.cpy para escribir,

\openclipboard{myclipboard}
- abrir el archivo myclipboard.cpy para leerlo,

\Copy{item_name}
- escribiendo en el archivo myclipboard.cpy un fragmento con la etiqueta item_name ,

\Paste{item_name}
- leyendo de su archivo myclipboard.cpy del fragmento etiquetado item_name .

Una característica importante de este paquete es que al almacenar un fragmento de texto en un archivo externo, no se olvida de compilar el fragmento en el archivo fuente. Así es como surge el procedimiento de copia. El gran inconveniente de esta solución es que primero debemos abrir el archivo myclipboard.cpy para escribir, escribir las condiciones de la tarea en él, cerrarlo y solo entonces abrirlo para leerlo. Desafortunadamente, no encontré una manera fácil de cerrar y abrir, por lo que uso una solución más engorrosa: se ha introducido una variable booleana FR (FR = First Run) cuyo valor en la primera compilación es FR = true, y en la compilación posterior FR = false. Y si FR = true entonces myclipboard.cpy filese abre para escritura, y si FR = false, el archivo myclipboard.cpy se abre para lectura.

Desafortunadamente, antes de la primera y segunda compilaciones, debe establecer manualmente el valor de la variable FR. Es desagradable, pero está bien si te olvidas de hacerlo. Si siempre tiene FR = verdadero o FR = falso, entonces el libro de problemas simplemente no tendrá condiciones de problema, lo cual es bastante aceptable cuando se trabaja con textos de capítulos.

Fui demasiado vago para resolver este problema, de todos modos el texto debe compilarse al menos tres veces.



Capítulo 5. Trabajar con enlaces



5.1 Creando una bibliografía

Digamos que estoy escribiendo una gran reseña. Esto significa que extraigo fragmentos de mis textos, junto con referencias a la literatura. Al final, le pido al compilador (BibTex) que revise mi bibliografía anterior dispersa en los archivos Bib_File1.bib, Bib_File2.bib ... usando, por ejemplo, el comando

\bibliography{Bib_File1,Bib_File2,...Bib_FileN}


El compilador de enlaces, por supuesto, me convertirá en una maqueta de mi revisión, pero eso no es suficiente para mí.

Al escribir libros y reseñas, es muy útil tener un clasificador de referencias bibliográficas avanzado. Para ello, existe el paquete bibMacros del ciudadano R. Schlicht. Como resultado de la instalación de este paquete, aparecerán varios comandos para trabajar con enlaces en el menú WinEdt en la sección BibTex.



En particular, tengo la oportunidad de crear un nuevo archivo con enlaces de la nueva revisión, Bib_FileN + 1.bib, y, a petición mía, los enlaces se pueden colocar en el orden correcto (por ejemplo, en el orden de mención en el texto, como es habitual en física).



Como recordatorio, archivos como bib contienen bibliografía en forma de entradas como esta:

@article{Levchenko01_7485,year=2001,
 title={Electronic structure of halogen-substituted methyl radicals: excited states of {CH$_2$Cl and CH$_2$F}},
 author={S{ergey} V. Levchenko and A{nna} I. Krylov},
 journal=JCP,volume=115,pages=7485,numpages=10,
 abstract={Electronically excited states in CH2Cl and CH2F radicals are...}}




5.2 Serpiente Gorynych - GOST

Además, los camaradas de habla inglesa no tienen problemas, en mi opinión. Y nosotros, los de habla rusa, tenemos un gran dolor de cabeza. Se llama GOST.

El GOST ruso fue, sin duda, un saboteador muy eficaz de algún país absolutamente hostil a Rusia. Aquí hay un ejemplo de su trabajo







Fig. 4. Serpent Gorynych - GOST (2008)



Como puede ver, un autor de habla rusa debe escribir los apellidos dos veces, reorganizar de manera elegante las iniciales y los apellidos y utilizar cinco estilos de diseño diferentes, según el número de autores. Practique reorganizar las iniciales y el apellido, por ejemplo, para los señores H. Ford III y WS Stoner Jr.



Y estos son solo libros. En los artículos, el saboteador introdujo varios palos oblicuos e incluso dobles, para que pareciera que nadie más en el mundo lo ha hecho.



En una disertación, por ejemplo, el cumplimiento de los estándares es obligatorio. En todo caso, muchos buscadores de empleo creen que sí. En mi época, en 2008, una buena persona, Polyakov, escribió un paquete para formatear de acuerdo con GOST y lo usé para formatear la bibliografía. Soy un buen tipo, pero también un cuervo blanco al mismo tiempo, porque los solicitantes ignoraron masivamente este GOST. Pero todo en el país se ha vuelto más difícil desde entonces, así que no sé cómo es ahora.



Y ahora he terminado el libro, y los enlaces en él también deben formatearse de acuerdo con GOST. Pero, según tengo entendido, los estándares de GOST en la disertación y en el libro son diferentes, en el libro es menos feo. Vamos a Internet, descargamos el paquete Kotelnikov gost, insertamos la línea en el preámbulo

\bibliographystyle{gost2008}


después de lo cual damos formato a la lista de referencias. La escritura está hecha, se observan todos los GOST.

Pero incluso Kotelnikov a veces se equivoca. Entonces, hay errores menores en su paquete. (**)

Por ejemplo, digamos que quiere escribir "Vol. 115". Es una buena práctica no tener un salto de línea entre el "Vol." y "115". Y el paquete de Kotelnikov a veces admite esta brecha, ver fig. 5.





Fig. 5. Registro mal formateado



5.3 Refinamiento con un archivo

Por lo tanto, es necesario revisarlo con un archivo ... (Además, no solo en este lugar. Índice de autor con una mezcla de nombres en inglés y ruso también.) En el proceso de compilación de archivos bib, se crea un archivo P_bibs.bbl ​​que contiene registros tipo

\bibitem{Levchenko01_7485}
\selectlanguageifdefined{english}
\BibEmph{Levchenko~S.~V., Krylov~A.~I.} Electronic structure of
 halogen-substituted methyl radicals: excited states of {CH$_2$Cl and
 CH$_2$F}~// \BibEmph{J. Chem. Phys.} \BibDash
\newblock 2001. \BibDash
\newblock Vol. 115. \BibDash
\newblock P.~7485.


Encontramos todos los errores y los arreglamos a mano. En este ejemplo, en lugar de "Vol. 115", hacemos "Vol. ~ 115". Ocultamos este archivo corregido en un lugar apartado. Antes de la última compilación final, reemplace el archivo P_bibs.bbl ​​actual por el corregido, y todo saldrá bien.



Capítulo 6. Un ejemplo de trabajo mínimo



6.1 Lista de archivos



Aquí hay una plantilla de libro mínima en la que puede encontrar las

ideas enumeradas anteriormente . El directorio principal debe contener archivos:

  1. P_main.tex % main en el proyecto
  2. P_preamble.tex % preámbulo
  3. Ch1.tex % parte 1
  4. Ch2.tex % parte 2
  5. Figs \ P_ABC.eps % Pon tu imagen P_ABC.eps en el subdirectorio Figs.
  6. Zadachi.tex % vacío antes de comenzar a trabajar
  7. Zadachi_Head.tex % título de la pieza con problemas y soluciones.




6.2 Archivos de libros pequeños, compilables

Texto oculto

%  P_main.tex  %   
\documentclass[10pt,twoside,openany]{book}
\usepackage{etoolbox}   % this package introduces operations: \newbool,...

\newbool{For_Internet}
\booltrue{For_Internet}    % %    
%\boolfalse{For_Internet}  %  -  

\newbool{FR} %FR= First Run
%\booltrue{FR}  %  --  make  FR = true
\boolfalse{FR}  %  --  make  FR = false

\input{P_Preamble}       %  
\includeonly{             %     
P_Ch1,        %%%
P_Ch2,        %%%
Zadachi_Head  %%%
}
\begin{document}         %  
\tableofcontents         % 

\ifbool{FR}{\newclipboard{myclipboard}}{}
                          %   
\include{P_Ch1}          %%%
\include{P_Ch2}          %%%

\closeoutputstream{ZO}  %     Zadachi.tex
\ifbool{FR}{}{\openclipboard{myclipboard}}

\include{Zadachi_Head} %      
%\bibliography{P_Bibs}  %   ,   

\end{document}         %  
\endinput              %  ,   
%+++++++++++++++++

%  P_preamble.tex  % 
\usepackage[warn]{mathtext} %(  inputenc, fontenc, babel)
%    ,  
%----   -- 
\usepackage[T2A]{fontenc}
\usepackage[cp1251]{inputenc}
\usepackage[english,russian]{babel}   % load Babel setup for English
                                      % and Russian languages;
                                      % the latter is the default.
%   russian  ,     russian.

%--  
\textheight 187mm
\textwidth 130mm
\headheight13.6pt
\special{papersize=170mm,240mm}
\oddsidemargin -5.4mm
\evensidemargin -5.4mm
\topmargin -5.4mm

%---   
\clubpenalty=400
\widowpenalty=400
\tolerance=500  %max=10000, default=200 (    ).
\looseness=-1 %(     )
\hfuzz=2.5pt %       2.5

%---  
\usepackage{amssymb,amsmath} %   
\usepackage{xspace}
\usepackage{enumerate} % 
\usepackage{booktabs}
\usepackage[dotinlabels]{titletoc}

%--  
\usepackage{graphicx}  %    
%\usepackage[dvips]{color} %   !
\graphicspath{{figs/}} %       *.eps,
\usepackage[usenames,dvipsnames]{xcolor,colortbl}

%---    ,       
\definecolor{lightcyan}{rgb}{0.88,1,1} % : ( 0.88, 1, 1)
\ifbool{For_Internet}{\newcolumntype{g}{>{\columncolor{lightcyan}}c}}%
{\newcolumntype{g}{>{\columncolor{light-gray}}c}}
\newcommand*{\red}[1]{\textcolor[rgb]{1.00,0.00,0.00}{#1}}
\newcommand*{\blue}[1]{\textcolor[rgb]{0.00,0.00,1.00}{#1}}

\ifbool{For_Internet}%
{\renewcommand{\thetable}{\red{{\it\arabic{chapter}.\arabic{table}\,}\normalfont}}}%
{\renewcommand{\thetable}{{\it\arabic{chapter}.\arabic{table}\,}\normalfont}}

\ifbool{For_Internet}%
{\renewcommand{\thefigure}{{\blue{\bfseries{\arabic{chapter}.\arabic{figure}}\normalfont}}}}%
{\renewcommand{\thefigure}{{\bfseries{\arabic{chapter}.\arabic{figure}}\normalfont}}}

%      
 \ifbool{For_Internet}{
 \titlecontents{chapter}[1.8em] % distance to page margin
   {\vspace{3mm} \bfseries\color{blue}} % \sffamily
   {\contentslabel[\thecontentslabel. ]{1.5em}} % distance between 1. and Title of chapter
   {\hspace*{-2.3em}}{\color{blue}
   {\titlerule*[1pc]{}\contentspage}\color{blue}}[\vspace{0.5mm}]
 }{}

\definecolor{light-gray}{gray}{0.95}
\ifbool{For_Internet}{\newcommand*{\CR}{\rowcolor{lightcyan}}}%
{\newcommand*{\CR}{\rowcolor{light-gray}}}

%----     \label{fig:name} \fref{fig:name}
\usepackage[vario]{fancyref} % plain is also possible

\renewcommand*{\fancyrefdefaultspacing}{\fancyreftightspacing}

\frefformat{vario}{\fancyreffiglabelprefix}{\bfseries{#1}\normalfont }
\frefformat{vario}{\fancyreftablabelprefix}{\textit{#1}\normalfont}
\frefformat{vario}{\fancyrefenumlabelprefix}{\textrm{#1}\normalfont}
%   ,   fancyref    .

%---  
\newcommand*{\mb}[1]{\mbox{\boldmath$#1$}}  %  . 

\newcommand*{\BE}{\begin{equation}}        %
\newcommand*{\EN}{\end{equation}}          %

\newcommand*{\BEA}{\begin{subequations} \begin{eqnarray}} %
\newcommand*{\ENA}{\end{eqnarray} \end{subequations}}   %

\newcommand*{\hs}{\hspace*{\parindent}}    %
\newcommand*{\nn}{\nonumber}        %

\newcommand*{\1}{$_1$}
\newcommand*{\2}{$_2$}
\newcommand*{\3}{$_3$}
\newcommand*{\4}{$_4$}
\newcommand*{\5}{$_5$}
\newcommand*{\6}{$_6$}
\newcommand*{\7}{$_7$}
\newcommand*{\8}{$_8$}
\newcommand*{\9}{$_9$}
%
\newcommand*{\T}[1]{\text{#1}}
%
\newcommand*{\vep}[3]{$(#1 \pm #2) \times \! 10 ^{#3} $\xspace} % (v+-e)*10^n
%
\newcommand*{\ic}{$^{-1}$\xspace}                 % inverse centimeters

%----       
\renewcommand{\le}{\leqslant}
\renewcommand{\leq}{\leqslant}
\renewcommand{\ge}{\geqslant}
\renewcommand{\geq}{\geqslant}

%----   
\newcommand*{\TableBE}[5]{
\begin{table}[#1] %\captionabove
\vspace*{-#5mm}
\centering \sffamily \caption{\label{tab:#2}#3} \begin{tabular}{#4} \toprule }

\newcommand*{\TableEN}[3]{
\bottomrule \end{tabular}
\vspace{-#2mm}  \small \begin{flushleft}  #1 \end{flushleft}
\vspace{-#3mm}
\end{table}}

%----    
%  
\newcommand*{\WrapTableBE}[6]{
\renewcommand{\baselinestretch}{0.75}\small\normalsize
\begin{wraptable}{#1}{#5\textwidth} \sffamily
\begin{center} \vspace*{-#6mm}
\caption{\label{tab:#2}#3} \begin{tabular}{#4} \toprule }
% #1 : l, r   #2 : label   #3 : caption  #4 : cc|cc|rr|ll  #5 : 40mm

%    , 
\newcommand*{\WrapTableEN}[2]{
\bottomrule \end{tabular} \end{center} \vspace{-#2pt} \small #1  \end{wraptable}
\renewcommand{\baselinestretch}{1}\small\normalsize}

%----    
\usepackage{wrapfig} %   RisEpsRight

\newcommand*{\EpsWrapD}[7]{%
\begin{wrapfigure}[#5]{#3}{#2 \textwidth} %
\begin{center} \sffamily
\includegraphics*[width= #2 \textwidth ]{#1}
\vspace{-#7mm}
\caption{\label{fig:#1}#4}
\vspace{-#6pt}
\end{center}
\end{wrapfigure}}

%----    
\usepackage{clipboard} % It is used to |copy and \HL\Paste the texts with tasks
\usepackage{newfile}
\newoutputstream{ZO}
\openoutputfile{Zadachi.tex}{ZO}
\newcommand*{\itemZO}[2]{\item  \label{enum:#1}%
\Copy{#1}{\emph{\ifbool{For_Internet}{\blue{ #2 }}{#2}}}%
\addtostream{ZO}{$\{$\thechapter.\theenumi $\}$}}

\endinput

%+++++++++++++++++
%  \Ch1.tex  %  1
\chapter{\label{ch:Chast1}  }
\section{ }
\hs
         (, )  ,        .
       ,       
        .
      wrapfig  floatflt,   .
      ,   .

          
      ,
        ,
  --     TikZ.
%    ,  .      .
          ,   pdf-
  tex$\to$dvi$\to$ps$\to$pdf   
 ,    tex$\to$dvi$\to$pdf.

\section{  }
\hs
    ,     .
   ,       ,     .

          --      .
              .
\BEA
   \sum_{\varkappa=0,...}(1/2)^{\varkappa} \leq {\mb 2}, & \T{   text, $e^x$, \vep{2}{1}{3}   },\\
   \sum\nolimits_{\phi=0,...}(1/2)^{\phi} \le {\mb 2},   & {\text    text, \tg(x) }.
\ENA

\section{   \thechapter}
\begin{enumerate}[$\{$\thechapter.1$\}$]
\begin{writeverbatim}{ZO}
\section{    ~\ref{ch:Chast1}}
\end{writeverbatim}
%---------------------
\itemZO{Zadacha11}{,   ,  $f= \int_0^{\infty} \cos(x/a) \; dx =0$.}
\begin{writeverbatim}{ZO}
\Paste{Zadacha11}\smallskip\\
\hs
   .
     ,  $f = \lim_{R \to \infty} \sin(R/a) = ??$,   .
      -  ,  :
\BE \nn
f = \int_0^{\infty} e^{-bx}\; \cos(x/a) \; dx = \frac{b}{b^2+1/a^2}.
\EN
        .
   ,   ,   $b=0$.
    $f = 0$,    .

\end{writeverbatim}
\end{enumerate}

%+++++++++++++++++
%  \Ch2.tex  %  2
\chapter{\label{ch:Chast2}    }
\section{  ?}
\hs
    ,         \emph{},
   Yo.
          !
      \emph{}!

\section{ }
\hs
             ‘...’  “...”.
       («...»)   („...“) ,   «»  «» .

\WrapTableBE{r}{C2_parties}{   }{g llll}{0.3}{8}
\CR   & I  & II  & III  & IV   \\
\midrule
  & 0 & 0 & 1 & 1  \\
  & 1 & 1 & 0 & 1  \\
  & 0 & 1 & 1 & 0  \\
\WrapTableEN{I, II, III, IV --  , 0  1 --  (, )}{5} %
%
   «»   «» («  ,  „“»).

     «»    \verb|\glqq|   \verb|\grqq|,
  «» --– \verb|\flqq|   \verb|\frqq|.
       babel.

      .
   , «»   ,    -     .

\section{   \thechapter}
\begin{enumerate}[$\{$\thechapter.1$\}$]
\begin{writeverbatim}{ZO}
\section{    ~\ref{ch:Chast2}}
\end{writeverbatim}
%---------------------
\itemZO{Zadacha21}{ .~\fref{tab:C2_parties}        .
          ()    , $0 \le$$\le 1$.
              ,           ? }
\begin{writeverbatim}{ZO}
\Paste{Zadacha21}\hs

\EpsWrapD{P_ABC}{0.28}{r}{ }{8}{0}{6}

   .
      ,     $a+b \ge c$, 
($a,b,c$) --     , . . \fref{fig:P_ABC}.

       --     ,     .
       1.          1,      ,    .
      .

\end{writeverbatim}
\end{enumerate}
\endinput
%  (TikZ)   :
\tikzsetnextfilename{P_ABC}
\begin{tikzpicture}
\coordinate(a) at (1,0);
\coordinate(b) at (-1.3,0);
\coordinate(c) at (0,1);
\draw[very thick] (a) --node[below]{$a$} (b)--node[above left]{$b$} (c)--node[above right]{$c$} (a);
\shade[ball color=blue] (a) circle(0.3) node[below=3mm]{};
\shade[ball color=red]  (b) circle(0.4) node[below=4mm]{};
\shade[ball color=green](c) circle(0.5) node[above=5mm]{};
\end{tikzpicture}

%+++++++++++++++++
%  Figs\P_ABC.eps  % ,  - 

%+++++++++++++++++
%  Zadachi.tex    

%+++++++++++++++++
%  Zadachi_Head.tex %      
\chapter{ }
\input{Zadachi}
\endinput





6.3 El resultado de compilar estos archivos











Notas

(*) Creo que el mejor libro de texto en ruso sobre Latech es el libro de Chebotaev y Kotelnikov "LaTeX en ruso", ver, por ejemplo, aquí: studlab.com/pdf/book/LaTeX-po-russki.pdf . Hasta donde yo sé, los derechos de autor ya han expirado y ahora nada impide que los lectores descarguen la versión electrónica gratuita.



(**) Le informé a I. Kotelnikov sobre esto, prometió arreglarlo.



(La continuación puede ser o no).



All Articles