В ходе моей работы мы поставляем несколько сотен физических сборок за проект — как правило, на морские платформы в Нордшёэне — каждая из них имеет соответствующий тег (а также другие метаданные, такие как описание элемента и серийный номер).
Типичный тег для сборки может быть «42MV43523», он уникален и считается «адресом» оборудования на морской платформе.
Однако при написании всей необходимой технической документации для проекта я часто получаю сотни страниц, где мне нужны ссылки на теги (с полным тегом, а не (1), ссылающимся на какой-то список). Хотя документы часто отформатированы одинаково, мне нужно
- Разместите эти теги в свободном тексте в нескольких местах (всегда в одних и тех же местах)
- Поместите эти теги в таблицы, где описания располагаются на одной строке, например:
|42Mv43523|Имя поставщика|Описание товара|
|42Mv43558|Имя поставщика|Описание товара|
(...)
Проблема в том, что обновление этих документов по всему миру становится тяжелой разовой работой, которая отнимает у меня много времени (от 10 до 20 часов в неделю). Кроме того, мне часто приходится отправлять эти документы на временное одобрение, не определив тег, что еще больше ухудшает ситуацию.
Я надеюсь создать один или два главных документа, в которых я смогу записывать теги и соответствующие метаданные для каждого проекта, и в которых теги и метаданные можно будет обновлять по всему документу как в таблицах, так и в свободном тексте (для свободного текста метаданные не нужны).
Надеюсь, что этой информации достаточно. Это существенная проблема для нашей компании и многих других в норвежской нефтяной промышленности.
решение1
Вы можете использовать datatool
пакет или использовать csname
s, как показано здесь:
Создайте отдельный файл, содержащий несколько макросов и все ваши теги вместе с расширенной информацией, который я называю
MyTags.tex
MWE ниже:\DefineTag{42Mv43523}{Supplier name 43523}{Item Description 43523} \DefineTag{42Mv43558}{Supplier name 43558}{Item Description 43558}
Тогда
\input
этот файл как:\input{MyTags.tex}
в этом случае отображается только метка тега или как
\def\JustUseTag{} \input{MyTags.tex}
в этом случаеназвание тэга,наименование поставщика, иописание предметаотображается.
Затем, чтобы получить доступ к информации в вашем файле, вы используете:
\UseTag{42Mv43523} \UseTag{42Mv43558}
Вывод с just \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, см. ниже. Другие, более опытные пользователи могут предложить более эффективный код для случаев, когда документ становится намного длиннее и теги накапливаются. (И привет из Джубайля.)
\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}