LaTeXで物理学の本を書く方法。第1条

これはHabréに関する私の最初の記事です。



第1章;序章



1.1自己紹介と、なぜこれを書いているのか、私は



研究者、物理学者です。最近、880ページと1560グラムの重量の分光法に関する本を出版しました。私はこの本を9年間書き、その内容について講義をしています。時間がかかったのは当然です。自然ではないのは、費やされた時間の大部分がデザイン、つまりラテック言語の学習に費やされたということです。そして、これは私がずっとLatekhについて書いているという事実にもかかわらず、個人的にさまざまな出版社で約50の記事を書き、出版しました。



この記事では(継続が計画されていますが、これがどうなるかです)、多大な費用をかけて得た知識を読者と共有したいと思います。読者が記事だけを書いている場合、彼は私の記事を本当に必要としません-それは大きな本の著者が必要とするものを含んでいます。



この本の出版後(これまでのところ、残念ながらロシア語のみ)、私は別の本「Latekhで物理学に関する本を書く方法」を書きたいと強く望んでいました。



1.2そしてなぜハブレに?



ロシアにLatechユーザーのためのメインフォーラムがあったら、私はそこにいるでしょう。しかし、残念ながら、彼はそうではありません。世界にあるかどうか-わかりません。ラテックス.org /フォーラムtex.stackexchange.comのような非常にまともなフォーラムがありますが、ほとんどの場合、質問と回答があります。



ロシアには優れた作家がいますが、有名な大規模なフォーラムはありません。それは残念だ。



サンクトペテルブルク州立大学の知人の学生は最近、Latekhでテキストを書くことを余儀なくされていると私に言いましたが、彼らは本や良いサイトをお勧めしていません。このアプローチでは、ワニが離陸する可能性がありますが、非常に低いだけです。



1.3なぜラテックなのか?



私は他の編集者を知りません。私の人生で、WordやOpenOfficeで真面目な作品を1つ書いたことはありません。したがって、エディターを比較することはできません。ラテックは老妻のようなものです。愛があり、喧嘩があり、すべてが...しかし、彼なしでは私はもはやできません。



Latechは、他のどのエディターよりもテキストをより適切に、より簡単に、より美しくフォーマットするという意見がよくあります。彼は作者にこう言っています。「さておき、あなたはまだテキストのデザインについて何も理解していません。プロの仕事をさせてください。」



これは部分的にしか真実ではないと思います。私はテキストのデザインに多くの時間を費やしました、そしてそれはとても悲しいです。 Latechを使用するためのルールについては説明しませんが、これに適した本があります(*)まったく逆です。これらの本にないものについて書きます。



テキストのデザインと図面の作成に関しては、私のテキストがここハブレの誰かに興味を持っている場合、少なくとも簡単に説明したいトリッキーなトリックがたくさんあります。



1.4



もちろん、Latechで書いている人の数はごくわずかであることを理解しています。原則として、数学者と物理学者、そしてそれでもすべてではありません。 Latechで書いている著者のうち、本を書いている人の割合は非常に小さいです。最後に、ロシア語での書き込みはごくわずかです。



このメモの論理は、本を書くためのLatechの使用について読者に広い視野を与えることではありません。私はこれについて十分な見通しを持っていません:どこでも掘る人は誰でも深く掘らないと確信しています。メモの論理は次のとおりです。「密林のどこにどの道が続くかわかりません。1つの道に沿って密林を歩きました。それについてお話しします。」



トレンドについて言えば、ロシアでのサイエントメトリクスの普及、つまりヒルシュ指数(および彼のような他のインデックス)と引用の数は、科学書を完全に破壊するはずです。つまり、まず第一に、ポジションを任命するとき、そして助成金や他の種類の資金を分配するときに、この科学的指標を考慮に入れるということです。本はヒルシュ指数にはまったく含まれていないことを思い出させてください。



