文書全体の単語を更新する

文書全体の単語を更新する

私の仕事では、プロジェクトごとに数百の物理アセンブリを配送します。通常は、Nordsjøen のオフショア プラットフォームに配送します。各アセンブリには対応するタグ (およびアイテムの説明やシリアル番号などのその他のメタデータ) があります。

アセンブリの一般的なタグは「42MV43523」などであり、これは一意であり、オフショア プラットフォーム上の機器の「アドレス」と見なされます。

しかし、プロジェクトに必要な技術文書をすべて書くと、タグ参照(リストを参照する(1)ではなく、完全なタグ)が必要なページが何百ページにもわたることがよくあります。文書のフォーマットは多くの場合同じですが、

  1. これらのタグを複数の場所(常に同じ場所)のフリーテキストに入力します。
  2. これらのタグを、説明が同じ行にあるテーブルに配置します。例:

|42Mv43523|サプライヤー名|商品説明|

|42Mv43558|サプライヤー名|商品説明|

(...)

問題は、これらのドキュメントを全体的に更新することが、大量の時間 (1 週間あたり 10 ~ 20 時間) を要する、重労働の臨時作業になることです。また、タグが決定されないまま、これらのドキュメントを一時的な承認のために送信しなければならないこともよくあり、状況はさらに悪化します。

私が望んでいるのは、各プロジェクトのタグと対応するメタデータを書き込むことができ、タグとメタデータをドキュメント全体で表とフリー テキストの両方で更新できるマスター ドキュメントを 1 つまたは 2 つ作成することです (フリー テキストの場合、メタデータは不要です)。

これが十分な情報であることを願います。これは当社、そしてノルウェーの石油業界の他の多くの企業にとって重大な問題です。

答え1

パッケージを使用するdatatoolか、csname次に示すように s を使用できます。

  1. いくつかのマクロとすべてのタグ、およびMyTags.tex以下の MWE で呼び出す拡張情報を含む別のファイルを作成します。

    \DefineTag{42Mv43523}{Supplier name 43523}{Item Description 43523}
    \DefineTag{42Mv43558}{Supplier name 43558}{Item Description 43558}
    
  2. \inputこのファイルは次のようになります:

    \input{MyTags.tex}
    

    その場合はタグラベルのみが表示されます。

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

    その場合、タグ名サプライヤ名、 そしてアイテム説明表示されています。

  3. 次に、ファイル内の情報にアクセスするには、次の操作を行います。

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

出力は次のように\input{MyTags.tex}なります。

ここに画像の説明を入力してください

しかし、\def\JustUseTag{}正義の前に\input{MyTags.tex}

ここに画像の説明を入力してください

ノート:

  • そのfilecontents包み下記の MWE をパッケージ化するためだけに使用されました。実際の使用例では必要ありません。

コード:

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

答え2

質問からは、(a) LaTeX にどの程度精通しているか、(b) このプロセスに LaTeX を使用する必要がある理由 (データベース ソフトウェアの仕事のように聞こえます) が不明です。いずれにせよ、非常に基本的な LaTeX で何ができるかについては、以下を参照してください。経験豊富な他のユーザーは、ドキュメントが長くなり、タグが山積みになったときに、より効率的なコードを提案できます。(そして、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}

関連情報