Como escrever um livro de física em LaTeX. Artigo 1

Este é meu primeiro artigo sobre Habré.



Capítulo 1 Introdução



1.1 Permitam-me que me apresente e porque estou a escrever isto



sou um investigador, um físico. Publicou recentemente um livro sobre espectroscopia com 880 páginas e um peso de 1560 gramas. Escrevo este livro há 9 anos, dando palestras sobre seu conteúdo. Demorou muito, o que é natural. O que não é natural é que grande parte do tempo gasto com design, ou seja, com o aprendizado da língua Latech. E isso apesar do fato de ter escrito sobre Latekh toda a minha vida, pessoalmente escrevi e publiquei cerca de 50 artigos em diferentes editoras.



Neste artigo (uma continuação está planejada, mas é assim que será), gostaria de compartilhar com meus leitores meu conhecimento adquirido com um grande custo. Se o leitor escreve apenas artigos, ele realmente não precisa do meu artigo - ele contém o que os autores de livros grandes precisam.



Após a publicação do livro (até agora, infelizmente, apenas em russo), tive um grande desejo de escrever outro livro "Como escrever um livro sobre física em Latekh"



1.2 E por que no Habré?



Se houvesse um fórum principal para usuários Latech na Rússia, eu estaria lá. Mas ele não é, infelizmente. Se existe no mundo - não sei. Existem fóruns muito decentes como latex.org/forum ou tex.stackexchange.com , mas a maioria contém perguntas e respostas.



Existem bons autores na Rússia, mas não existe um grande fórum conhecido. É uma vergonha.



Um aluno conhecido da St. Petersburg State University recentemente me disse que eles são forçados a escrever textos em Latekh, mas não recomendam livros ou bons sites. Com esta abordagem, nossos crocodilos podem decolar, mas apenas muito baixo.



1.3 Por que Latech?



Só não conheço outros editores. Nunca na minha vida escrevi um único trabalho sério no Word ou OpenOffice. Portanto, não posso comparar editores. Latech é como uma velha esposa. Havia amor, havia brigas, tudo era ... Mas sem ele eu não posso mais.



Freqüentemente, existe a opinião de que o Latech formata o texto melhor, mais facilmente e com mais beleza do que qualquer outro editor. Isso ele meio que fala para o autor: "Afaste-se, você ainda não entendeu nada sobre o desenho do texto, deixa um profissional trabalhar."



Acho que isso é apenas parcialmente verdade. Passei muito tempo desenhando o texto e é muito triste. Não vou descrever as regras para trabalhar com Latech, existem bons livros para isso, (*) muito pelo contrário - vou escrever sobre o que esses livros não têm.



Existem muitas técnicas complicadas no design de texto e na criação de desenhos que quero descrever pelo menos brevemente se meu texto interessar a alguém aqui em Habré.



1.4 Tenho um objetivo?



É claro que entendo que um número insignificante de pessoas escreve em Latech. Via de regra, matemáticos e físicos, e mesmo assim nem todos. Dos autores que escrevem em Latech, a parcela daqueles que escrevem livros é muito, muito pequena. Finalmente, escrever em russo é insignificante.



A lógica desta nota não é dar ao leitor uma visão ampla do uso do Latech para escrever livros. Não tenho perspectiva suficiente para isso: tenho certeza de que quem cava em toda parte não cava fundo. A lógica da nota é a seguinte: "Não sei que caminhos levam a que lugar em nossa densa floresta. Andei por uma densa floresta por um caminho e vou contar a vocês".



Se falamos sobre tendências, então a introdução generalizada da cienciometria na Rússia, ou seja, o índice de Hirsch (e outros como ele) e o número de citações, deve destruir completamente um livro científico. Quer dizer, antes de mais nada, levar em conta essa cienciometria nas indicações para cargos, bem como na distribuição de bolsas e outros tipos de financiamento. Deixe-me lembrá-lo de que os livros não são contabilizados no índice de Hirsch.



Se nossos supervisores científicos forem consistentes em tudo, no futuro eles deveriam proibir a língua russa, especialmente a escrita, para escrever livros - punir e para escrever livros em russo - severamente punidos, até e incluindo demissão. Pela utilização extremamente ineficaz do tempo oficial de trabalho.



