Избегание ошибок с \includexmp{pdfa-1b}. Есть ли список лучших практик и рабочих примеров с полными файлами .XMP?

Избегание ошибок с \includexmp{pdfa-1b}. Есть ли список лучших практик и рабочих примеров с полными файлами .XMP?

Я получаю следующую ошибку при попытке использовать некоторыеpdfa-1bвещи:

(/usr/local/texlive/2015basic/texmf-dist/tex/generic/pgf/frontendlayer/tikz/lib
raries/tikzlibrarytopaths.code.tex))) (./chronosyschr.tex)) (./longtable.sty) (./arydshln.sty) (./xmpincl.sty
(/usr/local/texlive/2015basic/texmf-dist/tex/latex/base/ifthen.sty))
! Missing $ inserted.
<inserted text> 
                $
l.274 \includexmp{pdfa-1b}

? 

Код в моем .tex-файле выглядит следующим образом:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% XMP data
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{xmpincl}

\providecommand{\xmpProducer}{LaTeX2e}
\providecommand{\xmpOrg}{MyOrg}
\providecommand{\xmpTitle}{\ttitle}
\providecommand{\xmpAuthor}{\tauthor, [email protected]}
\providecommand{\xmpKeywords}{\tkeywordsEn}

\includexmp{pdfa-1b}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% pdfInfo
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\pdfinfo{%
/Title    (\ttitle)
/Author   (\tauthor, [email protected])
/Subject  (\ttitleEn)
/Keywords (\tkeywordsEn)
/ModDate  (\pdfcreationdate)
/Trapped  /False
}

Примеры метаданных XMP (илиПредопределенные схемы XMP) не всегда доступны в документации, кроме license.XMP, который работает. Но примеры фактического использования илучшие практикиболее полные метаданные отсутствуют.

И я пытаюсь использовать файл pdfa-1b.xmp из репозитория GitHub: https://github.com/bencomp/pdfx-ext/blob/master/pdfa-1b.xmp (поскольку все, что было предоставлено нашим факультетом, не компилируется; и перенос его содержимого вhttps://www.pdflib.com/knowledge-base/xmp-metadata/free-xmp-validator/повернутыйнедействительно).

И во всей обширной документации отсутствуют базовые рабочие примеры... Или, возможно, вы просто смотрите на неправильную документацию/пакеты pdfa-1b...

Заранее спасибо за любые полезные ответы.

решение1

Пакет xmpinclработает, например, с файлом xmp, представленным в руководстве (см.https://www.ctan.org/tex-archive/macros/latex/contrib/xmpincl?lang=en, проще всего скопировать xmp из конца файла .dtx).

Однако pdfa-1b.xmpфайл содержит некоторые условные операторы с @, поэтому вам нужно окружить \includexmpwith \makeatletterи \makeatother. В моей системе по какой-то причине \ifx \@emptyконструкция не работала (было выполнено предложение else), я заменил это в файле xmp, \ifx \undefinedкоторый сработал.

МВЭ:

\documentclass{article}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% XMP data
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{xmpincl}

\providecommand{\xmpProducer}{LaTeX2e}
\providecommand{\xmpOrg}{MyOrg}
\providecommand{\xmpTitle}{MyTitle}
\providecommand{\xmpAuthor}{MyAuthor, [email protected]}
\providecommand{\xmpKeywords}{MyKeywords}
\providecommand{\xmpSubject}{MySubject}
\providecommand{\xmpCreatorTool}{\pdftexbanner}
\providecommand{\convDate}{\pdfcreationdate}
\makeatletter
\includexmp{pdfa-1b}
\makeatother
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% pdfInfo
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\pdfinfo{%
/Title    (MyTitle)
/Author   (MyAuthor, [email protected])
/Subject  (MySubject)
/Keywords (MyKeywords)
/ModDate  (\pdfcreationdate)
/Trapped  /False
}
\begin{document}
Hello, world!
\end{document}

Фрагмент из измененного pdfa-1b.xmp:

\ifx\xmpJournalnumber\undefined\relax\else<prism:issn>\xmpJournalnumber</prism:issn>\fi
\ifx\xmpVolume\undefined\relax\else<prism:volume>\xmpVolume</prism:volume>\fi
\ifx\xmpIssue\undefined\relax\else<prism:number>\xmpIssue</prism:number>\fi

Результат:

введите описание изображения здесь

Связанный контент