Atualizando palavras em todo o documento

Atualizando palavras em todo o documento

No meu trabalho, entregamos centenas de montagens físicas por projeto - normalmente para plataformas offshore em Nordsjøen - cada uma tem uma etiqueta correspondente (e também outros metadados, como descrição do item e número de série).

Uma etiqueta típica para uma montagem pode ser “42MV43523” e é única e considerada o “endereço” do equipamento em uma plataforma offshore.

Porém, ao escrever toda a documentação técnica necessária para o projeto, muitas vezes acabo com centenas de páginas onde preciso de referências de tags (com a tag completa, e não um (1) referente a alguma lista). Embora os documentos muitas vezes sejam formatados da mesma forma, preciso

  1. Coloque essas tags em texto livre em vários lugares (sempre nos mesmos lugares)
  2. Coloque essas tags em tabelas onde as descrições vêm na mesma linha, por exemplo

|42Mv43523|Nome do fornecedor|Descrição do item|

|42Mv43558|Nome do fornecedor|Descrição do item|

(...)

O problema é que atualizar esses documentos torna-se um trabalho ad hoc pesado que ocupa muito do meu tempo (entre 10 a 20 horas por semana). Além disso, muitas vezes preciso enviar esses documentos para aprovação temporária sem que a etiqueta seja decidida, o que torna tudo ainda pior.

O que espero é criar um ou dois documentos mestre onde eu possa escrever as tags e os metadados correspondentes para cada projeto, e onde as tags e os metadados possam ser atualizados ao longo do documento tanto em tabelas quanto em texto livre (para texto livre, metadados não são necessários).

Espero que esta seja informação suficiente. Este é um problema substancial para a nossa empresa e para muitas outras na indústria petrolífera norueguesa.

Responder1

Você pode usar o datatoolpacakge ou usar csnames como mostrado aqui:

  1. Crie um arquivo separado que contenha algumas macros e todas as suas tags junto com as informações estendidas, que chamo MyTags.texno MWE abaixo:

    \DefineTag{42Mv43523}{Supplier name 43523}{Item Description 43523}
    \DefineTag{42Mv43558}{Supplier name 43558}{Item Description 43558}
    
  2. Então \inputeste arquivo como:

    \input{MyTags.tex}
    

    nesse caso, apenas o rótulo da tag é exibido, ou como

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

    nesse caso onome da etiqueta,Nome do Fornecedor, edescrição do itemé exibido.

  3. Então, para acessar as informações do seu arquivo você usa:

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

A saída com apenas \input{MyTags.tex}é:

insira a descrição da imagem aqui

mas com o \def\JustUseTag{}justoanteso \input{MyTags.tex}é:

insira a descrição da imagem aqui

Notas:

  • O filecontentspacotefoi usado apenas para poder empacotar o MWE abaixo. Não é necessário no seu 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}

Responder2

Não está claro na sua pergunta (a) quão familiarizado você está com o LaTeX e (b) por que o LaTeX deve ser usado para esse processo (parece um trabalho para software de banco de dados). De qualquer forma, para lhe dar uma ideia do que o LaTeX elementar é capaz, veja abaixo. Outros usuários mais experientes podem sugerir um código mais eficiente para quando o documento ficar muito mais longo e as tags se acumularem. (E olá de 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}

informação relacionada