Actualización de palabras en todo el documento

Actualización de palabras en todo el documento

En mi trabajo entregamos varios cientos de ensamblajes físicos por proyecto, generalmente a plataformas marinas en Nordsjøen; cada uno tiene una etiqueta correspondiente (y también otros metadatos, como la descripción del artículo y el número de serie).

Una etiqueta típica para un conjunto puede ser "42MV43523", es única y se considera la "dirección" del equipo en una plataforma marina.

Sin embargo, al escribir toda la documentación técnica necesaria para el proyecto, a menudo termino con cientos de páginas en las que necesito referencias de etiquetas (con la etiqueta completa, no un (1) que hace referencia a alguna lista). Aunque los documentos suelen tener el mismo formato, necesito

  1. Coloque estas etiquetas en texto libre en varios lugares (siempre en los mismos lugares)
  2. Coloque estas etiquetas en tablas donde las descripciones aparezcan en la misma línea, por ejemplo

|42Mv43523|Nombre del proveedor|Descripción del artículo|

|42Mv43558|Nombre del proveedor|Descripción del artículo|

(...)

El problema es que actualizar estos documentos se convierte en un pesado trabajo ad hoc que consume mucho tiempo (entre 10 y 20 horas por semana). Además, muy a menudo necesito enviar estos documentos para su aprobación temporal sin que se decida la etiqueta, lo que lo empeora aún más.

Lo que espero es crear uno o dos documentos maestros donde pueda escribir las etiquetas y los metadatos correspondientes para cada proyecto, y donde las etiquetas y los metadatos puedan actualizarse en todo el documento tanto en tablas como en texto libre (para texto libre, los metadatos no son necesarios).

Espero que esto sea suficiente información. Este es un problema importante para nuestra empresa y para muchas otras en la industria petrolera noruega.

Respuesta1

Puede usar el datatoolpaquete o usar csnames como se muestra aquí:

  1. Cree un archivo separado que contenga algunas macros y todas sus etiquetas junto con la información extendida, que llamo MyTags.texen el MWE a continuación:

    \DefineTag{42Mv43523}{Supplier name 43523}{Item Description 43523}
    \DefineTag{42Mv43558}{Supplier name 43558}{Item Description 43558}
    
  2. Entonces \inputeste archivo como:

    \input{MyTags.tex}
    

    en cuyo caso solo se muestra la etiqueta de la etiqueta, o como

    \def\JustUseTag{}
    \input{MyTags.tex}
    

    en cuyo caso elnombre de etiqueta,Nombre del proveedor, yDescripción del Artículose visualiza.

  3. Luego, para acceder a la información de su expediente utiliza:

    \UseTag{42Mv43523}
    
    \UseTag{42Mv43558}
    

La salida con just \input{MyTags.tex}es:

ingrese la descripción de la imagen aquí

pero con lo \def\JustUseTag{}justoantesel \input{MyTags.tex}es:

ingrese la descripción de la imagen aquí

Notas:

  • El filecontentspaquetese usó solo para poder empaquetar el MWE a continuación. No es necesario en su caso de uso real.

Código:

\documentclass{article}

\begin{filecontents*}{MyTags.tex}
    \newcommand*{\DefineTag}[3]{%
        % #1 = tag name
        % #2 = supplier name
        % #3 = item description
        \global\expandafter\newcommand\csname#1TagOnly\endcsname{#1}%
        \global\expandafter\newcommand\csname#1Expanded\endcsname{#1 #2 #3}%
    }%

    \newcommand{\UseTagOnly}[1]{\expandafter\csname#1TagOnly\endcsname}
    \newcommand{\UseTagExpanded}[1]{\expandafter\csname#1Expanded\endcsname}

    \ifdefined\JustUseTag
        \newcommand{\UseTag}[1]{\UseTagOnly{#1}}
    \else
        \newcommand{\UseTag}[1]{\UseTagExpanded{#1}}
    \fi

    \DefineTag{42Mv43523}{Supplier name 43523}{Item Description 43523}
    \DefineTag{42Mv43558}{Supplier name 43558}{Item Description 43558}
\end{filecontents*}



%\def\JustUseTag{}% <--- Un-comment to obtain the additional meta data associated with the tag
\input{MyTags.tex}


\begin{document}

    \UseTag{42Mv43523}

    \UseTag{42Mv43558}

\end{document}

Respuesta2

No queda claro en su pregunta (a) qué tan familiarizado está con LaTeX y (b) por qué se debe usar LaTeX para este proceso (suena como un trabajo para el software de base de datos). En cualquier caso, para darle una idea de lo que es capaz de hacer LaTeX muy elemental, consulte a continuación. Otros usuarios más experimentados pueden sugerir código más eficiente para cuando el documento se haga mucho más largo y las etiquetas se acumulen. (Y hola desde Jubail.)

\documentclass[a4paper]{article}

\begin{document}

\newcommand{\tagone}{42MV43523}
\newcommand{\tagtwo}{42MV43558}

The \tagone{} was signed for upon arrival, blah blah blah...

\begin{table}[h]
\begin{tabular}{lll}
\hline
Item & Supplier Name & Description\\
\hline
\tagone{} & Bob's House of Petrochemicals & vat of caustic stuff\\
\tagtwo{} & Bits-R-Us & earth-crust-penetrating drill bit\\
\hline
\end{tabular}
\end{table}

\end{document}

información relacionada