Portanto, meu trabalho, este livro, às vezes me parece algo estúpido e desnecessário. Mas é chato viver sem excêntricos (idiotas?) ...



Além disso, aqui no Habré as pessoas costumam escrever artigos sobre todo tipo de porcaria, como gramofone ou toca-fitas. Por que meu tópico está pior?



1.5 Melhores livros modernos



No processo de escrever meu livro didático, examinei um grande número de livros e livros didáticos estrangeiros e cheguei à conclusão de que os melhores livros didáticos em minha área foram escritos por Atkins (PW Atkins ) de Oxford com vários co-autores. Ver, por exemplo, " Molecular Quantum Mechanics " (2005). Existem também livros muito bons de Demtroder ( W. Demtroder, "Laser espectroscopia: conceitos básicos e instrumentação", 2003; Electrodynamics and Optics ", 2019; ... )



O que é interessante sobre Demtroder - ele agradece o serviço especial que o ajudou a organizar o livro em Latehe: Esse serviço existe na Alemanha, mas não na Rússia.



Além disso, esses livros são os melhores não tanto em conteúdo quanto em design. A olho nu pode-se ver que todos são feitos em Latech com o uso ativo do pacote TikZ. Como resultado, tive a sensação de que a combinação Latech - TikZ é a melhor maneira de criar um livro desenhado no melhor nível mundial. É por isso que TikZ foi muito usado em meu livro (mesmo quando você pode passar sem ele).



1.6 O livro ideal do futuro



Gostaria de especular sobre o livro ideal do futuro. Ou seja, sobre onde a publicação científica inevitavelmente virá (bem ... deveria vir). Ou seja, sobre o que nós, cientistas, devemos almejar para aumentar nossa competitividade e atratividade.



Naturalmente, o livro do futuro existirá em duas versões: papel e eletrônico. Além disso, será colorido. Além disso, não só os desenhos se destacam em cores



A clara divisão moderna do conteúdo em texto, imagens, tabelas e fórmulas será uma coisa do passado. Por exemplo, são necessárias setas que conectem alguns lugares em textos, figuras, tabelas, etc. Por que separar figuras e tabelas? Por que não consigo colocar fotos dentro da mesa ou vice-versa? Não é mais conveniente às vezes ter uma mistura deles?



A Figura 1 mostra duas páginas do meu livro (versão online) para deixar claro que o texto e os gráficos podem fluir suavemente um no outro.





Figura: 1. Um exemplo do design do meu livro. O fluxo da mesa para a imagem é mostrado



Outras idéias, de improviso.



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

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


Claro, todos esses sonhos floresceram na minha cabeça apenas até eu conhecer um editor vivo, que considera todo esse capricho caro e desnecessário, mas isso é outro assunto.



1.7 Sobre compiladores, editores, dialetos Latech

Este é um tópico muito extenso e doloroso.



Eu uso o pacote Windows / MikTeX / WinEdt (= OS / compilador / editor), mas mesmo dentro deste pacote há uma grande seleção de versões.



Considero o editor WinEdt o melhor (embora às vezes também use TexStudio), mas depois da versão 5.6 ele começou a evoluir de uma forma desagradável para mim (não descrevo o hack WinEdt aqui, mas isso não é um problema para nenhuma versão).



Por exemplo, sou conservador e cego, então só reconheço minha coloração de sintaxe, não aquela sugerida pelo criador do WinEdt, veja a fig. 2 e fig. 3 -





Figura: 2. Coloração de sintaxe no WinEdt v.10





Fig. 3. Minha sintaxe colorida no WinEdt v.5.6



Mas o principal incômodo é que novos compiladores fingem ser capazes de trabalhar com fontes de oito bits em codificações UTF-8, para as quais dialetos como LuaLatex, XeLatex, etc. foram desenvolvidos e introduzidos ativamente. Parece um progresso, que esses novos dialetos são capazes de criar texto com qualquer tipo de letra, mesmo com o antigo eslavo eclesiástico. Mas quantos custos existem ...



Uma das minhas principais reclamações é que se eu transferir algum texto da Internet, provavelmente haverá uma mistura de codificações, o editor não mostrará alguns dos caracteres para mim e o compilador dará um erro que será difícil de encontrar.



Para texto em russo, reconheço apenas fontes de sete bits e codificação ANSI / Windows1251, e transfiro textos da Internet não diretamente, mas por meio de algum editor simplificado (por exemplo, Notepad ++), no qual você pode configurar todas as codificações conforme necessário.



E só no final, fazendo a formatação final do texto, você pode mudar para UTF-8. Isto é muito trabalho.



A única melhoria simples na fonte do Latech que não afeta a formatação do texto de forma alguma é a transição de CM para CM-super.



Deixe-me lembrá-lo de que você sempre pode brincar com as configurações de formatação, por exemplo,

\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. Seus padrões



2.1 Dicas para o escritor iniciante



Aqui está uma lista de dicas básicas para o aspirante a escritor de textos longos. Texto grande é um texto muito tedioso de folhear, só pode ser editado com os comandos de pesquisa e substituição.

Como diriam os militares, todo conselho é "escrito com sangue". Bom, tá bom, não com sangue ... Mas o tempo gasto, nervosismo, dor de cabeça ... No começo parece que aí vai dar tempo de consertar tudo. E então descobri que refazer um livro para se adequar ao gosto da redação é um negócio que consome muito tempo.



2.1.1 Descubra o formato da página de seu futuro livro e inclua-o no preâmbulo desde o início. Isso o salvará da dolorosa reformatação. Desde o início, especifique no preâmbulo o layout final da página (cabeçalhos, rodapés, margens, etc.), bem como o tamanho e o tipo de fonte.



Por exemplo, o formato do meu livro é 70x100 1/16 e, portanto, o preâmbulo contém as seguintes configurações:

\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


aqui está o comando

\singlespacing
define todo o documento com espaçamento simples e é ele próprio parte do pacote setspace.

Deve ser entendido desta forma. As margens, superior e inferior, são de 20 mm. Portanto, uma área de 130 * 200 mm está disponível. Gravação

\topmargin -5.4mm


significa que a distância do topo do cabeçalho h ao topo da página é h = 1 polegada + margem superior = 2 cm, que é o que você deseja. A largura do texto é de 130 mm, mas da altura de 200 mm, subtraia a altura do cabeçalho (headheight) e a distância do cabeçalho ao texto (headsep).

Entende-se que existem mais três comandos:

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


e a fórmula geral:

240 = tamanho do papel y = 2 * (2,54 cm + margem superior) + altura do texto y + altura da cabeça + seio da cabeça = 40+ 186,99598 + (12 + 25) * 0,35146 mm.



Tudo, ao que parece, está claro. Mas o compilador dá a mensagem em todas as páginas:

Pacote Fancyhdr Aviso: \ headheight é muito pequeno (12.5pt):

Faça pelo menos 13.59999pt.

Agora o tornamos tão grande para o resto do documento.

Isso pode fazer com que o layout da página seja inconsistente.




Então, estamos refazendo. Agora
\headheight13.6pt


É útil lembrar que as fontes Latech nativas, isto é, integradas são 10, 11 e 12 pt. Para outros tamanhos, você precisa conectar pacotes especiais. Eu queria que a fonte fosse menor para que mais texto cabesse na página. Mas, na redação, fui informado que a fonte Latech de 11 pt parece 10,5 pt no Microsoft Word. E então escolhi 11 pt. Mas em vão. Foram necessários 10 pt, como fazem na maioria das editoras no exterior.



Uma editora grande e séria tem seu próprio estilo, e então o autor não precisa pensar, mas isso (geralmente) não se aplica à Rússia.



Escrevi e pensei que seria bom que o nosso raramente exibisse seu estilo. Mais recentemente, enviou um artigo para a revista AIP Conference Proceedings, seu estilo de documento

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


e recebo a resposta: "... Seu design não corresponde ... Os endereços de e-mail devem estar logo após os nomes dos autores, e não em notas de rodapé ..."



E como não corresponderia se eu pegasse o estilo e o modelo de documento do site deles? No decorrer da correspondência com o serviço de suporte, descobriu-se que, como eles pensam, alguns dos meus pacotes estão desatualizados e, portanto, é melhor para mim compilar meus artigos em seu site, o serviço www.overleaf.com/latex



Em primeiro lugar, eu odeio Essas tentativas elegantes de simplificar meu computador para uma interface para programas localizados na Internet e, em segundo lugar, quão criativo você precisa ser para amarrar o estilo dos artigos a algumas configurações profundamente ocultas do meu compilador?



Mude o estilo da revista (cp), mude o estilo da editora (revtex4-2), mas por que torná-los dependentes do compilador?!



2.1.2 Seleção de



fonte A fonte no editor deve ser monoespaçada (Consolas, Lucida Console, Courier, Courier New, ...), e o editor de texto deve alternar facilmente entre os modos de bloco e linha. Isso permite reorganizar as colunas nas tabelas, se forem preparadas corretamente.



Outro exemplo. Quando preciso deixar apenas um arquivo para compilação (um capítulo em vinte), seleciono a coluna de sinais% e a movo para o início do parágrafo. Em seguida, uso minhas mãos para remover o sinal% na frente do arquivo de que preciso e, como resultado, todos os arquivos são comentários, exceto o desejado.



2.1.3 A memória visual de uma pessoa funciona bem. Ele reconhece passagens familiares no texto e é pecado não usar essa habilidade. Portanto, meu padrão é uma frase = um parágrafo. Sem alinhamento automático de linha (desative o Wrap). Como resultado, a posição do texto na linha não mudará se eu mudar algo nas frases anteriores.



2.1.4 O nome do arquivo com a imagem deve corresponder ao seu rótulo. Isso é conveniente e também salva uma variável na macro que chama o desenho.



2.1.5 O nome do artigo (tag) é compilado de acordo com a norma. É terrivelmente conveniente, mas não existem companheiros de gosto e cor.

Meu padrão: referência Purcell46_681 significa (autor) - (ano de publicação) - (número da página).



2.1.6 Coloração de sintaxe. Por algum motivo, é muito importante para mim. Um exemplo da minha coloração e da coloração WinEdt padrão são mostrados na Fig. 2.

A coloração de sintaxe do fabricante WinEdt, na minha opinião, é pobre e não corresponde ao meu gosto.

Os princípios corretos (my) de coloração são os seguintes:

- comentários: texto em itálico claro em um fundo cinza,

- texto de referência (\ ref, \ cite): fundo claro, mas diferente para referências à literatura e equações,

- colchetes: negrito, claro fundo, o colchete posterior deve ser sublinhado,

- comandos latech (\ begin): fundo claro,

- caracteres de serviço ($, _,): negrito e destacado no texto com cor,

- fim de linha na tabela (\\): negrito branco sobre preto fundo.

2.1.7 A estrutura "correta" mais simples de um livro são dois diretórios: um é para o texto do livro, o outro é um workshop para fazer desenhos vetoriais no pacote TikZ.

Dentro de cada um há um subdiretório \ Figs para desenhos prontos.

Não vou falar sobre o workshop neste artigo.



Capítulo 3. Suas designações



3.1 Pequenos substitutos

que estou acostumado a chamar de macros, embora isso provavelmente esteja errado.



Era uma vez, há 30 anos, fiquei muito impressionado por poder preencher fórmulas matemáticas na velocidade de uma metralhadora sem olhar para o monitor. Eu ainda gosto disso. Mas eu me apaixonei especialmente por digitar textos usando minhas designações. Todos eles, é claro, são coletados em um arquivo de preâmbulo.



As abreviações sempre podem ser inseridas? Não, infelizmente, nem sempre. O compilador não quer entender muitos deles. Por exemplo, ainda não encontrei uma abreviatura para ambientes terrivelmente úteis como
\begin{split}--\end{split}, \begin{align}--\end{align}




Os exemplos mais simples.

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


Coisas de texto como

\begin{equation}


muito preguiçoso. Portanto, introduzi a abreviatura - \ BE há muito tempo. Por que com letras grandes? Porque há cerca de 30 anos, a Dos Latech (= EmTex) não queria trabalhar com letras minúsculas.

Em inglês, o primeiro parágrafo começa sem uma linha vermelha. Para substituir essa regra, o comando \ hs geralmente é usado:

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


Cancelar a numeração automática da fórmula:

\newcommand*{\nn}{\nonumber}


Para a lista de autores, um análogo do russo , etc .:

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


Isso é especialmente útil se você deseja imprimir et al em itálico. Preste atenção ao comando \ xspace, ele entende se você precisa fazer um espaço (se as palavras vão mais longe) ou não (se os sinais de pontuação vão mais longe).



Se você costuma escrever fórmulas químicas, substituições 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 exemplo, em vez de C $ _2 $ H $ _5 $ OH, escrevo C \ 2H \ 5OH. É um pouco mais rápido.



Para inserir texto em fórmulas matemáticas, eu uso

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


Na minha ciência, os números de onda são frequentemente usados ​​(são unidades de frequência, são iguais a centímetros recíprocos),

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


Houve momentos em que cortei literalmente tudo. Por exemplo, se eu tivesse preguiça de escrever palavras como "fotodissociação", eu digitaria a abreviatura \ pd.

Se você precisar escrever números, fiz abreviações 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 exemplo, \ vep é o número v com um erro de e multiplicado por 10 elevado à potência de p , ou seja, \ vep {v} {e} {p} $ = (v \ pm e) \ times10 ^ {p} $.



3.2 Referindo-se a tabelas e figuras

Um pouco sobre outra coisa: A referência Latech à referência \ ref não distingue figuras, tabelas, seções, ... Quando há muitos deles, é irritante e pode levar a confusão. Descobriu-se que é muito conveniente formatar links na forma \ fref {fig: name}, \ fref {tab: name}, \ fref {sec: name}, ... o que pode ser feito usando o pacote fancyref.

Você não só vai entender a que o link se refere, mas também será possível projetá-los de diferentes maneiras (em fonte e cor).



3.3 Grandes substituições

Gradualmente, um estilo se desenvolveu - para manipulações complexas, nunca use os padrões Latech diretamente, mas apenas por meio de macros. É muito cômodo quando você tem que editar tudo para agradar aos caprichos do conselho editorial.

Aqui está uma macro para criar uma imagem envolvida com o 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}}


