有人知道是否存在专注于化学和系统生物学的 LaTeX 手册吗?
答案1
我建议遵循 tohecz 的评论。在www.ctan.org/keyword/physics有一个简单的软件包索引,与关键字“化学”、“生物学”(当然还有“物理学”)相关。浏览每个软件包的目录,通常可以找到一个 pdf 手册(可能也在您的硬盘中)。
或者,前往texcatalogue.sarovar.org然后 主题索引 并搜索生物学或者化学
也许也值得一提的文章 生命科学家的 LaTeX 工具(BioTEXniques?)。
答案2
要编写化学反应,有几种(chemtools、mhchem……)要编写有机分子反应方案,有化学图.参见下图。
丙酮酸转化为乙酰辅酶 A
\documentclass[margin={2mm 2mm}]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{amsthm,amssymb,amsmath,amsbsy}
\usepackage{chemfig}
\usepackage[version=3]{mhchem}
\usepackage{chemmacros}
\usepackage{tabularx}
\usepackage{graphicx}
\usepackage{tikz}
\usepackage{circledsteps}
\usepackage{xcolor}%black, blue, brown, cyan, darkgray, gray, green, lightgray, lime, magenta, olive, orange, pink, purple, red, teal, violet, white, yellow
\usechemmodule{orbital,newman}
\usetikzlibrary{arrows}
\usetikzlibrary{calc,arrows.meta}% per right to e left to
\tikzset{myedge/.style={->, -{Latex[#1]}}}
%------- para desenhar ligações linha-pontinhos
\usetikzlibrary{decorations.pathmorphing}
\usetikzlibrary{shapes.misc}
\pgfdeclaredecoration{ddbond}{initial}
{
\state{initial}[width=4pt]
{
\pgfpathlineto{\pgfpoint{4pt}{0pt}}
\pgfpathmoveto{\pgfpoint{2pt}{2pt}}
\pgfpathlineto{\pgfpoint{4pt}{2pt}}
\pgfpathmoveto{\pgfpoint{4pt}{0pt}}
}
\state{final}
{
\pgfpathlineto{\pgfpointdecoratedpathlast}
}
}
\tikzset{lddbond/.style={decorate,decoration=ddbond}}
\tikzset{rddbond/.style={decorate,decoration={ddbond,mirror}}}
%Exemplo: -[:30,2,,,rddbond]
%
\chemsetup[orbital]{
overlay,
opacity=1,
p/color = blue!75,
p/scale=3,
% p/half,
s/scale=1.5
}
%
% \chemnameinit{} % para evitar espaço grande entre molecula e seu nome
%
% [2,,,,decorate,decoration=zigzag] OU [2,,,,decorate,decoration=snake] para "cortar" moleculas grandes
%
% marcadores de posição SEMPRE entre colchetes Ex: @{a3} @{z}
\setchemfig{atom sep=1.8em, cram width = 2pt, cram dash width = 0.2pt, cram dash sep = 0.4pt, bond offset = 1pt}
%
%-------------------------------A R R O W -- x --
%
\catcode`\_=11
\definearrow5{-x>}{%
\CF_arrowshiftnodes{#3}%
\CF_expafter{\draw[}\CF_arrowcurrentstyle](\CF_arrowstartnode)--(\CF_arrowendnode)%
coordinate[midway,shift=(\CF_ifempty{#4}{225}{#4}+\CF_arrowcurrentangle:\CF_ifempty{#5}{5pt}{#5})](line@start)%
coordinate[midway,shift=(\CF_ifempty{#4}{45}{#4}+\CF_arrowcurrentangle:\CF_ifempty{#5}{5pt}{#5})](line@end)%
coordinate[midway,shift=(\CF_ifempty{#4}{135}{#4}+\CF_arrowcurrentangle:\CF_ifempty{#5}{5pt}{#5})](line@start@i)%
coordinate[midway,shift=(\CF_ifempty{#4}{315}{#4}+\CF_arrowcurrentangle:\CF_ifempty{#5}{5pt}{#5})](line@end@i);
\draw(line@start)--(line@end);%
\draw(line@start@i)--(line@end@i);%
\CF_arrowdisplaylabel{#1}{0.5}+\CF_arrowstartnode{#2}{0.5}-\CF_arrowendnode
}
\catcode`\_=8
%
%--------------ARROW EM U MODIFICADA -\lU> ---------------------------------
\catcode`\_=11
\definearrow5{-lU>}{%
\CF_arrowshiftnodes{#3}%
\CF_expafter{\draw[}\CF_arrowcurrentstyle](\CF_arrowstartnode)--(\CF_arrowendnode)node[pos=0.1](Uarrow@arctangent){};% <-------- replaced [midway] with [near start]. Alternatively, use [pos=0.25] or any other value of your choice to fine tune the arrow position.
\CF_ifempty{#4}
{\def\CF_Uarrowradius{0.333}}
{\def\CF_Uarrowradius{#4}}%
\CF_ifempty{#5}%
{\def\CF_Uarrowabsangle{60}}
{\pgfmathsetmacro\CF_Uarrowabsangle{abs(#5)}}% ne prendre en compte que la valeur absolue de l'angle
\expandafter\draw\expanded{[\CF_ifempty{#1}{draw=none}{\unexpanded\expandafter{\CF_arrowcurrentstyle}},-]}(Uarrow@arctangent)%
arc[radius=\CF_compoundsep*\CF_currentarrowlength*\CF_Uarrowradius,start angle=\CF_arrowcurrentangle-90,delta angle=-\CF_Uarrowabsangle]node(Uarrow@start){};
\expandafter\draw\expanded{[\CF_ifempty{#2}{draw=none}{\unexpanded\expandafter{\CF_arrowcurrentstyle}}]}(Uarrow@arctangent)%
arc[radius=\CF_compoundsep*\CF_currentarrowlength*\CF_Uarrowradius,start angle=\CF_arrowcurrentangle-90,delta angle=\CF_Uarrowabsangle]node(Uarrow@end){};
\pgfmathsetmacro\CF_temp{\CF_Uarrowradius*cos(\CF_arrowcurrentangle)<0?"-":"+"}%
\ifdim\CF_Uarrowradius pt>0pt
\CF_arrowdisplaylabel{#1}{0}\CF_temp{Uarrow@start}{#2}{1}\CF_temp{Uarrow@end}%
\else
\CF_arrowdisplaylabel{#2}{0}\CF_temp{Uarrow@start}{#1}{1}\CF_temp{Uarrow@end}%
\fi
}
\catcode`\_=8
%----------------------------------------------
\catcode`\_=11
% Initial arguments:
% #1, #2: Same as for -U> (above arrow)
% #3: Additional label at midpoint (also above arrow)
% #4, #5, #6: Like #1, #2, and #3, but below arrow
% #7: Optional shift, default 0
% #8: Optional arrow radius
% #9: Optional arrow angle
\definearrow9{-Z>}{%
\CF_arrowshiftnodes{#7}%
\expandafter\draw\expandafter[\CF_arrowcurrentstyle](\CF_arrowstartnode)--(\CF_arrowendnode)node[midway](Xarrowarctangent){};%
\CF_ifempty{#8}
{\def\CF_Xarrowradius{0.333}}
{\def\CF_Xarrowradius{#8}}%
\CF_ifempty{#9}%
{\def\CF_Xarrowabsangle{60}}
{\pgfmathsetmacro\CF_Xarrowabsangle{abs(#9)}}
% Draw top arrow (start)
\edef\CF_tmpstr{[\CF_ifempty{#1}{draw=none}{\unexpanded\expandafter{\CF_arrowcurrentstyle}},-]}%
\expandafter\draw\CF_tmpstr (Xarrowarctangent)%
arc[radius=\CF_compoundsep*\CF_currentarrowlength*\CF_Xarrowradius,start angle=\CF_arrowcurrentangle-90,delta angle=-\CF_Xarrowabsangle]node(Xarrow1start){};
% Draw bottom arrow (end)
\edef\CF_tmpstr{[\CF_ifempty{#2}{draw=none}{\unexpanded\expandafter{\CF_arrowcurrentstyle}},-CF]}%
\expandafter\draw\CF_tmpstr (Xarrowarctangent)%
arc[radius=\CF_compoundsep*\CF_currentarrowlength*\CF_Xarrowradius,%
start angle=\CF_arrowcurrentangle-90,%
delta angle=\CF_Xarrowabsangle]%
node(Xarrow1end){};
% Draw bottom arrow (start)
\edef\CF_tmpstr{[\CF_ifempty{#4}{draw=none}{\unexpanded\expandafter{\CF_arrowcurrentstyle}},-]}%
\expandafter\draw\CF_tmpstr (Xarrowarctangent)%
arc[radius=\CF_compoundsep*\CF_currentarrowlength*\CF_Xarrowradius,start angle=\CF_arrowcurrentangle+90,delta angle=\CF_Xarrowabsangle]node(Xarrow2start){};
% Draw bottom arrow (end)
\edef\CF_tmpstr{[\CF_ifempty{#5}{draw=none}{\unexpanded\expandafter{\CF_arrowcurrentstyle}},-CF]}%
\expandafter\draw\CF_tmpstr (Xarrowarctangent)%
arc[radius=\CF_compoundsep*\CF_currentarrowlength*\CF_Xarrowradius,%
start angle=\CF_arrowcurrentangle+90,%
delta angle=-\CF_Xarrowabsangle]%
node(Xarrow2end){};
% Insert labels
\pgfmathsetmacro\CF_tmpstra{\CF_Xarrowradius*cos(\CF_arrowcurrentangle)<0?"-":"+"}%
\pgfmathsetmacro\CF_tmpstrb{\CF_Xarrowradius*cos(\CF_arrowcurrentangle)<0?"+":"-"}%
\ifdim\CF_Xarrowradius pt>0 pt
\CF_arrowdisplaylabel{#1}{0}\CF_tmpstra{Xarrow1start}{#2}{1}\CF_tmpstra{Xarrow1end}%
\CF_arrowdisplaylabel{#4}{0}\CF_tmpstrb{Xarrow2start}{#5}{1}\CF_tmpstrb{Xarrow2end}%
\CF_arrowdisplaylabel{#3}{0.5}\CF_tmpstra\CF_arrowstartnode{}{}{}\CF_arrowendnode%
\CF_arrowdisplaylabel{#6}{0.5}\CF_tmpstrb\CF_arrowstartnode{}{}{}\CF_arrowendnode%
\else
\CF_arrowdisplaylabel{#2}{0}\CF_tmpstra{Xarrow1start}{#1}{1}\CF_tmpstra{Xarrow1end}%
\CF_arrowdisplaylabel{#5}{0}\CF_tmpstrb{Xarrow2start}{#4}{1}\CF_tmpstrb{Xarrow2end}%
\CF_arrowdisplaylabel{#3}{0.5}\CF_tmpstra\CF_arrowstartnode{}{}{}\CF_arrowendnode%
\CF_arrowdisplaylabel{#6}{0.5}\CF_tmpstrb\CF_arrowstartnode{}{}{}\CF_arrowendnode%
\fi
}
% stop editting chemfig
\catcode`\_=8
%----------------------------------------------
% COMANDO PARA ESCREVER ALGO DENTRO DE UM "CARTUCHO"
\newcommand{\enz}{{\Circled[outer color=blue,inner color=blue,fill color=lime]{\textnormal{Enz}}}}
%
\newcommand{\sint}{{\Circled[outer color=blue,inner color=blue,fill color=lime]{\textnormal{Sintase}}}}
%
\newcommand{\enzi}{{\Circled[outer color=blue,inner color=blue,fill color=lime]{\textnormal{Lys}}}}
%
\newcommand{\aden}{{\Circled[outer color=blue,inner color=blue,fill color=lime]{\textnormal{Adenosina}}}}
%
\newcommand{\numer}{{\Circled[outer color=blue,inner color=red,fill color=yellow]{\textnormal{\Huge 1}}}}
\newcommand{\numero}{{\Circled[outer color=blue,inner color=red,fill color=yellow]{\textnormal{\Huge 2}}}}
%--------------------------------------------------------------------------------------
%--------------------------------------------------------------------------------------
\begin{document}
%
%\definesubmol{x}{(-[4]H)(-[0]OH)}
%\definesubmol{y}{(-[0]H)(-[4]HO)}
%
\begin{tabularx}{970pt}{l}
%
\schemestart
%
\chemfig{[,1.5]^{-}O-[:30]C(=[2]O)-[:330]@{a2}C(=[@{a3}6]O)-[:30]CH_3}
%
\arrow{->}[0,1.5]
%
%---------------------------------------------------------------------------------------
\arrow(@{a3}--){0}[200,.6]\chemfig{@{a6}A-[@{a5},1.2]@{a4}H}
%
\arrow(@{a2}--){0}[150,2]\chemfig{[,1.5]S*5([:54]-(-R')=[@{z1}](-CH_3)-\chemabove{N}{\scriptscriptstyle+}(-R)=[@{w1}]@{a1}\charge{180=\:}{}(-[:150,.3,,,,draw=none]^{-})-)}
%
\arrow(@{w1}--){<-[\chemfig{@{bb1}\charge{90=\:}{B}}]}[180,1.5,shorten >= 10pt]\chemfig{[,1.5]^{-}OPOPOCH_2C(=[2,,3]O)(=[2,,5]O)(-[6,,3]O(\hspace{14pt}^{-}))(-[6,,5]O(\hspace{14pt}^{-}))(-[:355,.5,,,,draw=none]H_2)-[:60]*5([:54]=(-@{z42}CH_3)-\chemabove{N}{\scriptscriptstyle+}(-[:30]-[:330]*6(-=N-(-CH_3)=N-(-[2,1]NH_2)=))=(-@{bb2}H)-S-)}
%
%-----------------------------------------------------------------------------
\arrow(@{z42}--){0}[270,.4]\parbox{4cm}{\centering Tiamina difosfato (TPP)}
\arrow(@{z1}--){0}[0,.1]\parbox{5cm}{\centering Ilida de tiamina difosfato\\ (Ilida TPP)}
\arrow(@{a3}--){0}[270,.6]\parbox{2cm}{\centering Piruvato}
%
%============================================================================
\chemmove{ % myedge={right} para meia seta
\draw[red,shorten <=3pt,shorten >=1pt](a1.200).. controls +(270:28mm) and +(90:46mm)..(a2);
\draw[red,shorten <=2pt,shorten >=1pt](a3).. controls +(180:6mm) and +(90:6mm)..(a4);
\draw[red,shorten <=1pt,shorten >=1pt](a5).. controls +(90:6mm) and +(90:6mm)..(a6);
%----------------------------------------------------
\draw[red,shorten <=3pt,shorten >=1pt](bb1).. controls +(90:18mm) and +(0:36mm)..(bb2);
}
\schemestop
\\
\\
\\
\schemestart
%
\arrow{->}
%
\chemleft[
\subscheme{
%
\chemfig{[,1.5]^{-}\,@{b1}\charge{90=\:,180=\:,270=\:}{O}-[@{b2}:30]C(=[2]O)-[@{b3}:330]C(-[:240]HO)(-[:300]CH_3)-[@{b4}:30]*5([:36]-S-(-R')=(-CH_3)-@{b6}\chemabove{N}{\scriptscriptstyle+}(-R)=[@{b5}])}
%
\arrow{-lU>[][CO$_2$][][.5][60]}[0,1.5]
%
\chemfig{[,1.5]HO-[:330]C(-[6]@{z2}CH_3)=[@{d3}:30]*5([:36]-S-(-R')=(-CH_3)-@{d1}\charge{180=\:}{N}(-R)-[@{d2}])}
%
\arrow{->}[0,1.5]
%
\chemfig{[,1.5]@{e2}H-[@{e3}]O-[@{e4}:330]C(-[:240]H_3C)(-[:300]S-[6]-[:330]-[:30](-[:330]R')-[2]SH)-[@{e5}:30]*5([:36]@{e6}-S-(-R')=(-CH_3)-\chemabove{N}{\scriptscriptstyle+}(-R)=)}
%
\arrow{->}[0,1.5]
%
\chemfig{[,1.5]H_3C-[:30]C(=[2]O)-[:330]S-[:30]@{x1}-[:330]-[:30](-[2]SH)-[:330]R'}
%
}
\chemright]
%
\arrow{->}
%
%--------------------------------------------------------------------------------------
\arrow(@{d3}--){0}[100,1.5]\chemfig{[,1.5]@{d4}S*5([:36]--[@{z3}]-(-R')-S-[@{d5}])}
%
\arrow(@{d5}--){0}[150,1]\chemfig{@{d8}A-[@{d7},1.2]@{d6}H}
%
\arrow(@{e2}--){0}[120,.6]\chemfig{@{e1}\charge{0=\:}{B}}
%
\arrow(@{x1}--){0}[90,1.3]\chemfig{[,1.5]S*5([:54]-(-R')=[@{z41}](-CH_3)-\chemabove{N}{\scriptscriptstyle+}(-R)=\charge{180=\:}{}(-[:150,.3,,,,draw=none]^{-})-)}
%
%---------------------------------------------------------------------------------------
\arrow(@{z2}--){0}[270,.2]\parbox{2cm}{\centering HEPTT}
\arrow(@{z3}--){0}[0,.2]\parbox{2cm}{\centering Lipoamida}
\arrow(@{z41}--){0}[0,.2]\parbox{2cm}{\centering Ilida TPP}
%=======================================================================================
\chemmove{ % myedge={right} para meia seta
\draw[red,shorten <=3pt,shorten >=1pt](b1).. controls +(90:8mm) and +(100:6mm)..(b2);
\draw[red,shorten <=1pt,shorten >=1pt](b3).. controls +(80:6mm) and +(100:6mm)..(b4);
\draw[red,shorten <=1pt,shorten >=1pt](b5).. controls +(180:6mm) and +(180:6mm)..(b6);
%----------------------------------------------------
\draw[red,shorten <=3pt,shorten >=1pt](d1).. controls +(180:8mm) and +(180:6mm)..(d2);
\draw[red,shorten <=2pt,shorten >=1pt](d3).. controls +(150:16mm) and +(240:16mm)..(d4);
\draw[red,shorten <=1pt,shorten >=1pt](d5).. controls +(210:6mm) and +(270:6mm)..(d6);
\draw[red,shorten <=1pt,shorten >=1pt](d7).. controls +(90:6mm) and +(90:6mm)..(d8);
%----------------------------------------------------
\draw[red,shorten <=3pt,shorten >=1pt](e1).. controls +(0:8mm) and +(90:6mm)..(e2);
\draw[red,shorten <=2pt,shorten >=1pt](e3).. controls +(80:8mm) and +(60:8mm)..(e4);
\draw[red,shorten <=1pt,shorten >=1pt](e5).. controls +(120:6mm) and +(130:6mm)..(e6);
}
\schemestop
\\
\\
\\
\\
\\
\schemestart
%
\hspace{8cm}
\arrow{->}
%
\chemfig{[,1.5]H_3C-[:30]@{f4}C(=[@{f5}2]O)-[:330]S-[:30]-[:330]-[:30](-[2]SH)-[:330]R'}
%
\arrow{->}
%
\chemleft[
\subscheme{
%
\chemfig{[,1.5]@{g2}H-[@{g3}]O-[@{g4}:300]C(-[:240]H_3C)(-[:300]SCoA)-[@{g5}:60]S-[0]-[:60]-[0](-[:60]SH)-[:300]R'}
%
\arrow(@{g2}--){0}[120,.6]\chemfig{@{g1}\charge{0=\:}{B}}
%
\arrow(@{g5}--){0}[70,1]\chemfig{@{g6}H-[@{g7},1.2]@{g8}A}
%
}
\chemright]
%
\arrow{->}
%
\chemfig{[,1.5]H_3C-[:30]@{z5}C(=[2]@{x2}O)-[:330]SCoA}
%
%----------------------------------------------------------------
\arrow(@{f5}--){0}[150,.6]\chemfig{@{f6}H-[@{f7},1.2]@{f8}A}
%
\arrow(@{f4}--){0}[300,1]\chemfig{CoAS-[@{f3},1.2]@{f2}H}
%
\arrow(@{f2}--){0}[0,.6]\chemfig{@{f1}\charge{90=\:}{B}}
%
\arrow(@{x2}--){0}[90,1]\chemfig{HS-[:30]-[:330]@{z4}-[:30](-[2]SH)-[:330]@{x3}R'}
%
\arrow(@{x2}--){0}[90,.4]\+
%
\arrow(@{x3}--){-U>[FAD][FADH$_2$]}[0,1.5]\chemfig{[,1.5]*5([:-18]-@{z43}-(-R')-S-S-)}
%-------------------------------------------------------------
\arrow(@{z4}--){0}[270,.2]\parbox{3cm}{\centering Dihidrolipoamida}
\arrow(@{z43}--){0}[270,.4]\parbox{2cm}{\centering Lipoamida}
\arrow(@{z5}--){0}[270,.4]\parbox{2cm}{\centering Acetil-CoA}
%=======================================================================================
\chemmove{ % myedge={right} para meia seta
\draw[red,shorten <=3pt,shorten >=1pt](f1).. controls +(90:8mm) and +(90:6mm)..(f2);
\draw[red,shorten <=1pt,shorten >=1pt](f3).. controls +(90:6mm) and +(270:6mm)..(f4);
\draw[red,shorten <=1pt,shorten >=1pt](f5).. controls +(180:6mm) and +(270:6mm)..(f6);
\draw[red,shorten <=1pt,shorten >=1pt](f7).. controls +(90:6mm) and +(90:6mm)..(f8);
%----------------------------------------------------
\draw[red,shorten <=3pt,shorten >=1pt](g1).. controls +(0:8mm) and +(90:6mm)..(g2);
\draw[red,shorten <=1pt,shorten >=1pt](g3).. controls +(270:6mm) and +(240:6mm)..(g4);
\draw[red,shorten <=1pt,shorten >=1pt](g5).. controls +(120:16mm) and +(180:16mm)..(g6);
\draw[red,shorten <=1pt,shorten >=1pt](g7).. controls +(90:6mm) and +(90:6mm)..(g8);
}
\schemestop
\\
\end{tabularx}
\end{document}