私たちの科学監督者がすべてにおいて一貫している場合、将来、彼らはロシア語、特に書かれたものを、解雇を含むまで、厳しく罰せられる本を書くこと(罰すること、およびロシア語で本を書くこと)を禁止すべきです。公式の労働時間を非常に効果的に使用しないため。



したがって、私の作品であるこの本は、私には愚かで不必要なもののように見えることがあります。しかし、エキセントリックなしで生きるのは退屈です(愚か者?)...



その上、ここ、ハブレでは、人々はしばしばグラモフォンレコードやカセットレコーダーのようなあらゆる種類のがらくたについての記事を書きます。なぜ私のトピックは悪いのですか?



1.5最高の現代の本



私の教科書を書く過程で、私は膨大な数の外国の本や教科書を調べ、私の分野で最高の教科書はアトキンスによって書かれたという結論に達しました(PW Atkins)オックスフォードからさまざまな共著者と。たとえば、「Molecular Quantum Mechanics」(2005)を参照してください。 Demtroderによる非常に優れた本もあります(W. Demtroder、「レーザー分光法:基本的な概念と計測」、2003年;電気力学と光学」、2019年; ...



Demtroderの興味深い点-彼は本をLatehe:ドイツにはそのようなサービスがありますが、ロシアにはありません。



さらに、これらの本は、デザインほど内容的には最高ではありません。裸眼では、TikZパッケージを積極的に使用してすべてLatechで製造されていることがわかります。その結果、LatechとTikZの組み合わせが、最高の世界レベルでデザインされた本を作成するための最良の方法であると感じました。そのため、私の本ではTikZが頻繁に使用されていました(それがなくてもできる場合でも)。



1.6未来の理想の本未来



の理想の本について推測したいと思います。つまり、科学的な出版が必然的にどこに来るのかについてです(まあ...来るはずです)。つまり、私たち科学者は、競争力と魅力を高めるために何を目指すべきかについてです。



当然のことながら、未来の本は紙と電子の2つのバージョンで存在します。また、色付きになります。また、絵だけでなく色も目立ちます。



コンテンツをテキスト、写真、表、式に明確に現代的に分割することは過去のものとなります。たとえば、テキスト、図、表などのいくつかの場所を結ぶ矢印が必要です。なぜ図と表を分けるのですか?テーブル内に写真を配置できない、またはその逆ができないのはなぜですか?それらを混ぜておく方が便利なこともありませんか?



図1は、私の本(オンライン版)の2ページを示しており、テキストとグラフィックが互いにスムーズに流れ込むことができることを明確にしています。





図: 1.私の本のデザインの例。写真へのテーブルの流れは、



他のアイデア、オフハンドで示されています



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

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


もちろん、これらの夢はすべて、この高価で不必要な気まぐれをすべて考えている生きている編集者に会うまで、私の頭の中に咲きましたが、それは別のトピックです。



1.7コンパイラ、エディタ、Latech方言について

これは非常に大きくてつらいトピックです。



私はWindows / MikTeX / WinEdtバンドル(= OS /コンパイラ/エディタ)を使用していますが、このバンドル内でもバージョンの選択肢が豊富です。



WinEdtエディターが最適だと思いますが(TexStudioも使用することもあります)、バージョン5.6以降、不快な方法で進化し始めました(ここでは、WinEdtハックについては説明しませんが、これはどのバージョンでも問題ありません)。



たとえば、私は保守的で盲目なので、WinEdtの作成者によって提案されたものではなく、構文の色のみを認識します。図を参照してください。 2と図。 3.3。





図: 2. WinEdtv.10の構文の色付け





図。 3. WinEdt v.5.6での構文の色付け



しかし、主な厄介な点は、LuaLatex、XeLatexなどの方言が開発され、積極的に実装されているUTF-8エンコーディングの8ビットフォントで動作できるふりをする新しいコンパイラです。進歩のようです。これらの新しい方言は、Old Church Slavonicを使用しても、任意のタイプフェースでテキストを作成できること。しかし、いくらの費用がかかりますか...



私の主な不満の1つは、インターネットからテキストを転送すると、エンコードが混在している可能性があり、エディターが一部の文字を表示せず、コンパイラーがエラーを表示して見つけにくいことです。



ロシア語のテキストの場合、7ビットフォントとANSI / Windows1251エンコーディングのみを認識し、インターネットからテキストを直接転送するのではなく、必要に応じてすべてのエンコーディングを構成できる簡略化されたエディター(Notepad ++など)を介して転送します。



そして最後に、テキストの最終的なフォーマットを行って、UTF-8に切り替えることができます。これは大変な作業です。



テキストのフォーマットにまったく影響を与えないLatechのフォントの唯一の簡単な改善は、CMからCM-superへの移行です。



たとえば、いつでもフォーマット設定で遊ぶことができることを思い出させてください。

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


第2章あなたの基準



2.1初心者向けの



ヒントこれは、意欲的なロングテキストライター向けの基本的なヒントのリストです。大きなテキストは、めくるのが非常に面倒なテキストであり、検索コマンドと置換コマンドでのみ編集できます。

軍人が言うように、アドバイスはすべて「血で書かれている」。さて、血ではありません...しかし、費やされた時間、神経、頭痛...最初は、すべてを修正する時間があるようです。そして、編集局の好みに合わせて本を作り直すことは、非常に時間のかかる作業であることがわかりました。



2.1.1将来の本のページ形式を見つけて、最初から前文に含めます。これにより、面倒な再フォーマットを回避できます。最初から、プリアンブルで最終的なページレイアウト(ヘッダー、フッター、余白など)、およびフォントのサイズとタイプを指定します。



たとえば、私の本の形式は70x100 1/16であるため、プリアンブルには次の設定が含まれています。

\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


これがコマンドです

\singlespacing
ドキュメント全体を単一の間隔に設定し、それ自体がsetspaceパッケージの一部です。

このように理解する必要があります。上下の余白は20mmです。したがって、130 * 200mmの領域が利用可能です。録音

\topmargin -5.4mm


ヘッダーの上部hからページの上部までの距離がh = 1インチ+トップマージン= 2 cmであることを意味します。これは、必要な値です。テキストの幅は130mmですが、200 mmの高さから、ヘッダーの高さ(headheight)とヘッダーからテキストまでの距離(headsep)を差し引きます。

さらに3つのコマンドがあることが理解されます。

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


一般式:

240 = y-papersize = 2 *(2.54 cm + topmargin)+ y-textheight + headheight + headsep = 40+ 186.99598 +(12 + 25)* 0.35146mm。



すべてが明らかだと思われます。ただし、コンパイラはすべてのページに次のメッセージを表示します。

パッケージFancyhdr警告:\ヘッドハイトが小さすぎます(12.5pt):

少なくとも13.59999ptにします。

これで、ドキュメントの残りの部分でそれを大きくします。

ただし、これによりページレイアウトに一貫性がなくなる可能性があります。




だから私たちはやり直しています。今
\headheight13.6pt


ネイティブ、つまり組み込みのLatechフォントは10、11、および12ポイントであることを覚えておくと便利です。他のサイズの場合は、特別なパッケージを接続する必要があります。より多くのテキストがページに収まるように、フォントを小さくしたかったのです。しかし、編集部では、11ポイントのLatechフォントはMicrosoftWordでは10.5ポイントのように見えると言われました。そして私は11ポイントを選びました。しかし、無駄です。海外のほとんどの出版社と同様に、10ポイントが必要でした。



大規模で真面目な出版社には独自のスタイルがあり、作者は考える必要はありませんが、これは(通常)ロシアには当てはまりません。



私たちがめったに彼らのスタイルを披露しないのは良いことかもしれないと書いた。最近、彼のドキュメントスタイルである記事をAIP ConferenceProceedings誌に提出しました。

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


そして私は答えを得る:「...あなたのデザインは一致しません...電子メールアドレスは著者の名前の直後にあり、脚注にはないはずです...」



そして私が彼らのウェブサイトからスタイルとドキュメントテンプレートを取得した場合、どうして一致しないのですか?サポートサービスとのやり取りの過程で、彼らが考えるように、私のパッケージのいくつかは古くなっていることが判明したので、彼らのウェブサイト、サービスwww.overleaf.com/latexで私の記事を編集する方が良いです



まず第一に、私は嫌いですこれらのファッショナブルな試みは、私のコンピューターをインターネット上にあるプログラムへのインターフェースに単純化することができますか?そして第二に、記事のスタイルを私のコンパイラーのいくつかの深く隠された設定に結び付けるためにどれほど創造的である必要がありますか?



マガジンのスタイルを変更し(cp)、発行元のスタイルを変更します(revtex4-2)が、なぜそれらをコンパイラーに依存させるのですか?!



2.1.2フォントの選択



エディターのフォントはモノスペースである必要があり(Consolas、Lucida Console、Courier、Courier Newなど)、テキストエディターはブロックモードとラインモードを簡単に切り替える必要があります。これにより、テーブルが正しく準備されていれば、テーブル内の列を再配置できます。



もう一つの例。コンパイル用にファイルを1つだけ残す必要がある場合(20のうち1つの章)、%記号の列を選択して、段落の先頭に移動します。次に、手を使って必要なファイルの前にある%記号を削除します。その結果、目的のファイルを除いて、すべてのファイルがコメントになります。



2.1.3人の視覚的記憶はうまく機能します。彼はテキストのなじみのある箇所を認識しており、この能力を使用しないのは罪です。したがって、私の標準は1文= 1段落です。自動ラインアライメントはありません(ラップを無効にします)。その結果、前の文で何かを変更しても、行のテキストの位置は変更されません。



2.1.4画像を含むファイルの名前は、そのラベルと一致する必要があります。これは便利であり、図面を呼び出すマクロに1つの変数を保存します。



2.1.5記事の名前(タグ)は、標準に従って編集されています。とても便利ですが、味も色も仲間がいません。

私の基準:参照Purcell46_681は、(作成者)-(発行年)-(ページ番号)を意味します。



2.1.6構文の色付け。どういうわけかそれは私にとって非常に重要です。私のカラーリングと標準のWinEdtカラーリングの例を図に示します。 2.

私の意見では、メーカーWinEdtの構文色付けは貧弱で、私の好みに対応していません。

正しい(私の)色付けの原則は次のとおりです

。-コメント:灰色の背景にかすかなイタリック体のテキスト

-リンクテキスト(\ ref、\ cite):明るい背景ですが、文献や方程式への参照では異なり

ます-括弧:太字、明るい背景、バックブラケットには下線を引く必要があります

。--latechコマンド(\ begin):明るい背景、

-サービス文字($、_、):太字でテキスト内で色付きで強調表示されます。--

表の行末(\\):太字の白地に黒バックグラウンド。

2.1.7本の最も単純な「正しい」構造は2つのディレクトリです。1つは本のテキスト用で、もう1つはTikZパッケージでベクトル描画を作成するためのワークショップです。

それぞれの中には、既製の図面用の\ Figsサブディレクトリがあります。

この記事ではワークショップについては説明しません。



第3章あなたの指定



3.1

マクロの呼び出しに慣れている小さな置換ですが、これはおそらく間違っています。



30年前の昔々、モニターを見なくてもマシンガンのスピードで数式を入力できることに感動しました。私はまだそれが好きです。しかし、私は特に自分の指定を使用してテキストを入力することに夢中になりました。もちろん、それらはすべてプリアンブルファイルに収集されます。



略語は常に入力できますか?いいえ、残念ながら、常にではありません。コンパイラはそれらの多くを理解することを望んでいません。たとえば、私はまだのようなひどく便利な環境の略語を見つけていません
\begin{split}--\end{split}, \begin{align}--\end{align}




最も単純な例。

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


のようなもののテキスト

\begin{equation}


非常に怠惰な。したがって、私は略語-\ BEをずっと前に導入しました。なぜ大きな文字で?約30年前、Dos Latech(= EmTex)は小さな文字を扱いたくなかったからです。

英語では、最初の段落は赤い線なしで始まります。このルールを上書きするには、通常、\ hsコマンドを使用します。

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


自動式番号付けをキャンセルします。

\newcommand*{\nn}{\nonumber}


著者のリストについては、ロシア語の類似物など

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


これは、etalをイタリック体で印刷する場合に特に便利です\ xspaceコマンドに注意してください。スペースを作成する必要があるか(単語がさらに進む場合)、そうでないか(句読点がさらに進む場合)を理解します。



化学式を頻繁に書く場合は、次のような置換

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


たとえば、C $ _2 $ H $ _5 $ OHの代わりに、C \ 2H \ 5OHと記述します。少し速いです。



数式にテキストを挿入するには、

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


私の科学では、波の数がよく使用されます(これらは周波数単位であり、センチメートルの逆数に等しい)、

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


文字通りすべてをカットすることもありました。たとえば、怠惰すぎて「photodissociation」のような単語を書くことができない場合は、省略形\ pdを入力します。

あなたが数字を書く必要があるなら、私は次のような省略形を作りました

\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


たとえば、\ vepは、eの誤差に10をpの累乗で乗算した数値vです。 \ vep {v} {e} {p} $ =(v \ pm e)\ times10 ^ {p} $。3.2表と図 の参照他のことについて少し:\ ref参照へのLatechの参照は、図、表、セクションなどを区別しません...それらがたくさんある場合、それは煩わしく、混乱を招く可能性があります。リンクを\ fref {fig:name}、\ fref {tab:name}、\ fref {sec:name}、...の形式でフォーマットすると非常に便利であることがわかりました。これはfancyrefパッケージを使用して実行できます。 リンクが何を指しているのかを自分で理解できるだけでなく、さまざまな方法(フォントと色)でリンクを設計することも可能になります。3.3大規模な交換













スタイルは徐々に発展しました-複雑な操作の場合、Latech標準を直接使用することはなく、マクロを介してのみ使用します。編集委員会の気まぐれを喜ばせるためにすべてを編集しなければならないとき、それは非常に便利です。

これは、テキストで囲まれた画像を作成するためのマクロです。

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


テキストでラップされたテーブルを作成するためのマクロは次のとおりです。

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


そしてここに簡単な表のテキストがあります

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


そしてそのコンパイルされた形式:







Macro \ TableBEには5つの変数があります:

#1)テーブルを置く方法と場所。たとえば、h = "ここにテーブル

が欲しい"、h!= "ここにテーブルが本当に欲しい"、H = "ここにテーブルが欲しい、それだけです"、

t!=テーブルをページの上部に配置、

#2)テーブルへのリンク、

#3)テーブルのタイトル。

#4)列の説明。たとえば、{G LL}は、左揃え、数学モード、最初の列の色付けを意味します。

#5)美学:ヘッダーとテーブルの間のスペースを減らしたい場合があります。

\ TableENマクロには3つの変数があります:

#1)テーブルの下のテキスト。

#2)美学:テキストと表の間の距離を縮めたい場合があります。

#3)美学:テーブルと次のテキストの間の距離を縮めたい場合があります。



多くの場合、マクロファミリを作成すると便利です。たとえば、画像をテキストに挿入するためのメインマクロがあります。

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


それは7つのパラメーターを持っています、それは私にとってたくさんです。そこで、以下に示すマクロファミリを作成しました。主なアイデアは、テーブルを作成するときに考えないように、パラメーターの数を減らすことです。読者は、画像の配置とその回転の規則が+ -90度異なることを簡単に推測できます(この賢い愚か者であるLatechは、図面を回転させる方法について独自のアイデアを持っているため、必要な場合があります)。

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


最後に、この記事の例では、マクロを使用して表をテキストに挿入します

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




第4章本または他の本のさまざまな部分へのテキストのエクスポート



各章の終わりに、問題のリストと試験の質問のリストを載せました。本の最後には、解決策に関するこれらの問題と、試験の質問の完全なリストがあります。

並行して2冊目の本「Reshebnik」を書いています。これには教科書の問題の解決策が含まれています。これは、本の編集中に、テキストが「Reshebnik」に追加されることを意味します。

したがって、同じテキストが2つの完全に異なる場所に表示されるはずです。以下では、簡潔にするために、本の最後で解決策の問題についてのみ説明します。各問題の説明を、章の終わりと本の終わりの2回、解決の前に印刷してほしい。

しかし、これが無限の数のエラーの原因であるため、同じテキストの2つのバージョンを異なる場所に配置することは絶対に望んでいません。これは、コンパイラ自体がテキストのフラグメントを複製し、それらを別の本の別の場所にコピーする必要があることを意味します。

この問題を解決するにはどうすればよいですか。プリアンブルの最後に、次のコマンドがあります。

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


Zadachi.texファイルを開き、コンパイル時にそこにテキストストリームを送信します。Zadachi.texファイルは、作業を開始する前は空です。また、コンパイルされるZadachi_Head.texファイルもあります。これは、たとえば次のようになります。

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


これが新しいクリップボードパッケージです。これには4つのコマンドしかありません。

\newclipboard{myclipboard}
-書き込み用にmyclipboard.cpyファイル開き

\openclipboard{myclipboard}
-読み取り用にファイルmyclipboard.cpy開き

\Copy{item_name}
-ファイルmyclipboard.cpyitem_nameタグ付きのフラグメントを書き込みます

\Paste{item_name}
-自分の読んmyclipboard.cpyのファイルの断片は、ラベルITEM_NAMEを

このパッケージの重要な機能は、テキストの一部を外部ファイルに保存することにより、ソースファイルでその部分をコンパイルすることを忘れないことです。これがコピー手順の発生方法です。このソリューションの大きな欠点は、最初にmyclipboard.cpyファイル開いて書き込み、タスク条件を書き込み、閉じてから、開いて読み取りを行う必要があることです。残念ながら、閉じたり開いたりする簡単な方法が見つからなかったため、より面倒な解決策を使用します。最初のコンパイルでの値がFR = trueで、その後のコンパイルでの値がFR = falseであるブール変数FR(FR = First Run)が導入されました。そして、FR = trueの場合、myclipboard.cpyファイル書き込み用に開き、FR = falseの場合、ファイルmyclipboard.cpyが読み取り用に開かれます。

残念ながら、1回目と2回目のコンパイルの前に、FR変数の値を手動で設定する必要があります。不快ですが、忘れても大丈夫です。常にFR = trueまたはFR = falseである場合、問題の本には問題の状態がないだけです。これは、章のテキストで作業するときに非常に受け入れられます。

私は怠惰すぎてこの問題を解決できませんでした。とにかく、テキストは少なくとも3回コンパイルする必要があります。



第5章リンクの操作



5.1書誌の作成

大きなレビューを書いているとしましょう。これは、文献への参照とともに、テキストから断片を引き出すことを意味します。最後に、コンパイラ(BibTex)に、ファイルBib_File1.bib、Bib_File2.bib ...に散在している以前の書誌を、たとえばコマンドを使用して修正するように依頼します。

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


リンクコンパイラはもちろん私のレビューのモックアップになりますが、それだけでは十分ではありません。

本やレビューを書くときは、高度な書誌参照ソーターがあると非常に便利です。このために、市民R.SchlichtのbibMacrosパッケージがあります。このパッケージをインストールした結果、リンクを操作するための一連のコマンドがBibTexセクションのWinEdtメニューに表示されます。



特に、新しいレビューからのリンクを含む新しいファイルBib_FileN + 1.bibを作成する機会があり、私の要求に応じて、リンクを正しい順序で配置できます(たとえば、物理学で慣例となっているように、テキストで言及されている順序で)。



念のため、bibのようなファイルには、次のようなエントリの形式で書誌が含まれています。

@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蛇ゴリニッチ-GOST

さらに、私の意見では、英語を話す仲間は問題ありません。そして、私たちロシア語を話す人は大きな頭痛の種を抱えています。それはGOSTと呼ばれます。

ロシアのGOSTは、間違いなく、ロシアに対して絶対に敵対的な国の非常に効果的な妨害者でした。これが彼の作品の例です







。 4. Serpent Gorynych-GOST(2008)



ご覧のとおり、ロシア語を話す著者は、名前を2回記述し、イニシャルと名前を大胆に再配置し、作成者の数に応じて5つの異なるスタイルのデザインを使用する必要があります。たとえば、H。フォードIII女史とWSストーナージュニア女史のイニシャルと姓の再配置を練習します。



そして、これらは単なる本です。記事の中で、妨害工作員はさまざまな斜めの棒や二重の棒を紹介しました-それを世界の他の誰も持っていないように見せるために。



たとえば、論文では、基準の順守が必須です。どちらかといえば、多くの求職者はそう思います。私の時代、2008年に、優秀な人物であるPolyakovが、GOSTに従ってフォーマットするためのパッケージを作成し、それを使用して書誌をフォーマットしました。応募者はこのGOSTを大いに無視したので、私は立派な仲間ですが、同時に白いカラスでもあります。しかし、それ以来、国内のすべてが厳しくなっているだけなので、今はどうなっているのかわかりません。



そして今、私は本を完成させました、そしてその中のリンクもGOSTに従ってフォーマットされなければなりません。しかし、私が理解しているように、論文と本のGOST基準は異なり、本ではそれほど醜いものではありません。インターネットにアクセスし、Kotelnikov gostパッケージをダウンロードして、プリアンブルに行を挿入します

\bibliographystyle{gost2008}


その後、参照のリストをフォーマットします。行為が行われ、すべてのGOSTが監視されます。

しかし、コテルニコフでさえ時々間違っています。そのため、彼のパッケージには小さなバグがあります。(**)

たとえば、「Vol.115」と入力するとします。 「Vol。」の間に改行を入れないことをお勧めします。および「115」。そして、コテルニコフパッケージは時々このギャップを許容します。図を参照してください。 5.





図。 5.フォーマットが不十分なレコード



5.3ファイルによる改良

したがって、ファイルで修正する必要があります...(さらに、この場所だけでなく、英語とロシアの名前が混在する作成者のインデックスもあります。)bibファイルをコンパイルする過程で、レコードを含むファイルP_bibs.bblが作成されます。タイプ

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


私たちはすべての間違いを見つけて、手作業で修正します。この例では、「Vol.115」の代わりに「Vol.〜115」を作成します。この修正されたファイルを人里離れた場所に隠します。最後の最終コンパイルの前に、現在のP_bibs.bblファイルを修正されたファイルに置き換えてください。すべてがうまくいきます。



第6章最小限の作業例



6.1ファイルのリストこれ



は、上記の

アイデアを見つけることができる最小限の本のテンプレートですメインディレクトリにはファイルが含まれている必要があります。

  1. プロジェクトのP_main.tex%main
  2. P_preamble.tex%プリアンブル
  3. Ch1.tex%パート1
  4. Ch2.tex%パート2
  5. Figs \ P_ABC.eps%画像P_ABC.epsをFigsサブディレクトリに置きます。
  6. 作業を開始する前にZadachi.tex%が空
  7. Zadachi_Head.tex%問題と解決策のあるパーツのタイトル。




6.2小さな本のファイル、コンパイル可能

隠しテキスト

%  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これらのファイルをコンパイルした結果













(*)Latechで最高のロシア語の教科書は、ChebotaevとKotelnikovによる「LaTeXinRussian」の本だと思います。たとえば、studlab.com / pdf / book /LaTeX-po-russki.pdfを参照してください私の知る限り、その著作権はすでに失効しており、読者が無料の電子版をダウンロードすることを妨げるものは何もありません。



(**)私はこれについてI. Kotelnikovに知らせました、彼はそれを修正することを約束しました。



(継続はそうである場合とそうでない場合があります。)



All Articles