Aqui está uma macro para a criação de uma tabela envolvida em 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}}


E aqui está o texto de uma tabela simples

\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}


e sua forma compilada:







Macro \ TableBE tem 5 variáveis:

# 1) como e onde colocar a mesa. Por exemplo, h = "Eu gostaria de uma mesa aqui",

h! = "Eu realmente quero uma mesa aqui", H = "Eu quero uma mesa aqui e é isso",

t! = Coloque a mesa no topo da página,

# 2) link para a mesa,

# 3) título da tabela.

# 4) Descrição das colunas. Por exemplo, {G LL} significa: alinhamento à esquerda, modo matemático, primeira coluna colorida.

# 5) Estética: Algumas vezes você deseja reduzir o espaço entre o título e a tabela.

A macro \ TableEN possui 3 variáveis:

# 1) texto sob a tabela.

# 2) Estética: às vezes você deseja reduzir a distância entre o texto e a tabela.

# 3) Estética: às vezes você deseja reduzir a distância entre a tabela e o texto seguinte.



Freqüentemente, é conveniente criar famílias macro. Por exemplo, tenho uma macro principal para inserir uma imagem no 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}
}


Tem 7 parâmetros, o que é muito para mim. Portanto, criei a família macro mostrada abaixo. A ideia principal é reduzir o número de parâmetros para que você possa pensar o menos possível ao criar uma tabela. O leitor adivinhará facilmente que eles diferem na regra de organização da imagem e sua rotação em + -90 graus (às vezes é necessário, porque este tolo astuto, Latech, tem suas próprias idéias de como girar os desenhos).

