Chapitre 1 Introduction
1.1 Permettez-moi de me présenter et pourquoi j'écris ceci Je
suis chercheur, physicien. Récemment publié un livre sur la spectroscopie avec 880 pages et un poids de 1560 grammes. J'écris ce livre depuis 9 ans, tout en donnant des conférences sur son contenu. Cela m'a pris beaucoup de temps, ce qui est naturel. Ce qui n'est pas naturel, c'est qu'une grande partie du temps passé a été consacrée au design, c'est-à-dire à l'apprentissage de la langue Latech. Et ceci malgré le fait que j'ai écrit à Latekh toute ma vie, personnellement écrit et publié une cinquantaine d'articles dans différentes maisons d'édition.
Dans cet article (une suite est prévue, mais c'est ainsi que ça se passera) je voudrais partager avec mes lecteurs mes connaissances acquises à grands frais. Si le lecteur n'écrit que des articles, alors il n'a pas vraiment besoin de mon article - il contient ce dont les auteurs de grands livres ont besoin.
Après la publication du livre (pour l'instant, hélas, uniquement en russe), j'ai eu une grande envie d'écrire un autre livre "Comment écrire un livre sur la physique à Latekh"
1.2 Et pourquoi sur Habré?
S'il y avait un forum principal pour les utilisateurs de Latech en Russie, j'y serais. Mais il ne l'est pas, hélas. S'il y en a dans le monde - je ne sais pas. Il existe des forums très décents comme latex.org/forum ou tex.stackexchange.com , mais il y a surtout des questions et réponses.
Il y a de bons auteurs en Russie, mais il n'y a pas de grand forum bien connu. C'est dommage.
Un étudiant de la connaissance de l'Université d'État de Saint-Pétersbourg m'a récemment dit qu'ils sont obligés d'écrire des textes en Latekh, mais ils ne recommandent pas de livres ou de bons sites. Avec cette approche, nos crocodiles peuvent décoller, mais seulement très bas.
1.3 Pourquoi Latech?
Je ne connais tout simplement pas d'autres éditeurs. Jamais de ma vie n'a écrit un seul travail sérieux dans Word ou OpenOffice. Par conséquent, je ne peux pas comparer les éditeurs. Latech est comme une vieille femme. Il y avait de l'amour, il y avait des querelles, tout était ... Mais sans lui, je ne peux plus.
Il y a souvent une opinion selon laquelle Latech formate le texte mieux, plus facilement et plus magnifiquement que tout autre éditeur. Qu'il dit en quelque sorte à l'auteur: "Écartez-vous, vous ne comprenez toujours rien à la conception du texte, laissez un professionnel travailler."
Je pense que ce n'est que partiellement vrai. J'ai passé beaucoup de temps à concevoir le texte, et c'est très triste. Je ne vais pas décrire les règles pour travailler avec Latech, il y a de bons livres pour cela, (*) bien au contraire - je vais écrire sur ce que ces livres n'ont pas.
En matière de conception de texte et de création de dessins, il y a beaucoup de trucs délicats que je veux décrire au moins brièvement si mon texte intéresse quelqu'un ici sur Habré.
1.4 Ai-je un objectif?
Je comprends bien sûr qu'un nombre insignifiant de personnes écrivent en Latech. En règle générale, les mathématiciens et les physiciens, et même alors pas tous. Parmi les auteurs qui écrivent en Latech, la part de ceux qui écrivent des livres est très, très faible. Enfin, écrire en russe est négligeable.
La logique de cette note n'est pas de donner au lecteur une vue d'ensemble de l'utilisation de Latech pour l'écriture de livres. Je n'ai pas une perspective suffisante pour cela: je suis sûr que quiconque creuse partout ne creuse pas profondément. La logique de la note est la suivante: "Je ne sais pas quels chemins mènent où dans notre forêt dense. J'ai marché à travers une forêt dense le long d'un chemin, et je vais vous en parler."
Si nous parlons de tendances, l'introduction généralisée de la scientométrie en Russie, c'est-à-dire l'indice de Hirsch (et d'autres comme lui) et le nombre de citations, devrait complètement détruire un livre scientifique. Je veux dire, tout d'abord, prendre en compte cette scientométrie lors de la nomination à des postes, ainsi que lors de la distribution de subventions et d'autres types de financement. Permettez-moi de vous rappeler que les livres ne sont pas du tout comptés dans l'index Hirsch.
Si nos superviseurs scientifiques sont cohérents en tout, ils devraient à l'avenir interdire la langue russe, en particulier l'écrit, pour écrire des livres - punir, et pour écrire des livres en russe - sévèrement punis, pouvant aller jusqu'au licenciement. Pour une utilisation extrêmement inefficace du temps de travail officiel.
Par conséquent, mon travail, ce livre, me semble parfois être quelque chose de stupide et d'inutile. Mais c'est ennuyeux de vivre sans excentriques (imbéciles?) ...
D'ailleurs, ici, sur Habré, on écrit souvent des articles sur toutes sortes de bric-à-brac, comme les disques phonographiques ou les magnétophones. Pourquoi mon sujet est-il pire?
1.5 Meilleurs livres modernes
Au cours de la rédaction de mon manuel, j'ai parcouru un grand nombre de livres et de manuels étrangers et suis arrivé à la conclusion que les meilleurs manuels dans mon domaine ont été écrits par Atkins (PW Atkins ) d'Oxford avec divers coauteurs. Voir, par exemple, " Molecular Quantum Mechanics " (2005). Il y a aussi de très bons livres de Demtroder ( W. Demtroder, "Laser spectroscopy: basic concepts and instrumentation", 2003; Electrodynamics and Optics ", 2019; ... )
Ce qui est intéressant à propos de Demtroder - il remercie le service spécial qui l'a aidé à organiser le livre en Latehe: Il existe un tel service en Allemagne, mais pas en Russie.
De plus, ces livres sont les meilleurs non pas tant en contenu qu'en design. L'œil nu peut voir qu'ils sont tous fabriqués à Latech avec l'utilisation active du package TikZ. En conséquence, j'ai eu le sentiment que la combinaison Latech - TikZ est le meilleur moyen de créer un livre conçu au meilleur niveau mondial. C'est pourquoi TikZ a été largement utilisé dans mon livre (même là où vous pouvez vous en passer).
1.6 Le livre idéal du futur
Je voudrais spéculer sur le livre idéal du futur. Autrement dit, à propos de l'endroit où la publication scientifique viendra inévitablement (enfin ... devrait venir). C’est ce à quoi nous, scientifiques, devrions nous efforcer pour accroître notre compétitivité et notre attractivité.
Naturellement, le livre du futur existera en deux versions: papier et électronique. De plus, il sera coloré. De plus, non seulement les dessins se démarqueront en couleur.
La division moderne et claire du contenu en texte, images, tableaux et formules appartiendra au passé. Par exemple, il y a un besoin de flèches qui relient certains endroits dans les textes, figures, tableaux, etc. Pourquoi séparer les figures et les tableaux? Pourquoi ne puis-je pas placer de photos à l'intérieur de la table ou vice versa? N'est-il pas parfois plus pratique d'en avoir un mélange?
La figure 1 montre deux pages de mon livre (version en ligne) pour indiquer clairement que le texte et les graphiques peuvent s'enchaîner en douceur.
Figure: 1. Un exemple de la conception de mon livre. Le flux du tableau dans l'image est montré
D'autres idées, désinvolte.
- , , , .. (, , ).
- . . .
- — . .
- , , . , — , .
- - " ". ? - , : . : TikZ.
Bien sûr, tous ces rêves n'ont fleuri dans ma tête que jusqu'à ce que je rencontre un éditeur vivant, qui considère tout ce caprice coûteux et inutile, mais c'est un autre sujet.
1.7 À propos des compilateurs, des éditeurs, des dialectes latech
C'est un sujet très vaste et douloureux.
J'utilise le bundle Windows / MikTeX / WinEdt (= OS / compilateur / éditeur), mais même dans ce bundle, il y a un grand choix de versions.
Je pense que l'éditeur WinEdt est le meilleur (même si parfois j'utilise aussi TexStudio), mais après la version 5.6, il a commencé à évoluer de manière désagréable pour moi (je ne décris pas ici le hack WinEdt, mais ce n'est un problème pour aucune version).
Par exemple, je suis conservateur et aveugle, donc je ne reconnais que ma coloration syntaxique, pas celle suggérée par le créateur de WinEdt, voir fig. 2 et fig. 3.
Figure: 2. Coloration de la syntaxe dans WinEdt v.10
Fig. 3. Ma coloration syntaxique dans WinEdt v.5.6
Mais le principal inconvénient est que les nouveaux compilateurs prétendent pouvoir travailler avec des polices de huit bits en encodage UTF-8, pour lesquels des dialectes comme LuaLatex, XeLatex, etc. ont été développés et activement introduits. Cela semble être un progrès, que ces nouveaux dialectes sont capables de créer du texte avec n'importe quelle police, même avec Old Church Slavonic. Mais combien de coûts y a-t-il ...
Une de mes principales plaintes est que si je transfère du texte depuis Internet, il y aura probablement un mélange d'encodages, l'éditeur ne me montrera pas certains des caractères et le compilateur donnera une erreur qui sera difficile à trouver.
Pour le texte en russe, je ne reconnais que les polices à sept bits et le codage ANSI / Windows1251, et je transfère les textes d'Internet non pas directement, mais via un éditeur simplifié (par exemple, Notepad ++), dans lequel vous pouvez configurer tous les codages selon vos besoins.
Et ce n'est qu'à la toute fin, en effectuant le formatage final du texte, que vous pouvez passer à UTF-8. C'est beaucoup de travail.
La seule amélioration simple de la police de Latech qui n'affecte en rien le formatage du texte est la transition de CM à CM-super.
Permettez-moi de vous rappeler que vous pouvez toujours jouer avec les paramètres de mise en forme, par exemple,
\clubpenalty=400 % -- . = 300, = 10000.
\widowpenalty=400 %% , .
\righthyphenmin=2 % . Babel, .
\tolerance=500 %max=10000, default=200 ( ).
% , !
\looseness=-1 % .
\hfuzz=2.5pt % 2.5 pt.
Chapitre 2. Vos normes
2.1 Conseils pour le rédacteur débutant
Voici une liste de conseils de base pour le rédacteur de texte long en herbe. Un texte volumineux est un texte très fastidieux à parcourir, il ne peut être modifié qu'avec les commandes de recherche et de remplacement.
Comme le diraient les militaires, chaque conseil est «écrit dans le sang». Bon, d'accord, pas de sang ... Mais le temps passé, les nerfs, les maux de tête ... Au début, il semble qu'alors il y aura du temps pour tout arranger. Et puis il s'avère que retravailler un livre pour l'adapter aux goûts de la rédaction est une entreprise qui prend beaucoup de temps.
2.1.1 Découvrez le format de page de votre futur livre et incluez-le dans le préambule dès le début. Cela vous évitera le reformatage douloureux. Dès le début, précisez dans le préambule la mise en page finale (en-têtes, pieds de page, marges, etc.), ainsi que la taille et le type de police.
Par exemple, le format de mon livre est 70x100 1/16, et donc le préambule contient les paramètres suivants:
\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
voici la commande
\singlespacing
définit le document entier sur un espacement simple et fait lui-même partie du package setspace.
Il doit être compris de cette façon. Les marges, haut et bas, sont de 20 mm. Par conséquent, une superficie de 130 * 200 mm est disponible. Enregistrement
\topmargin -5.4mm
signifie que la distance entre le haut de l'en-tête h et le haut de la page est h = 1 pouce + topmargin = 2 cm, ce que vous voulez. La largeur du texte est de 130 mm, mais à partir de la hauteur de 200 mm, soustrayez la hauteur de l'en-tête (headheight) et la distance entre l'en-tête et le texte (headsep).
Il est entendu qu'il existe trois autres commandes:
\voffset=0 \headheight12pt \headsep25pt % 1 pt = 0.3528
et la formule générale:
240 = y-paperize = 2 * (2,54 cm + topmargin) + y-textheight + headheight + headsep = 40+ 186,99598 + (12 + 25) * 0,35146 mm.
Tout, semble-t-il, est clair. Mais le compilateur donne le message sur chaque page:
Package Fancyhdr Attention: \ headheight est trop petit (12,5pt):
Faites-le au moins 13,59999pt.
Nous en faisons maintenant autant pour le reste du document.
Cela peut toutefois entraîner une mise en page incohérente.
Alors on refait. Maintenant
\headheight13.6pt
Il est utile de se rappeler que les polices Latech natives, c'est-à-dire intégrées, sont 10, 11 et 12 pt. Pour les autres tailles, vous devez connecter des packages spéciaux. Je voulais que la police soit plus petite pour que plus de texte tienne sur la page. Mais à la rédaction, on m'a dit que la police Latech 11 pt ressemble à 10,5 pt dans Microsoft Word. Et donc j'ai choisi 11 pt. Mais en vain. Il fallait 10 pt, comme c'est le cas dans la plupart des maisons d'édition à l'étranger.
Une grande maison d'édition sérieuse a son propre style, et l'auteur n'a pas besoin de réfléchir, mais cela (généralement) ne s'applique pas à la Russie.
J'ai écrit et j'ai pensé qu'il serait bon que les nôtres montrent rarement leur style. Plus récemment soumis un article au magazine AIP Conference Proceedings, son style de document
\documentclass[aip,cp,amsmath,amssymb,reprint]{revtex4-2}
et j'obtiens la réponse: "... Votre conception ne correspond pas ... Les adresses e-mail devraient être juste après les noms des auteurs, et non dans les notes de bas de page ..."
Et comment cela ne peut-il pas correspondre si j'ai pris le style et le modèle de document de leur site Web? Au cours de la correspondance avec le service d'assistance, il s'est avéré que, comme ils le pensent, certains de mes forfaits sont obsolètes, et il est donc préférable pour moi de compiler mes articles sur leur site Web, service www.overleaf.com/latex
Tout d'abord, je déteste Ces tentatives à la mode peuvent-elles simplifier mon ordinateur à une interface vers des programmes situés sur Internet, et deuxièmement, à quel point devez-vous être créatif pour lier le style des articles à certains paramètres profondément cachés de mon compilateur?
Changer le style du magazine (cp), changer le style de l'éditeur (revtex4-2), mais pourquoi les rendre dépendants du compilateur?!
2.1.2 Sélection de
la police La police dans l'éditeur doit être monospace (Consolas, Lucida Console, Courier, Courier New, ...), et l'éditeur de texte doit facilement basculer entre les modes bloc et ligne. Cela vous permet de réorganiser les colonnes dans les tableaux si elles sont correctement préparées.
Un autre exemple. Lorsque je n'ai besoin de ne laisser qu'un seul fichier pour la compilation (un chapitre sur vingt), je sélectionne la colonne de signes% et la déplace au début du paragraphe. Ensuite, j'utilise mes mains pour supprimer le signe% devant le fichier dont j'ai besoin, et par conséquent, tous les fichiers se révèlent être des commentaires, à l'exception de celui souhaité.
2.1.3 La mémoire visuelle d'une personne fonctionne bien. Il reconnaît des passages familiers du texte et c'est un péché de ne pas utiliser cette capacité. Donc, ma norme est une phrase = un paragraphe. Pas d'alignement de ligne automatique (désactiver Wrap). En conséquence, la position du texte sur la ligne ne changera pas si je change quelque chose dans les phrases précédentes.
2.1.4 Le nom du fichier avec l'image doit correspondre à son étiquette. Ceci est pratique et enregistre également une variable dans la macro appelant le dessin.
2.1.5 Le nom de l'article (tag) est compilé selon la norme. C'est terriblement pratique, mais il n'y a pas de camarades dans le goût et la couleur.
Ma norme: Lien Purcell46_681 signifie (auteur) - (année de publication) - (numéro de page).
2.1.6 Coloration de la syntaxe. Pour une raison quelconque, c'est très important pour moi. Un exemple de ma coloration et de la coloration standard de WinEdt sont illustrés à la Fig. 2. La
coloration de la syntaxe du fabricant WinEdt, à mon avis, est médiocre et ne correspond pas à mes goûts.
Les principes de coloration corrects (my) sont les suivants:
- commentaires: texte en italique pâle sur fond gris,
- texte de référence (\ ref, \ cite): fond clair, mais différent pour les références à la littérature et aux équations,
- crochets: gras, lumineux arrière-plan, la parenthèse arrière doit être soulignée,
- commandes latech (\ begin): fond clair,
- caractères de service ($, _,): gras et surlignés dans le texte avec couleur,
- fin de ligne dans le tableau (\\): gras blanc sur noir Contexte.
2.1.7 La structure "correcte" la plus simple d'un livre est constituée de deux répertoires: l'un est pour le texte du livre, l'autre est un atelier de création de dessins vectoriels dans le package TikZ.
À l'intérieur de chacun, il y a un sous-répertoire \ Figs pour les dessins finis.
Je ne parlerai pas de l'atelier dans cet article.
Chapitre 3. Vos désignations
3.1 Petits remplacements
auxquels j'ai l'habitude d'appeler des macros, bien que ce soit probablement faux.
Il était une fois, il y a 30 ans, j'ai été très impressionné de pouvoir remplir des formules mathématiques à la vitesse d'une mitrailleuse sans regarder le moniteur. Je l'aime toujours. Mais je suis particulièrement tombé amoureux de la saisie de textes en utilisant mes désignations. Tous, bien entendu, sont rassemblés dans un fichier de préambule.
Les abréviations peuvent-elles toujours être saisies? Non, malheureusement, pas toujours. Le compilateur ne veut pas en comprendre beaucoup. Par exemple, je n'ai pas encore trouvé d'abréviation pour des environnements terriblement utiles comme
\begin{split}--\end{split}, \begin{align}--\end{align}
Les exemples les plus simples.
\newcommand*{\BE}{\begin{equation}} %
\newcommand*{\EN}{\end{equation}} %
\newcommand*{\BEA}{\begin{subequations} \begin{eqnarray}} %
\newcommand*{\ENA}{\end{eqnarray} \end{subequations}}
Du texte comme
\begin{equation}
très paresseux. Par conséquent, j'ai introduit l'abréviation - \ BE il y a longtemps. Pourquoi avec de grandes lettres? Parce qu'il y a environ 30 ans, le Dos Latech (= EmTex) ne voulait pas travailler avec des petites lettres.
En anglais, le premier paragraphe commence sans ligne rouge. Pour remplacer cette règle, la commande \ hs est généralement utilisée:
\newcommand*{\hs}{\hspace*{\parindent}}
Annuler la numérotation automatique des formules:
\newcommand*{\nn}{\nonumber}
Pour la liste des auteurs, un analogue du russe , etc .:
\newcommand*{\ea}{{\it et al\/}\xspace}
Ceci est particulièrement utile si vous souhaitez imprimer et al en italique. Faites attention à la commande \ xspace, elle comprend si vous devez faire un espace (si les mots vont plus loin) ou non (si les signes de ponctuation vont plus loin).
Si vous écrivez souvent des formules chimiques, des substitutions comme
\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$}
Par exemple, au lieu de C $ _2 $ H $ _5 $ OH, j'écris C \ 2H \ 5OH. C'est un peu plus rapide.
Pour insérer du texte dans des formules mathématiques, j'utilise
\newcommand*{\T}[1]{\text{#1}}
Dans ma science, les nombres d'onde sont souvent utilisés (ce sont des unités de fréquence, elles sont égales à des centimètres réciproques),
\newcommand*{\ic}{cm $^{-1}$\xspace}
Il y avait des moments où je coupais littéralement tout. Par exemple, si j'étais trop paresseux pour écrire des mots comme "photodissociation", j'entrerais l'abréviation \ pd.
Si vous avez besoin d'écrire des nombres, j'ai fait des abréviations comme
\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
Par exemple, \ vep est le nombre v avec une erreur de e multipliée par 10 à la puissance de p , c'est-à-dire \ vep {v} {e} {p} $ = (v \ pm e) \ times10 ^ {p} $.
3.2 Se
référer aux tableaux et aux figures Un peu autre chose: la référence Latech à la référence \ ref ne distingue pas les figures, les tableaux, les sections, ... Quand il y en a beaucoup, c'est ennuyeux et peut prêter à confusion. Il s'est avéré qu'il est très pratique de formater les liens sous la forme \ fref {fig: name}, \ fref {tab: name}, \ fref {sec: name}, ... ce qui peut être fait en utilisant le package fancyref.
Non seulement vous comprendrez vous-même à quoi se réfère le lien, mais il devient également possible de les concevoir de différentes manières (en police et en couleur).
3.3 Grands remplacements
Le style s'est progressivement développé - pour des manipulations complexes, n'utilisez jamais directement les standards Latech, mais uniquement via des macros. C'est très pratique lorsque vous devez tout éditer pour plaire aux caprices du comité de rédaction.
Voici une macro pour créer une image enveloppée de texte:
\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}}
Voici une macro pour créer un tableau enveloppé de texte:
\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}}
Et voici le texte d'un simple tableau
\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}
et sa forme compilée:
Macro \ TableBE a 5 variables:
# 1) comment et où placer la table. Par exemple, h = "Je voudrais une table ici",
h! = "Je veux vraiment une table ici", H = "Je veux une table ici et c'est tout",
t! = Mettre le tableau en haut de la page,
# 2) lien vers le tableau,
# 3) titre du tableau.
# 4) Description des colonnes. Par exemple, {G LL} signifie: alignement à gauche, mode mathématique, colorisation de la première colonne.
# 5) Esthétique: Parfois, vous voulez réduire l'espace entre le titre et le tableau.
La macro \ TableEN a 3 variables:
# 1) texte sous le tableau.
# 2) Esthétique: parfois vous voulez réduire la distance entre le texte et le tableau.
# 3) Esthétique: vous souhaitez parfois réduire la distance entre le tableau et le texte suivant.
Il est souvent pratique de créer des familles de macros. Par exemple, j'ai une macro principale pour insérer une image dans du texte.
\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}
}
Il a 7 paramètres, ce qui est beaucoup pour moi. Par conséquent, j'ai créé la famille de macros ci-dessous. L'idée principale est de réduire le nombre de paramètres afin de pouvoir réfléchir le moins possible lors de la création d'un tableau. Le lecteur devinera facilement qu'elles diffèrent par la règle de la disposition de l'image et sa rotation de + -90 degrés (parfois c'est nécessaire, car cet idiot intelligent, Latech, a ses propres idées sur la façon de faire pivoter les dessins).
\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}}
Enfin, l'exemple de cet article utilise une macro pour insérer un tableau dans du texte
\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}
Chapitre 4. Exportation de texte vers différentes parties d'un livre ou d'autres livres
À la fin de chaque chapitre, je mets une liste de problèmes et une liste de questions pour l'examen. À la fin du livre, il y a ces problèmes avec des solutions, ainsi qu'une liste complète des questions d'examen.
J'écris également un deuxième livre en parallèle - "Reshebnik", qui contient des solutions aux problèmes du manuel. Cela signifie que lors de la compilation du livre, le texte est ajouté au "Reshebnik".
Ainsi, les mêmes textes devraient apparaître à deux endroits complètement différents. Dans ce qui suit, par souci de concision, nous aborderons uniquement les problèmes avec des solutions à la fin du livre. Je veux que l'énoncé de chaque problème soit imprimé deux fois, à la fin du chapitre et à la fin du livre, avant la solution.
Mais je ne veux absolument pas avoir deux versions du même texte à des endroits différents, car c'est la source d'un nombre infini d'erreurs. Et cela signifie que le compilateur doit lui-même dupliquer des fragments de texte, les copiant à différents endroits dans différents livres.
Comment résoudre ce problème. À la fin du préambule, j'ai la commande:
\usepackage{newfile} % newfile
\newoutputstream{ZO} % ZO
\openoutputfile{Zadachi.tex}{ZO} % Zadachi.tex
\newcommand*{\PutNumberZO}{\addtostream{ZO}{$\{$\thechapter.\theenumi$\}$}} % Zadachi.tex % .
Il ouvre le fichier Zadachi.tex et y dirige un flux de texte au moment de la compilation. Le fichier Zadachi.tex est vide avant de commencer le travail, et il existe également un fichier Zadachi_Head.tex qui sera ensuite compilé, et qui ressemble, par exemple, à ceci:
\chapter{ }
\Epigraf{0.68}{ , 5 . 12 , ?}{" ", .}
\bigskip
\input{Zadachi}
\endinput
\closeoutputstream{ZO} % ZO
\include{Zadachi_Head} % Zadachi_Head.tex
Voici le nouveau package de presse-papiers, qui ne contient que quatre commandes:
\newclipboard{myclipboard}
- ouvrir le fichier myclipboard.cpy pour l'écriture,
\openclipboard{myclipboard}
- ouvrir le fichier myclipboard.cpy en lecture,
\Copy{item_name}
- écrire dans le fichier myclipboard.cpy un fragment avec la balise item_name ,
\Paste{item_name}
- lire leur fichier myclipboard.cpy du fragment nommé nom_élément .
Une caractéristique importante de ce paquet est qu'en stockant un morceau de texte dans un fichier externe, il n'oublie pas de compiler le morceau dans le fichier source. C'est ainsi que se déroule la procédure de copie. Le gros inconvénient de cette solution est que nous devons d'abord ouvrir le fichier myclipboard.cpy pour l'écriture, y écrire les conditions de la tâche, le fermer, puis seulement l'ouvrir pour la lecture. Malheureusement, je n'ai pas trouvé de moyen facile de fermer et d'ouvrir, donc j'utilise une solution plus lourde: une variable booléenne FR (FR = First Run) a été introduite dont la valeur à la première compilation est FR = true, et à la compilation suivante FR = false. Et si FR = true, alors le fichier myclipboard.cpys'ouvre pour l'écriture, et si FR = false alors le fichier myclipboard.cpy est ouvert pour la lecture.
Malheureusement, avant les première et deuxième compilations, vous devez définir manuellement la valeur de la variable FR. C’est désagréable, mais ce n’est pas grave si vous oubliez de le faire. Si vous avez toujours FR = true ou FR = false, alors le livre de problèmes n'aura tout simplement pas de conditions de problème, ce qui est tout à fait acceptable lorsque vous travaillez sur des textes de chapitre.
J'étais trop paresseux pour résoudre ce problème, de toute façon le texte doit être compilé au moins trois fois.
Chapitre 5. Utilisation des liens
5.1 Créer une bibliographie
Disons que j'écris une grande critique. Cela signifie que je retire des morceaux de mes textes, ainsi que des références à la littérature. A la fin, je demande au compilateur (BibTex) de réviser ma bibliographie précédente éparpillée dans les fichiers Bib_File1.bib, Bib_File2.bib ... en utilisant, par exemple, la commande
\bibliography{Bib_File1,Bib_File2,...Bib_FileN}
Le compilateur de liens me fera bien sûr une maquette de ma critique, mais cela ne me suffit pas.
Lors de la rédaction de livres et de critiques, il est très utile d'avoir un trieur de références bibliographiques avancé. Pour cela, il y a le package bibMacros du citoyen R. Schlicht. À la suite de l'installation de ce package, un tas de commandes pour travailler avec des liens apparaîtra dans le menu WinEdt de la section BibTex.
En particulier, j'ai l'opportunité de créer un nouveau fichier avec les liens de la nouvelle revue, Bib_FileN + 1.bib, et, si je le souhaite, les liens peuvent être placés dans le bon ordre (par exemple, dans l'ordre de mention dans le texte, comme il est d'usage en physique).
Pour rappel, les fichiers comme bib contiennent une bibliographie sous forme d'entrées comme celle-ci:
@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 Serpent Gorynych - GOST
De plus, les camarades anglophones n'ont aucun problème, à mon avis. Et nous, russophones, avons un gros mal de tête. Il s'appelle GOST.
Le GOST russe était, sans aucun doute, un saboteur très efficace d'un pays absolument hostile à la Russie. Voici un exemple de son travail
Fig. 4. Serpent Gorynych - GOST (2008)
Comme vous pouvez le voir, un auteur russophone doit écrire deux fois les noms de famille, réorganiser les initiales et les noms de famille et utiliser cinq styles de conception différents en fonction du nombre d'auteurs. Pratiquez à réorganiser les initiales et le nom de famille, par exemple, pour MM. H. Ford III et WS Stoner Jr.
Et ce ne sont que des livres. Dans les articles, le saboteur a introduit divers bâtons obliques et même doubles - pour le faire ressembler à personne d'autre au monde.
Dans une thèse, par exemple, le respect des normes est obligatoire. En fait, de nombreux demandeurs d'emploi le pensent. À mon époque, en 2008, une bonne personne, Polyakov, a écrit un package pour le formatage selon GOST, et je l'ai utilisé pour formater la bibliographie. Je suis un bon gars, mais aussi un mouton noir en même temps, car les candidats ont massivement ignoré ce GOST. Mais tout dans le pays n'a fait que devenir plus difficile depuis, donc je ne sais pas comment c'est maintenant.
Et maintenant, j'ai terminé le livre, et les liens qu'il contient doivent également être formatés selon GOST. Mais, si je comprends bien, les normes GOST dans la thèse et dans le livre sont différentes, dans le livre, c'est moins moche. Nous allons sur Internet, téléchargeons le package Kotelnikov gost, insérons la ligne dans le préambule
\bibliographystyle{gost2008}
après quoi nous formaterons la liste des références. L'acte est fait, tous les GOST sont respectés
Mais même Kotelnikov se trompe parfois. Donc, il y a des bugs mineurs dans son paquet. (**)
Par exemple, supposons que vous vouliez taper "Vol. 115". C'est une bonne pratique de ne pas avoir de saut de ligne entre le "Vol". et "115". Et le package Kotelnikov permet parfois cet écart, voir fig. 5.
Fig. 5. Fiche mal formatée
5.3 Raffinement avec un fichier
Nous devons donc le réviser avec un fichier ... (De plus, pas seulement à cet endroit. L'index de l'auteur avec un mélange de noms anglais et russes aussi.) Lors de la compilation des fichiers bib, un fichier P_bibs.bbl contenant des enregistrements est créé type
\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.
Nous trouvons tous les torts et les réparons à la main. Dans cet exemple, au lieu de "Vol. 115", nous créons "Vol. ~ 115". Nous cachons ce fichier corrigé dans un endroit isolé. Avant la dernière compilation finale, remplacez le fichier P_bibs.bbl actuel par le fichier corrigé, et tout se passera bien.
Chapitre 6. Un exemple de travail minimal
6.1 Liste des fichiers
Voici un modèle de livre minimal dans lequel vous pouvez trouver les
idées énumérées ci-dessus . Le répertoire principal doit contenir des fichiers:
- P_main.tex % main dans le projet
- P_preamble.tex % préambule
- Ch1.tex % partie 1
- Ch2.tex % partie 2
- Figs \ P_ABC.eps % Mettez votre image P_ABC.eps dans le sous-répertoire Figs.
- Zadachi.tex % vide avant de commencer le travail
- Zadachi_Head.tex % titre de la partie avec problèmes et solutions.
6.2 Petits fichiers de livres, compilables
Texte masqué
% 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 Le résultat de la compilation de ces fichiers
Notes
(*) Je pense que le meilleur manuel de langue russe sur Latech est le livre de Chebotaev et Kotelnikov "LaTeX en russe", voir, par exemple, ici: studlab.com/pdf/book/LaTeX-po-russki.pdf . Autant que je sache, le droit d'auteur a déjà expiré et rien n'empêche maintenant les lecteurs de télécharger la version électronique gratuite.
(**) J'en ai informé I. Kotelnikov, il a promis de le réparer.
(La continuation peut être ou non.)