電子式を描きたいのですが、良い方法はありますか?
以前はTikZを使って描いていましたが、位置調整などが大変で、最近は他のソフトウェアで描いたものを画像にして取り込んでいます。
しかし、本音としては、やはりLaTeX上で完結させたいです。
何か良い方法はあるでしょうか。具体的には、添付画像のような電子式が作成したいです。
奥村先生
ありがとうございます。 chemfigは私も構造式を書くとき利用しているのですが、所望のスタイルの電子式は描きにくく、あまりサポートされていない印象があります。
package documentationを見る限り、線を使わずに点のみで結合を表現することは想定していないような印象を受けます。
一応、CH4の電子式であれば、以下のようにすればそれっぽくはできるのですが、上で提示させていただいたようなN2の電子式を描くのは、少なくとも私の力量では難しいです。
\chemfig[bond style={draw=none}, atom sep=1em]{
H
-\Charge{0=\:, 90=\:, 180=\:, 270=\:}{C}
(-[:90]H)
(-[:270]H)
-H
}
念のためこれの出力を載せておきます。
\documentclass{standalone}
\usepackage{chemfig}
\renewcommand*{\printatom}[1]{\ensuremath{\mathsf{#1}}}
\begin{document}
\chemfig[bond style={draw=none}, atom sep=1em]{
H
-\Charge{0=\:, 90=\:, 180=\:, 270=\:}{C}
(-[:90]H)
(-[:270]H)
-H
}
\end{document}
とした際の出力となります。
ありがとうございます。
私も実はchemfigを知ったのはそちらの記事がきかっけでした。
ただし記述されている内容が古く、現在\lewis
は標準では使えなくなっています。
As announced since version 1.5 of 5/3/2020, the deprecated macros lewis and Lewis are no longer available in the chemfig package. The recommended method for drawing Lewis formulas is to use \charge and \Charge, see page 33.
If the use of the macros lewis and Lewis is indispensable, their code is in the file chemfig-lewis.tex which it is possible to load using input, after having loaded the package chemfig.
\Charge
を用いて
\chemfig[bond style={draw=none}, atom sep=1em]{
H
-\Charge{0=\:, 90=\:, 180=\:, 270=\:}{C}
(-[:90]H)
(-[:270]H)
-H
}
とすればCH4に関してはそれっぽくはなるのですが、少なくとも私の力量ではN2の電子式を描くのは難しいです。
たいへん申し訳ないことに、トラブルで ya ra さんからの投稿が一つ消えてしまいました。内容を再現しておきます:
もうすでに解決されているかもしれませんが、個人的に興味が出たので三重結合について調べてみました。
Google で画像検索 すると、求めているような三重結合の例が LaTeX Stack Exchange で見つかりました。
どうやら、三重結合は \.
を適当に角度を調整して表現するようです。
\documentclass[border = 5pt]{standalone}
\usepackage{chemfig}
\begin{document}
\chemfig{
\charge{180 = {\:}, 0 = {\.}, 25 = {\.}, 335 = {\.}}{N}
\hspace{0.6em}
\charge{0 = {\:}, 180 = {\.}, 155 = {\.}, 205 = {\.}}{N}
}
\end{document}
ただ、これだと面倒だなと感じたので、\definesubmol
を利用して ⋮⋮
を定義してみました。
本当は \charge
内で 3 つの電荷を表現できた方が良いと思いますが、\charge
内の新しい電荷の表現を作成することは出来ないようでした。
\documentclass[border = 5pt]{standalone}
\usepackage{chemfig}
\definesubmol{@}{
\hspace{0.3em}
\charge{
0 = {\.}, 60 = {\.}, 300 = {\.},
180 = {\.}, 120 = {\.}, 240 = {\.}
}{\vphantom{X}}
\hspace{0.3em}
}
\begin{document}
\chemfig{
\charge{180 = {\:}}{N}
!@
\charge{0 = {\:}}{N}
}
\end{document}