\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}}


Por fim, o exemplo deste artigo usa uma macro para inserir uma tabela no 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. Exportando texto para diferentes partes de um livro ou para outros livros



No final de cada capítulo, coloco uma lista de problemas e uma lista de questões para o exame. No final do livro, há esses problemas com soluções, bem como uma lista completa de questões do exame.

Também estou escrevendo um segundo livro em paralelo - "Reshebnik", que contém soluções para problemas do livro didático. Isso significa que durante a compilação do livro, o texto é adicionado ao "Reshebnik".

Assim, os mesmos textos devem aparecer em dois lugares completamente diferentes. A seguir, para resumir, discutiremos apenas os problemas com soluções no final do livro. Quero que o enunciado de cada problema seja impresso duas vezes, no final do capítulo e no final do livro, antes da solução.

Mas eu absolutamente não quero ter duas versões do mesmo texto em lugares diferentes, porque essa é a fonte de um número infinito de erros. Isso significa que o próprio compilador deve duplicar fragmentos de texto, copiando-os para lugares diferentes em livros diferentes.

Como eu resolvo este problema. No final do preâmbulo, tenho o comando:

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


Ele abre o arquivo Zadachi.tex e direciona um fluxo de texto para lá no momento da compilação. O arquivo Zadachi.tex está vazio antes de iniciar o trabalho, e também há um arquivo Zadachi_Head.tex que será compilado e que se parece, por exemplo, com este:

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


