วงเล็บหลายตัวใน Chemfig Polymer - ไม่สามารถกำจัดข้อผิดพลาดได้

Aug 17 2020

ฉันกำลังดิ้นรนเพื่อให้ได้ Reaktion ที่แสดงกระบวนการ Polymerisation โดยใช้อย่างchemfigถูกต้อง

นี่คือรหัสที่ฉันใช้:

\begin{figure}[htb!]
\centering
\schemestart
\chemfig{R-C(-[2])(-[6])-C(-[2])(-[6])-C(-[2])(-[6])-\lewis{0.,C}(-[2])(-[6])}
\+
\chemfig{[@{left,0.5}]C(-[2])(-[6])=C(-[2])(-[6])[@{right,0.5}]}
%\polymerdelim[delimiters ={[]}, height = 40pt, indice = n]{left}{right}
\arrow
\chemfig{R-C(-[2])(-[6])-C(-[2])(-[6])-[@{left,0.5}]C(-[2])(-[6])-C(-[2])(-[6])-[@{right,0.5}]C(-[2])(-[6])-\lewis{0.,C}(-[2])(-[6])}
\polymerdelim[delimiters ={[]}, height = 40pt, indice = n]{left}{right}
\schemestop
\caption{}
\label{}
\end{figure}

นี่คือผลลัพธ์ปัจจุบัน:

ด้วยเหตุผลบางประการวงเล็บที่สองเป็นแบบที่ฉันต้องการ แต่อันแรกไม่ใช่ ดูเหมือนว่าจะไม่ได้รับข้อกำหนดที่กำหนดไว้\polymerdelimดังนั้นฉันคิดว่าฉันอาจต้องเพิ่มบรรทัดที่\chemfigด้านบนด้วย

ถ้าเปิดใช้งานไลน์

%\polymerdelim[delimiters ={[]}, height = 40pt, indice = n]{left}{right}

ฉันได้รับข้อความแสดงข้อผิดพลาดนี้:

! Package pgf Error: No shape named left is known.See the pgf package documentation for explanation.Type H <return> for immediate help.... \chemfig

ใครสามารถช่วยฉันออก?

ขอขอบคุณ!

คำตอบ

2 muzimuzhiZ Aug 17 2020 at 10:43

จากเอกสารของchemfigส่วนที่ 13 ไวยากรณ์@{<name>, <coeff>}สามารถใช้ได้เฉพาะในตอนต้นของอาร์กิวเมนต์ที่เป็นทางเลือกของพันธบัตร ใน\chemfigตัวอย่างที่สองของคุณ

\chemfig{[@{left,0.5}]C(-[2])(-[6])=C(-[2])(-[6])[@{right,0.5}]}

ข้อโต้แย้งที่ไม่จำเป็น[@{left,0.5}]และ[@{right,0.5}]ไม่เคยมีใครที่สอดคล้องพันธบัตรจึงโหนดleftและrightไม่เคยสร้าง

ตัวเลือกที่ 1

หากคุณพอใจกับพันธบัตรเริ่มต้นและสิ้นสุดให้ใช้

\chemfig{C(-[2])(-[6])(-[@{left,0.5}4])=C(-[2])(-[6])-[@{right,0.5}]}
\polymerdelim[delimiters={[]}, height=40pt, depth=, indice=n]{left}{right}

ทางเลือกที่ 2

หากคุณต้องการคงรูปแบบที่ไม่มีพันธะไว้คุณสามารถใช้@{<name>}<atom>เพื่อเพิ่มโหนดในอะตอมและใช้\polymerdelimตัวเลือกopen xshiftและclose xshiftเพื่อปรับตำแหน่งของตัวคั่น โปรดทราบว่าในกรณีนี้พื้นที่ด้านซ้ายและด้านขวาจะไม่ถูกปรับอัตโนมัติ

\chemfig{@{left}C(-[2])(-[6])=@{right}C(-[2])(-[6])}
\polymerdelim[delimiters={[]}, height=40pt, depth=, indice=n, 
  open xshift=-8pt, close xshift=]{left}{right}

ตัวเลือก 3

นี่คือตัวแปรของตัวเลือก 1 ซึ่งระบุพันธะเริ่มต้นและสิ้นสุด แต่ไม่ได้วาด (ตามตัวเลือกพันธบัตร[,,,draw=none]) เพื่อให้ได้ระยะห่างในแนวนอนที่ดีขึ้นพันธะทั้งสองนี้จะสั้นลงด้วย (โดยตัวเลือกพันธะ[,0.5,,,]) and the position of nodes are adjusted (from @ {left, 0.5} to@ {left, 1} `)

\chemfig{C(-[2])(-[6])(-[@{left,1}4,.5,,,draw=none])=C(-[2])(-[6])-[@{right,1},.5,,,draw=none]}
\polymerdelim[delimiters={[]}, height=40pt, depth=, indice=n]{left}{right}

ตัวอย่างเต็ม:

\documentclass[margin=20pt]{standalone}
\usepackage{chemfig}

\begin{document}

\schemestart
  \chemfig{R-C(-[2])(-[6])-C(-[2])(-[6])-C(-[2])(-[6])-\lewis{0.,C}(-[2])(-[6])}
  \+
  %% option 1
  % \chemfig{C(-[2])(-[6])(-[@{left,0.5}4])=C(-[2])(-[6])-[@{right,0.5}]}
  % \polymerdelim[delimiters={[]}, height=40pt, depth=, indice=n]{left}{right}
  %
  %% option 2
  % \chemfig{@{left}C(-[2])(-[6])=@{right}C(-[2])(-[6])}
  % \polymerdelim[delimiters={[]}, height=40pt, depth=, indice=n, 
  %   open xshift=-8pt, close xshift=]{left}{right}
  %% option 3
  \chemfig{C(-[2])(-[6])(-[@{left,1}4,.5,,,draw=none])=C(-[2])(-[6])-[@{right,1},.5,,,draw=none]}
  \polymerdelim[delimiters={[]}, height=40pt, depth=, indice=n]{left}{right}
  \arrow
  \chemfig{R-C(-[2])(-[6])-C(-[2])(-[6])-[@{left,0.5}]C(-[2])(-[6])-C(-[2])(-[6])-[@{right,0.5}]C(-[2])(-[6])-\lewis{0.,C}(-[2])(-[6])}
  \polymerdelim[delimiters ={[]}, height=40pt, depth=, indice=n]{left}{right}
\schemestop

\end{document}