是否可以在乳胶中写出这个反应?
我使用了此代码,但是 raction 的“图像”非常大。我该如何减小它?
\documentclass[12pt,twoside,a4paper,openright]{report}
\usepackage[portuguese]{babel}
\usepackage[utf8]{inputenc}
\usepackage[inner=3cm,outer=2cm,tmargin=2.0cm,bmargin=2.0cm, includefoot, includehead]{geometry}
\usepackage{chemfig}
\usepackage{chemmacros}
\usepackage{enumitem}
\begin{document}
\newcommand\setpolymerdelim[2]{\def\delimleft{#1}\def\delimright{#2}}
\def\makebraces[#1,#2]#3#4#5{%
\edef\delimhalfdim{\the\dimexpr(#1+#2)/2}%
\edef\delimvshift{\the\dimexpr(#1-#2)/2}%
\chemmove{%
\node[at=(#4),yshift=(\delimvshift)]
{$\left\delimleft\vrule height\delimhalfdim depth\delimhalfdim
width0pt\right.$};%
\node[at=(#5),yshift=(\delimvshift)]
{$\left.\vrule height\delimhalfdim depth\delimhalfdim
width0pt\right\delimright_{\rlap{$\scriptstyle#3$}}$};}}
\setpolymerdelim()
\begin{enumerate}[label=(\arabic*)]
\setcounter{enumi}{3}
\item\setatomsep{1.8em}
\chemfig{R-O-Si(-[2]OR)(-[6]OR)-[@{downleft,0.9},2]O-Si(-[2]OH)(-[6]OR)-[@{downright,0.4},2]OH}
%\schemestart
%\arrow(.mid east--.mid west){->[\parbox{5cm}{\centering -m \si{H_2O}\\-k ROH}]}[,1.8]
%\schemestop
%\arrow(.mid east--.mid west){->[\parbox{5cm}{\centering -m \si{H_2O}\\-k ROH}]}[,1.8]
%\setchemrel{1pt}{}{6em}
\chemrel[-m {\si{H_2O}//-k ROH}]{->}
%\chemrel[$-\mathrm{m\,H_2O}$]{->}
%\arrow{->[\parbox{5cm}{\centering -m \si{H_2O}\\-k ROH}]}
\chemfig{-O-Si(-[2]O-[2]Si([2]-)([4]-)-)(-[6]O-[4]R)-O-Si(-[2]O-[8]H)(-[6]O-[6]Si([6]-)([4]-)-)-O-Si(-[2]O-[2]Si([2]-)([4]-)-)(-[6]O-[8]H)-O-Si([2]-)([6]-)([8]-)}
\makebraces[40pt,40pt]{n}{downleft}{downright}
\end{enumerate}
\end{document}
答案1
我提出以下解决方案。我做了一些更改:
- 首先,我发现你的用法
enumerate
有点奇怪。它看起来就像你想要反应的方程式编号一样。如果是这样,那么我会使用环境equation
。使用类选项,leqno
其数字将放在左侧。 我仍然会使用
chemfig
的\schemestart ... \schemestop
机制。在其中,\arrow
可以使用命令使反应向下而不是向左。这可以通过使用可选参数来实现<angle>
:\arrow{<arrow spec>}[<angle>,<length>]
我使用下面的角度
-90
。为了标签不是要旋转,您可以使用标签*
的语法\arrow
:\arrow{->[*{<angle>}<label>]}[-90]
使用
*{0}
将使标签具有水平方向。这个更像是一种化妆品:我用很多内部有更多的缩进
\chemfig{}
,使公式更具可读性。- 为了在箭头上放置多条线,我使用
tabular
。这比 更方便,\parbox
因为不需要指定宽度。 - 我使用数学模式来计算化学计量因子。
- 最后,我将 的语法
\makebraces
稍微改成了更像 LaTeX 的语法,并将其重命名为\makepolymerbraces
。这只是我的个人品味......
完整示例如下:
代码如下:
\documentclass[12pt,leqno]{article}
\usepackage[utf8]{inputenc}
\usepackage{chemfig}
\usepackage{chemformula}
% polymer delimiters:
\makeatletter
\newcommand*\setpolymerdelim[2]{\def\polymer@delimleft{#1}\def\polymer@delimright{#2}}
\newcommand*\makepolymerbraces[5]{%
\edef\polymer@delimhalfdim{\the\dimexpr(#1+#2)/2}%
\edef\polymer@delimvshift{\the\dimexpr(#1-#2)/2}%
\chemmove{
\node[at=(#4),yshift=(\polymer@delimvshift)]
{$
\left\polymer@delimleft
\vrule height\polymer@delimhalfdim depth\polymer@delimhalfdim width0pt
\right.
$};
\node[at=(#5),yshift=(\polymer@delimvshift)]
{$
\left.
\vrule height\polymer@delimhalfdim depth\polymer@delimhalfdim width0pt
\right\polymer@delimright_{\rlap{#3}}
$};
}%
}
\makeatother
\usepackage{lipsum}% dummy text
\begin{document}
\lipsum[2]
\begin{equation}
\setpolymerdelim[]\setatomsep{2em}
\schemestart
$x$
\chemfig{
R-O-Si
(-[2]OR)
(-[6]OR)
-[@{b1,.6},1.5]
O-Si
(-[2]OH)
(-[6]OR)
-[@{b2},2]
OH
}
\arrow{%
->[*{0}%
\begin{tabular}{c}
\ch{$-m$ H2O} \\
\ch{$-k$ ROH}
\end{tabular}%
]%
}[-90,1.5]
$z$
\chemfig{
-O-Si
(-[2]O-[2]Si([2]-)([4]-)-)
(-[6]O-[4]R)
-O-Si
(-[2]O-[8]H)
(-[6]O-[6]Si([6]-)([4]-)-)
-O-Si
(-[2]O-[2]Si([2]-)([4]-)-)
(-[6]O-[8]H)
-O-Si
([2]-)
([6]-)
-
}
\schemestop
\makepolymerbraces{30pt}{30pt}{$n$}{b1}{b2}
\end{equation}
\lipsum[2]
\end{document}
答案2
请使用这个包chemfig
。关于括号,你应该看看第 12.5 章其文档。
以下是一些可以开始的代码:
% arara: pdflatex
\documentclass{article}
\usepackage{chemfig}
\begin{document}
\setatomsep{7mm}
\chemfig{x\,Et-O-Si(-[2]OEt)(-[6]OEt)-O-Si(-[2]OH)(-[6]OEt)-OH}
\chemrel[$-\mathrm{m\,H_2O}$]{->}
\chemfig{z-O-Si(-[2]O-[2]Si([2]-)([4]-)-)(-[6]O-[4]Et)-O-Si-O-Si-O-Si-}
\end{document}