Aí vem o novo pacote da área de transferência, que tem apenas quatro comandos:

\newclipboard{myclipboard}
- abrindo o arquivo myclipboard.cpy para escrita,

\openclipboard{myclipboard}
- abrindo o arquivo myclipboard.cpy para leitura,

\Copy{item_name}
- escrever no arquivo myclipboard.cpy um fragmento com a tag item_name ,

\Paste{item_name}
- lendo seu arquivo myclipboard.cpy do fragmento denominado item_name .

Uma característica importante deste pacote é que ao armazenar um trecho de texto em um arquivo externo, não se esquece de compilar o trecho no arquivo fonte. É assim que surge o procedimento de cópia. A grande desvantagem dessa solução é que devemos primeiro abrir o arquivo myclipboard.cpy para escrever, escrever as condições da tarefa nele, fechá-lo e só então abri-lo para leitura. Infelizmente, não encontrei uma maneira fácil de fechar e abrir, então uso uma solução mais complicada: foi introduzida uma variável booleana FR (FR = Primeira execução) cujo valor na primeira compilação é FR = verdadeiro e na compilação subsequente FR = falso. E se FR = true então o arquivo myclipboard.cpyabre para gravação e, se FR = false, o arquivo myclipboard.cpy é aberto para leitura.

Infelizmente, antes da primeira e da segunda compilações, você deve definir manualmente o valor da variável FR. É desagradável, mas está tudo bem se você se esquecer de fazer isso. Se você sempre tiver FR = verdadeiro ou FR = falso, o livro de problemas simplesmente não terá condições problemáticas, o que é bastante aceitável ao trabalhar em textos de capítulo.

