Aktualisieren von Wörtern im gesamten Dokument

Aktualisieren von Wörtern im gesamten Dokument

In meinem Job liefern wir mehrere Hundert physische Baugruppen pro Projekt – normalerweise an Offshore-Plattformen in Nordsjøen – jede hat ein entsprechendes Etikett (und auch andere Metadaten wie Artikelbeschreibung und Seriennummer).

Ein typisches Tag für eine Baugruppe kann „42MV43523“ sein und ist eindeutig und wird als die „Adresse“ der Ausrüstung auf einer Offshore-Plattform angesehen.

Wenn ich jedoch die gesamte notwendige technische Dokumentation für das Projekt schreibe, lande ich oft bei Hunderten von Seiten, auf denen ich Tag-Referenzen benötige (mit dem vollständigen Tag, nicht mit einem (1), das auf eine Liste verweist). Obwohl Dokumente oft gleich formatiert sind, muss ich

  1. Setzen Sie diese Tags an mehreren Stellen (immer an den gleichen Stellen) in den Freitext ein.
  2. Fügen Sie diese Tags in Tabellen ein, in denen die Beschreibungen in derselben Zeile stehen, z. B.

|42Mv43523|Lieferantenname|Artikelbeschreibung|

|42Mv43558|Lieferantenname|Artikelbeschreibung|

(...)

Das Problem ist, dass die ständige Aktualisierung dieser Dokumente zu einer aufwändigen Ad-hoc-Arbeit wird, die viel Zeit in Anspruch nimmt (zwischen 10 und 20 Stunden pro Woche). Außerdem muss ich diese Dokumente häufig zur vorläufigen Genehmigung einsenden, ohne dass über das Tag entschieden wurde, was das Ganze noch schlimmer macht.

Ich möchte ein oder zwei Masterdokumente erstellen, in die ich für jedes Projekt die Tags und die entsprechenden Metadaten schreiben kann und in denen die Tags und Metadaten im gesamten Dokument sowohl in Tabellen als auch im Freitext aktualisiert werden können (für Freitext sind Metadaten nicht erforderlich).

Ich hoffe, das sind ausreichende Informationen. Dies ist ein erhebliches Problem für unser Unternehmen und viele andere in der norwegischen Ölindustrie.

Antwort1

Sie können das datatoolPaket verwenden oder Folgendes csnamewie hier gezeigt:

  1. Erstellen Sie eine separate Datei, die einige Makros und alle Ihre Tags sowie die erweiterten Informationen enthält, die ich MyTags.texim folgenden MWE aufrufe:

    \DefineTag{42Mv43523}{Supplier name 43523}{Item Description 43523}
    \DefineTag{42Mv43558}{Supplier name 43558}{Item Description 43558}
    
  2. Dann \inputdiese Datei als:

    \input{MyTags.tex}
    

    In diesem Fall wird nur die Tag-Beschriftung angezeigt, oder als

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

    In diesem FallVerlinke den Namen,Name des Anbieters, UndArtikelbeschreibungwird angezeigt.

  3. Um dann auf die Informationen in Ihrer Datei zuzugreifen, verwenden Sie:

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

Die Ausgabe mit just \input{MyTags.tex}ist:

Bildbeschreibung hier eingeben

aber mit dem \def\JustUseTag{}gerechtenVordas \input{MyTags.tex}ist:

Bildbeschreibung hier eingeben

Anmerkungen:

  • Das filecontentsPaketwurde nur verwendet, um das unten stehende MWE verpacken zu können. In Ihrem tatsächlichen Anwendungsfall wird es nicht benötigt.

Code:

\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}

Antwort2

Aus Ihrer Frage geht nicht hervor, (a) wie gut Sie sich mit LaTeX auskennen und (b) warum für diesen Vorgang überhaupt LaTeX verwendet werden muss (das klingt nach einer Aufgabe für Datenbanksoftware). Um Ihnen jedenfalls einen Eindruck davon zu vermitteln, wozu sehr einfaches LaTeX fähig ist, lesen Sie weiter unten. Andere erfahrenere Benutzer können effizienteren Code vorschlagen, wenn das Dokument viel länger wird und sich die Tags häufen. (Und Grüße aus 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}

verwandte Informationen