Ruta Chemfig/Chemnum

Ruta Chemfig/Chemnum

Estoy escribiendo mi tesis de química e involucra muchos esquemas de reacción.Un esquema 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

el esquema

Probablemente no sea la opción más inteligente chemfig, pero simplemente demuestra que es posible. Desea utilizar el paquete chemnumpara 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 chemnumdentro del \chemnamecomando para insertar las 'etiquetas'. También utilicé el mhchempaquete para componer los nombres compuestos dentro de chemfig. El resto es sólo chemfigcódigo. :-).


Ruta auto-pst-pdf/Chemnum (Probablemente recomendado)

El chemnumpaquete también documenta una forma de reemplazar las etiquetas de la .epsfigura en la Sección 9, página 18 deldocumentación. Según el manual, el flujo de trabajo para esto es (citando textualmente):

  1. Cree el esquema y coloque etiquetas temporales como TMP1, TMP2etc. donde desee que estén las etiquetas compuestas.
  2. Exporte el esquema como epso psfigura donde se asegura de que las etiquetas estén incrustadas como cadenas de texto.
  3. Incluye el epscon \includegraphics. Justo antes de eso, utilícelo \replacecmpduna 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}

manifestación


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}

demostración2

información relacionada