Tive preguiça de resolver este problema, de qualquer forma o texto deve ser compilado pelo menos três vezes.



Capítulo 5. Trabalhando com links



5.1 Criação de uma bibliografia

Digamos que estou escrevendo uma grande revisão. Isso significa que tiro pedaços de meus textos, junto com referências à literatura. No final, peço ao compilador (BibTex) que revise minha bibliografia anterior espalhada pelos arquivos Bib_File1.bib, Bib_File2.bib ... usando, por exemplo, o comando

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


O compilador de links, é claro, fará o layout de minha revisão, mas isso não é o suficiente para mim.

Ao escrever livros e resenhas, é muito útil ter um classificador de referências bibliográficas avançado. Para isso, existe o pacote bibMacros do cidadão R. Schlicht. Como resultado da instalação deste pacote, vários comandos para trabalhar com links aparecerão no menu WinEdt na seção BibTex.



Em particular, tenho a oportunidade de criar um novo arquivo com links da nova revisão, Bib_FileN + 1.bib, e, se eu desejar, os links podem ser colocados na ordem correta (por exemplo, na ordem de menção no texto, como é habitual em física).



Como um lembrete, arquivos como bib contêm bibliografia na 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 Serpent Gorynych - GOST

Além disso, os camaradas de língua inglesa não têm problemas, em minha opinião. E nós, falantes de russo, temos uma grande dor de cabeça. É denominado GOST.

