
Estoy escribiendo mi tesis de química e involucra muchos esquemas de reacción.¿Cómo puedo agregar una etiqueta que aparezca? Quiero etiquetar el primer compuesto 1 y quiero que sea una etiqueta de látex para poder consultarlo en el texto y luego cambiar la etiqueta si es necesario.
Aquí hay un 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}
Respuesta1
Ruta Chemfig/Chemnum
Probablemente no sea la opción más inteligente chemfig
, pero simplemente demuestra que es posible. Desea utilizar el paquete chemnum
para etiquetar las moléculas. Ofrece (entre otros) los comandos:
\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
Aquí está el código:
\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}
Punto a tener en cuenta: utilicé los comandos chemnum
dentro del \chemname
comando para insertar las 'etiquetas'. También utilicé el mhchem
paquete para componer los nombres compuestos dentro de chemfig
. El resto es sólo chemfig
código. :-)
.
Ruta auto-pst-pdf/Chemnum (Probablemente recomendado)
El chemnum
paquete también documenta una forma de reemplazar las etiquetas de la .eps
figura en la Sección 9, página 18 deldocumentación. Según el manual, el flujo de trabajo para esto es (citando textualmente):
- Cree el esquema y coloque etiquetas temporales como
TMP1
,TMP2
etc. donde desee que estén las etiquetas compuestas.- Exporte el esquema como
eps
ops
figura donde se asegura de que las etiquetas estén incrustadas como cadenas de texto.- Incluye el
eps
con\includegraphics
. Justo antes de eso, utilícelo\replacecmpd
una vez por cada etiqueta temporal.
Personalmente no he probado esto (ya que no uso chemdraw
), así que simplemente te remitiré a la documentación. (Quizás se necesite otra respuesta que documente adecuadamente este método). De todos modos, como sugiere la documentación, creo que este es el camino a seguir si quieres seguir usando chemdraw
.
Aquí hay un código de ejemplo de la documentación:
% 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}
Respuesta2
Tuve que modificar los anchos para que los subtítulos encajaran.
\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}
Dado que los subtítulos están diseñados para caber en un espacio determinado y en este caso queremos que quepan en una línea, es más fácilnoutilice el paquete de subtítulos.
Son posibles varias opciones de formato. En este caso puse el título a la izquierda pero dejé la imagen centrada.
\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}