
Ich schreibe meine Chemie-Abschlussarbeit und es geht dabei um viele ReaktionsschemataWie kann ich ein Etikett hinzufügen, das angezeigt wird? Ich möchte die erste Verbindung mit 1 beschriften und ich möchte, dass dies ein Latex-Etikett ist, damit ich im Text darauf verweisen und das Etikett dann bei Bedarf ändern kann.
Hier ist ein MWE:
\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage{geometry}
\geometry{letterpaper, margin = 1in}
\DeclareFloatingEnvironment[fileext = los, listname = {List of Schemes}, name = Scheme]{scheme}
\begin{document}
\begin{scheme}[h!]
\centering
\includegraphics[scale = 0.7]{Carbdiazosyn}
\caption{Generation ...}
\label{carbdiazosyn}
\end{scheme}
\end{document}
Antwort1
Chemfig/Chemnum-Route
Wahrscheinlich nicht die klügste Wahl chemfig
, aber es zeigt nur, dass es möglich ist. Sie sollten das Paket chemnum
zum Markieren der Moleküle verwenden. Es bietet (unter anderem) die folgenden Befehle:
\cmpd{<main label>.<sublabel>} % <main label> produces the 1, <sublabel> produces the a, b etc.
\refcmpd{<main label>.<sublabel>} % Acts like \ref in normal circumstances
Hier ist der Code:
\documentclass[]{report}
\usepackage{chemfig,chemnum}
\usepackage[version=4]{mhchem}
\usepackage{geometry}
\geometry{letterpaper, margin = 1in}
\usepackage{newfloat}
\DeclareFloatingEnvironment[fileext = los, listname = {List of Schemes}, name = Scheme]{scheme}
\begin{document}
\begin{scheme}[ht]
\centering
%\schemedebug{true}
\schemestart[0,1.3]
\chemname{%
\chemfig{[:120]*3(-[@{a1}]N=[@{db}]N-[@{a2}])%
(-[:50,,,,red]\textcolor{red}{\ce{R1}})%
(-[@{r2}:-50,,,,red]\textcolor{red}{\ce{R2}})%
}
}{\cmpd{scheme.1}}
\arrow(.mid east--.mid west){->[$h\nu/\Delta$][$-$\ce{N2}]}
\chemname{%
\setlewis{0.8ex}{}{red}%
\chemfig[shift={(0,0.4)}]{[:-30]\textcolor{red}{\ce{R1}}%
-[,,,,red](\lewis{6:,})%
-[::60,,,,red]\textcolor{red}{\ce{R2}}}%
}{\cmpd[pre-label-code{scheme.2}}
\schemestop
\chemmove{%
\draw[shorten <=2pt, shorten >=3pt]%
(a1)..controls +(250:3mm) and +(340:3mm)..(db);
\draw[shorten <=2pt, shorten >=2pt]%
(a2)..controls +(320:3mm) and +(210:2mm)..(r2);
}
\caption[]{My scheme}\label{scheme1}
\end{scheme}
The arrows in \refcmpd{scheme.1} refer to electron movement! The compound in \refcmpd{scheme.2} is in red! Both \refcmpd{scheme.1, scheme.2} are in scheme \ref{scheme1}.
\end{document}
Hinweis: Ich habe die Befehle chemnum
innerhalb des \chemname
Befehls verwendet, um die „Beschriftungen“ einzufügen. Ich habe das mhchem
Paket auch verwendet, um die zusammengesetzten Namen darin zu setzen chemfig
. Der Rest ist nur chemfig
Code. :-)
.
Auto-pst-pdf/Chemnum-Route (wahrscheinlich empfohlen)
Das chemnum
Paket dokumentiert auch eine Möglichkeit, Tags der .eps
Abbildung in Abschnitt 9, S. 18 desDokumentation. Der Workflow hierfür ist laut Handbuch (wörtliches Zitat):
- Erstellen Sie das Schema und platzieren Sie temporäre Tags wie
TMP1
usw.TMP2
dort, wo die zusammengesetzten Beschriftungen stehen sollen.- Exportieren Sie das Schema als
eps
oderps
Abbildung, wobei Sie sicherstellen, dass die Tags als Textzeichenfolgen eingebettet sind.- Fügen Sie das
eps
mit ein\includegraphics
. Direkt davor\replacecmpd
einmal für jedes temporäre Tag verwenden.
Ich persönlich habe dies nicht ausprobiert (da ich nicht verwende chemdraw
), daher verweise ich Sie einfach auf die Dokumentation. (Vielleicht ist eine weitere Antwort erforderlich, die diese Methode ordnungsgemäß dokumentiert.) Wie auch immer, wie in der Dokumentation vorgeschlagen, denke ich, dass dies der richtige Weg ist, wenn Sie weiterhin verwenden möchten chemdraw
.
Hier ist ein Beispielcode aus der Dokumentation:
% code for figure 2
\documentclass{standalone}
\usepackage{graphicx,auto-pst-pdf,chemnum}
\begin{document}
\replacecmpd{Alc}% replaces TMP1
\replacecmpd{EtherBr}% replaces TMP2
\includegraphics{scheme-tmp.ps} % Contains TMP1 and TMP2 as embedded text strings
\end{document}
Antwort2
Ich musste die Breite anpassen, damit die Untertitel passen.
\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage{geometry}
\geometry{letterpaper, margin = 1in}
\usepackage{newfloat}
\DeclareFloatingEnvironment[fileext = los, listname = {List of Schemes}, name = Scheme]{scheme}
\usepackage{graphicx}
\usepackage{subcaption}
\DeclareCaptionSubType{scheme}
\captionsetup[subscheme]{font+=footnotesize}
\begin{document}
\begin{scheme}[htp]% h! is interpreted as "I am an idiot so replace this with something reasonable"
\centering
\sbox0{\includegraphics[scale = 0.7]{images/Carbdiazosyn}}% measure width
\usebox0\par
\makebox[1.1\wd0]{\parbox{0.45\wd0}{\subcaption{Compound 1}\label{compound1}}\hfill
\parbox{0.45\wd0}{\subcaption{Compound 2}\label{compound2}}}
\caption{Generation ...}
\label{carbdiazosyn}
\end{scheme}
\centering Of course, the reference will only return \ref{compound1}.
\end{document}
Da Bildunterschriften so gestaltet sind, dass sie in einen vorgegebenen Raum passen und wir in diesem Fall möchten, dass sie in eine Zeile passen, ist es einfacher,nichtVerwenden Sie das Subcaption-Paket.
Es sind mehrere Formatierungsoptionen möglich. In diesem Fall habe ich die Beschriftung nach links gesetzt, das Bild jedoch zentriert gelassen.
\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage{geometry}
\geometry{letterpaper, margin = 1in}
\usepackage{newfloat}
\DeclareFloatingEnvironment[fileext = los, listname = {List of Schemes}, name = Scheme]{scheme}
\usepackage{graphicx}
\newcounter{compound}
\newcommand{\compound}[1]% #1 = label
{\refstepcounter{compound}\label{#1}Compound \thecompound}
\begin{document}
\begin{scheme}[htp]
\centering
\leavevmode\llap{\compound{test}:\qquad}%
\raisebox{-0.5\height}{\includegraphics[scale = 0.7]{images/Carbdiazosyn}}% center
\caption{Generation ...}
\label{carbdiazosyn}
\end{scheme}
\centering This references the compound index, \ref{test}.
\end{document}