O GOST russo foi, sem dúvida, um sabotador altamente eficaz de algum país absolutamente hostil à Rússia. Aqui está um exemplo de seu trabalho







Fig. 4. Serpent Gorynych - GOST (2008)



Como você pode ver, um autor que fala russo deve escrever sobrenomes duas vezes, reorganizar rapidamente as iniciais e sobrenomes e usar cinco estilos diferentes de design, dependendo do número de autores. Pratique reorganizar as iniciais e o sobrenome, por exemplo, para os Srs. H. Ford III e WS Stoner Jr.



E estes são apenas livros. Nos artigos, o sabotador introduziu vários bastões oblíquos e até mesmo duplos - para fazer com que pareça que ninguém mais no mundo fez.



Em uma dissertação, por exemplo, a adesão às normas é obrigatória. Na verdade, muitos candidatos a emprego pensam assim. Na minha época, em 2008, uma boa pessoa, Polyakov, escreveu um pacote para formatar de acordo com GOST, e eu usei para formatar a bibliografia. Eu sou um bom sujeito, mas também um corvo branco ao mesmo tempo, porque os candidatos ignoraram maciçamente esse GOST. Mas tudo no país só ficou mais difícil desde então, então não sei como está agora.



E agora terminei o livro, e nele os links também devem ser formatados de acordo com o GOST. Mas, pelo que entendi, os padrões GOST na dissertação e no livro são diferentes, no livro é menos feio. Vamos à Internet, baixamos o pacote Kotelnikov gost, inserimos a linha no preâmbulo

\bibliographystyle{gost2008}


após o qual formatamos a lista de referências. A ação está feita, todos os GOSTs são observados.

Mas até Kotelnikov às vezes está errado. Portanto, existem pequenos bugs em seu pacote. (**)

Por exemplo, suponha que você queira digitar "Vol. 115". É uma boa prática não ter uma quebra de linha entre o "Vol." e "115". E o pacote Kotelnikov às vezes permite essa lacuna, veja a fig. 5.





Fig. 5. Registro mal formatado



5.3 Refinamento com um arquivo

Portanto, é necessário revisá-lo com um arquivo ... (Além disso, não só neste local. Índice do autor com uma mistura de nomes em inglês e russo também.) No processo de compilação de arquivos bib, é criado um arquivo P_bibs.bbl, contendo os 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 os erros e os corrigimos manualmente. Neste exemplo, em vez de "Vol. 115", criamos "Vol. ~ 115". Escondemos este arquivo corrigido em um local isolado. Antes da última compilação final, substitua o arquivo P_bibs.bbl ​​atual pelo corrigido, e tudo sairá bem.



Capítulo 6. Um Exemplo de Trabalho Mínimo



6.1 Lista de arquivos



Aqui está um modelo mínimo de livro no qual você pode encontrar as

idéias listadas acima . O diretório principal deve conter os arquivos:

  1. P_main.tex % main no projeto
  2. P_preamble.tex % preamble
  3. Ch1.tex % parte 1
  4. Ch2.tex % parte 2
  5. Figs \ P_ABC.eps % Coloque sua imagem P_ABC.eps no subdiretório Figs.
  6. Zadachi.tex % vazio antes de começar a trabalhar
  7. Zadachi_Head.tex % título da parte com problemas e soluções.




6.2 Arquivos de livros pequenos, compiláveis

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 O resultado da compilação desses arquivos











Notas

(*) Acho que o melhor livro didático em russo sobre Latech é o livro de Chebotaev e Kotelnikov "LaTeX em russo", veja, por exemplo, aqui: studlab.com/pdf/book/LaTeX-po-russki.pdf . Pelo que eu sei, os direitos autorais já expiraram e agora nada impede que os leitores baixem a versão eletrônica gratuita.



(**) Eu informei I. Kotelnikov sobre isso, ele prometeu consertar.



(A continuação pode ou não ser.)



All Articles