我正在尝试将生成的反应方案缩放到chemfig
。.9/textwidth
以下是我的 MWE。
\documentclass{report}
\usepackage{chemfig}
\usepackage[version=3]{mhchem}
\begin{document}
\begin{figure}[width=.9\textwidth]
\schemestart
\ce{O2^.-}\arrow (c1--c2){0}\ce{NO^.}\merge{v}(c1)(c2)--(c3)\ce{ONOO-}
\arrow (--c4){<=>[*{0}\parbox{1.2cm}{\ce{+ H+}\\ pK 6.6}][*{0}\ce{- H+}]}[-90,1.5]\ce{ONOOH}
\arrow(--c5){->[\ce{+ NO^.}][\ce{- HNO2}]}[0,1.5]\ce{NO2^.}
\arrow(--c6){->[\ce{+ NO^.}]}\ce{N2O3}
\arrow(@c4--c7){->[\ce{+ O2^.-}][\ce{- OH-},\ce{- O2}]}[180,1.5]\ce{NO2^.}
\arrow(@c7--c8){->[\ce{+ O2^.-}]}[180]\parbox{1.5cm}{\centering \ce{O2NOO-}\\or \\\ce{NO2- + O2}}
\arrow(@c3--@c7){->[\ce{+ CO2}][\ce{- CO3^.}]}[2.12]
\arrow(@c3--@c5){->[\ce{+ CO2}][\ce{- CO3^.-}]}[2.12]
\arrow(@c1--c9){->[\ce{+ O2^.-}, \ce{+ 2H+}][\ce{- O2}]}[180,1.5]\ce{H2O2}
\arrow(@c9--c10){->[\ce{Fe2+}][\ce{- OH-}]}[180]\ce{^.OH}
\arrow(@c2--c11){->[\ce{+ O2}]}$[$\ce{^.ONOO}$]$
\arrow(@c11--c12){->[\ce{+ ^.NO}]}\ce{2 NO2^.}
\schemestop
\end{figure}
\end{document}
但是,这仍然会导致以下结果,并且似乎没有按比例缩放图形:
Overfull \hbox (71.11223pt too wide) in paragraph at lines 20--21.
任何关于如何改变这一点的想法和意见都将不胜感激。希望这些已经足够清楚了。
答案1
只需将其放入\scalebox
也许中:
\documentclass{report}
\usepackage{chemfig}
\usepackage{graphicx}
\usepackage[version=3]{mhchem}
\begin{document}
\begin{figure}[width=.9\textwidth]
\scalebox{.6}{
\schemestart
\ce{O2^.-}\arrow (c1--c2){0}\ce{NO^.}\merge{v}(c1)(c2)--(c3)\ce{ONOO-}
\arrow (--c4){<=>[*{0}\parbox{1.2cm}{\ce{+ H+}\\ pK 6.6}][*{0}\ce{- H+}]}[-90,1.5]\ce{ONOOH}
\arrow(--c5){->[\ce{+ NO^.}][\ce{- HNO2}]}[0,1.5]\ce{NO2^.}
\arrow(--c6){->[\ce{+ NO^.}]}\ce{N2O3}
\arrow(@c4--c7){->[\ce{+ O2^.-}][\ce{- OH-},\ce{- O2}]}[180,1.5]\ce{NO2^.}
\arrow(@c7--c8){->[\ce{+ O2^.-}]}[180]\parbox{1.5cm}{\centering \ce{O2NOO-}\\or \\\ce{NO2- + O2}}
\arrow(@c3--@c7){->[\ce{+ CO2}][\ce{- CO3^.}]}[2.12]
\arrow(@c3--@c5){->[\ce{+ CO2}][\ce{- CO3^.-}]}[2.12]
\arrow(@c1--c9){->[\ce{+ O2^.-}, \ce{+ 2H+}][\ce{- O2}]}[180,1.5]\ce{H2O2}
\arrow(@c9--c10){->[\ce{Fe2+}][\ce{- OH-}]}[180]\ce{^.OH}
\arrow(@c2--c11){->[\ce{+ O2}]}$[$\ce{^.ONOO}$]$
\arrow(@c11--c12){->[\ce{+ ^.NO}]}\ce{2 NO2^.}
\schemestop
}
\end{figure}
\end{document}
但是,为了回答将图形宽度与文本宽度匹配的更具体问题,我们可以借用 Philipp 的回答如何找到长度命令(例如, \textwidth)与参考值(例如, 6cm)的比率?,并且可以间接地将框缩放到文本宽度,如下所示(请注意,我添加了一个 lipsum 段落来显示它是合适的宽度)。为此,我将图形保存在中\x
。然后我找到的自然宽度\x
,以便我可以制定合适的比例。然后我将\scalebox
图像缩放到合适的比例:
\documentclass{report}
\usepackage{chemfig}
\usepackage[version=3]{mhchem}
\usepackage{lipsum}
\makeatletter
\newcommand*{\DivideLengths}[2]{%
\strip@pt\dimexpr\number\numexpr\number\dimexpr#1%
\relax*65536/\number\dimexpr#2\relax\relax sp\relax
}
\makeatother
\global\newlength\thewidth
\newcommand\findwidth[1]{\setbox0\hbox{#1}\setlength\thewidth{\wd0}}
\begin{document}
\def\x{
\schemestart
\ce{O2^.-}\arrow (c1--c2){0}\ce{NO^.}\merge{v}(c1)(c2)--(c3)\ce{ONOO-}
\arrow (--c4){<=>[*{0}\parbox{1.2cm}{\ce{+ H+}\\ pK 6.6}][*{0}\ce{- H+}]}[-90,1.5]\ce{ONOOH}
\arrow(--c5){->[\ce{+ NO^.}][\ce{- HNO2}]}[0,1.5]\ce{NO2^.}
\arrow(--c6){->[\ce{+ NO^.}]}\ce{N2O3}
\arrow(@c4--c7){->[\ce{+ O2^.-}][\ce{- OH-},\ce{- O2}]}[180,1.5]\ce{NO2^.}
\arrow(@c7--c8){->[\ce{+ O2^.-}]}[180]\parbox{1.5cm}{\centering \ce{O2NOO-}\\or \\\ce{NO2- + O2}}
\arrow(@c3--@c7){->[\ce{+ CO2}][\ce{- CO3^.}]}[2.12]
\arrow(@c3--@c5){->[\ce{+ CO2}][\ce{- CO3^.-}]}[2.12]
\arrow(@c1--c9){->[\ce{+ O2^.-}, \ce{+ 2H+}][\ce{- O2}]}[180,1.5]\ce{H2O2}
\arrow(@c9--c10){->[\ce{Fe2+}][\ce{- OH-}]}[180]\ce{^.OH}
\arrow(@c2--c11){->[\ce{+ O2}]}$[$\ce{^.ONOO}$]$
\arrow(@c11--c12){->[\ce{+ ^.NO}]}\ce{2 NO2^.}
\schemestop
}
\findwidth{\x}
\begin{figure}[width=.9\textwidth]
\scalebox{\DivideLengths{\textwidth}{\thewidth}}{\x}
\end{figure}
\lipsum[1]
\end{document}
答案2
我认为最简单的解决方法不是扩大方案规模,而是稍微重新安排它:
\documentclass{article}
\usepackage{chemfig}
\usepackage[version=3]{mhchem}
\usepackage{showframe}% show page layout
\begin{document}
\begin{figure}[ht]
\centering
\schemestart
\ce{O2^.-}\arrow (c1--c2){0}\ce{NO^.}
\merge{v}(c1)(c2)--(c3)\ce{ONOO-}
\arrow (--c4){<=>[*{0}\parbox{1.2cm}{\ce{+ H+}\\ pK 6.6}][*{0}\ce{- H+}]}[-90,1.5]\ce{ONOOH}
\arrow(--c5){->[\ce{+ NO^.}][\ce{- HNO2}]}[0,1.5]\ce{NO2^.}
\arrow(--c6){->[*0\ce{+ NO^.}]}[-90]\ce{N2O3}
\arrow(@c4--c7){->[\ce{+ O2^.-}][\ce{- OH-},\ce{- O2}]}[180,1.5]\ce{NO2^.}
\arrow(@c7--c8){->[*0\ce{+ O2^.-}]}[-90]\parbox{1.5cm}{\centering \ce{O2NOO-}\\or \\\ce{NO2- + O2}}
\arrow(@c3--@c7){->[\ce{+ CO2}][\ce{- CO3^.}]}[2.12]
\arrow(@c3--@c5){->[\ce{+ CO2}][\ce{- CO3^.-}]}[2.12]
\arrow(@c1--c9){->[\ce{+ O2^.-}, \ce{+ 2H+}][\ce{- O2}]}[180,1.5]\ce{H2O2}
\arrow(@c9--c10){->[*0\ce{Fe2+}][*0\ce{- OH-}]}[-90]\ce{^.OH}
\arrow(@c2--c11){->[\ce{+ O2}]}$[$\ce{^.ONOO}$]$
\arrow(@c11--c12){->[*0\ce{+ ^.NO}]}[-90]\ce{2 NO2^.}
\schemestop
\end{figure}
\end{document}
答案3
环境的可选参数figure
仅处理浮点数的允许位置,它不能包含缩放或其他内容。
减小尺寸的另一种方法是简单地减小字体大小,方法是\scriptsize
在后面添加\begin{figure}
。
您还可以使用可选参数将事物稍微挤压在一起\schemestart
,例如\schemestart[0,.7]
。
\documentclass{report}
\usepackage{chemfig}
\usepackage[version=3]{mhchem}
\begin{document}
\begin{figure}
\scriptsize
\schemestart
% option 2 -- comment out the two previous lines, uncomment the two next.
%\small
%\schemestart[0,.7]
\ce{O2^.-}\arrow (c1--c2){0}\ce{NO^.}\merge{v}(c1)(c2)--(c3)\ce{ONOO-}
\arrow (--c4){<=>[*{0}\parbox{1.2cm}{\ce{+ H+}\\ pK 6.6}][*{0}\ce{- H+}]}[-90,1.5]\ce{ONOOH}
\arrow(--c5){->[\ce{+ NO^.}][\ce{- HNO2}]}[0,1.5]\ce{NO2^.}
\arrow(--c6){->[\ce{+ NO^.}]}\ce{N2O3}
\arrow(@c4--c7){->[\ce{+ O2^.-}][\ce{- OH-},\ce{- O2}]}[180,1.5]\ce{NO2^.}
\arrow(@c7--c8){->[\ce{+ O2^.-}]}[180]\parbox{1.5cm}{\centering \ce{O2NOO-}\\or \\\ce{NO2- + O2}}
\arrow(@c3--@c7){->[\ce{+ CO2}][\ce{- CO3^.}]}[2.12]
\arrow(@c3--@c5){->[\ce{+ CO2}][\ce{- CO3^.-}]}[2.12]
\arrow(@c1--c9){->[\ce{+ O2^.-}, \ce{+ 2H+}][\ce{- O2}]}[180,1.5]\ce{H2O2}
\arrow(@c9--c10){->[\ce{Fe2+}][\ce{- OH-}]}[180]\ce{^.OH}
\arrow(@c2--c11){->[\ce{+ O2}]}$[$\ce{^.ONOO}$]$
\arrow(@c11--c12){->[\ce{+ ^.NO}]}\ce{2 NO2^.}
\schemestop
\end{figure}
\end{document}