diff options
Diffstat (limited to 'macros/latex/contrib')
25 files changed, 1497 insertions, 785 deletions
diff --git a/macros/latex/contrib/beautybook/README.md b/macros/latex/contrib/beautybook/README.md index 78eb52617b..8db0419a27 100644 --- a/macros/latex/contrib/beautybook/README.md +++ b/macros/latex/contrib/beautybook/README.md @@ -17,7 +17,7 @@ If you are an English user, then please use a cls file with the "-EN" suffix and --- ## Version -Release 2024-06-30. +Release 2024-07-01. --- ## License diff --git a/macros/latex/contrib/beautybook/beautybook-CN.cls b/macros/latex/contrib/beautybook/beautybook-cn.cls index 49f94464bf..ee8f8ceb2b 100644 --- a/macros/latex/contrib/beautybook/beautybook-CN.cls +++ b/macros/latex/contrib/beautybook/beautybook-cn.cls @@ -1,9 +1,9 @@ %This Class is based on the default book class and options will be passed \NeedsTeXFormat{LaTeX2e} -\ProvidesClass{beautybook-CN}[30-06-2024 V10.0 Beautybook Class] +\ProvidesClass{beautybook-cn}[01-07-2024 V10.0 Beautybook Class] \DeclareOption*{\PassOptionsToClass{\CurrentOption}{ctexbook}} \ProcessOptions\relax -\LoadClass[twoside,a4paper]{ctexbook} +\LoadClass[twoside]{ctexbook} \RequirePackage[dvipsnames,svgnames,x11names,table]{xcolor} \RequirePackage{cncolours} \usepackage{fontspec} diff --git a/macros/latex/contrib/beautybook/beautybook-cn.pdf b/macros/latex/contrib/beautybook/beautybook-cn.pdf Binary files differindex 7dadd8e3c9..c0bcde4e3a 100644 --- a/macros/latex/contrib/beautybook/beautybook-cn.pdf +++ b/macros/latex/contrib/beautybook/beautybook-cn.pdf diff --git a/macros/latex/contrib/beautybook/beautybook-cn.tex b/macros/latex/contrib/beautybook/beautybook-cn.tex index bbfa40c4ae..e1b9b4ced1 100644 --- a/macros/latex/contrib/beautybook/beautybook-cn.tex +++ b/macros/latex/contrib/beautybook/beautybook-cn.tex @@ -1,7 +1,7 @@ %% This work is released under the LaTeX Project Public License, v1.3c or later. % This template is made by Ethan Lu. % Please use XeLaTeX engine! -\documentclass[zihao=-4,fontset=windows]{beautybook-CN} +\documentclass[zihao=-4,a4paper,fontset=windows]{beautybook-cn} % ---------------------------------------------------------------------------- % % The Cover Theme Chosen % % ---------------------------------------------------------------------------- % @@ -19,7 +19,9 @@ \mathstyle={ % 数学字体键值列表 math-font=plain, %plain (默认数学字体); stix; mtpro2 } -\setmainfont{Times New Roman} +\setmainfont{XITS} +\setsansfont{DejaVu Sans} +\setmonofont{Latin Modern Mono} \renewcommand{\partial}{∂} %% First one \mynewtheorem{ @@ -243,12 +245,12 @@ sorting=nty \begin{document} \thispagestyle{empty} \title{Beautybook模板简介} -\subtitle{} +\subtitle{这是一个副标题!} \edition{First Edition} \bookseries{Illustrated by Ethan Lu} \author{Ethan Lu} \pressname{Beautybook} -\presslogo{inner_pics/logo.png} +\presslogo{inner_pics/beautybook-logo.png} \coverimage{inner_pics/coverimage.jpg}%ivy-ge998908f8_1280.jpg \makecover @@ -355,7 +357,7 @@ Beauty\LaTeX{} 系列模板是由我所做的书籍模板系列, 名叫\textbf{B 以下是最小工作示例: \begin{lstlisting} -\documentclass[zihao=-4,fontset=windows]{beautybook-CN} +\documentclass[zihao=-4,a4paper,fontset=windows]{beautybook-CN} \coverstyle={ % 封面键值列表 cover-choose=cn, % cn ; en ; enfig ; birkar } diff --git a/macros/latex/contrib/beautybook/beautybook-EN.cls b/macros/latex/contrib/beautybook/beautybook-en.cls index 1aa67be4a3..34c477482e 100644 --- a/macros/latex/contrib/beautybook/beautybook-EN.cls +++ b/macros/latex/contrib/beautybook/beautybook-en.cls @@ -1,6 +1,6 @@ %This Class is based on the default book class and options will be passed \NeedsTeXFormat{LaTeX2e} -\ProvidesClass{beautybook-EN}[30-06-2024 V10.0 beautybook Class] +\ProvidesClass{beautybook-en}[01-07-2024 V10.0 beautybook Class] \DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}} \ProcessOptions\relax \LoadClass[twoside]{book} @@ -22,6 +22,23 @@ \RequirePackage{pgfplots} %画图 %%页面样式设计核心包 %提供\pgfonlayer命令以及下列图层指令 \pgfplotsset{compat=1.18} % +% /* -------------------------------------------------------------------------- */ +% /* 解决birkar封面不能用于a4paper问题 */ +% /* -------------------------------------------------------------------------- */ +\makeatletter +\ExplSyntaxOn +\cs_new:Npn \ifaivpaper@TF + { + \bool_lazy_and:nnTF + { \dim_compare_p:nNn { 297mm } = { \paperheight } } % 不能是 29.7cm + { \dim_compare_p:nNn { 210mm } = { \paperwidth } } + } +\ExplSyntaxOff +% \ifaivpaper@TF{a4paper内容}{not a4paper内容} % 这个用在想要判断a4paper的地方 +\makeatother +% /* -------------------------------------------------------------------------- */ +% /* 解决birkar封面不能用于a4paper问题 */ +% /* -------------------------------------------------------------------------- */ \ExplSyntaxOn % 封面切换程序 (LaTeX3)! \keys_define:nn {beautybook/coverstyle} diff --git a/macros/latex/contrib/beautybook/beautybook-en.pdf b/macros/latex/contrib/beautybook/beautybook-en.pdf Binary files differindex 3203378b04..a0f65f00cb 100644 --- a/macros/latex/contrib/beautybook/beautybook-en.pdf +++ b/macros/latex/contrib/beautybook/beautybook-en.pdf diff --git a/macros/latex/contrib/beautybook/beautybook-en.tex b/macros/latex/contrib/beautybook/beautybook-en.tex index 18c81b9fbf..275b5040ca 100644 --- a/macros/latex/contrib/beautybook/beautybook-en.tex +++ b/macros/latex/contrib/beautybook/beautybook-en.tex @@ -1,4 +1,4 @@ -\documentclass[12pt]{beautybook-EN} +\documentclass[12pt]{beautybook-en} % ---------------------------------------------------------------------------- % % The Cover Theme Chosen % % ---------------------------------------------------------------------------- % @@ -240,12 +240,12 @@ sorting=nty \begin{document} \thispagestyle{empty} \title{An Introduction to beautybook template} -\subtitle{} +\subtitle{A subtitle here} \edition{First Edition} \bookseries{Illustrated by Ethan Lu} \author{Ethan Lu} \pressname{beautybook} -\presslogo{inner_pics/logo.png} +\presslogo{inner_pics/beautybook-logo.png} \coverimage{inner_pics/coverimage.jpg}%ivy-ge998908f8_1280.jpg \makecover diff --git a/macros/latex/contrib/beautybook/inner_pics/beautybook-logo.png b/macros/latex/contrib/beautybook/inner_pics/beautybook-logo.png Binary files differnew file mode 100644 index 0000000000..9a1c819103 --- /dev/null +++ b/macros/latex/contrib/beautybook/inner_pics/beautybook-logo.png diff --git a/macros/latex/contrib/beautybook/inner_pics/hummingbird-8013214.jpg b/macros/latex/contrib/beautybook/inner_pics/hummingbird-8013214.jpg Binary files differnew file mode 100644 index 0000000000..424cd0909f --- /dev/null +++ b/macros/latex/contrib/beautybook/inner_pics/hummingbird-8013214.jpg diff --git a/macros/latex/contrib/beautybook/inner_pics/logo.png b/macros/latex/contrib/beautybook/inner_pics/logo.png Binary files differdeleted file mode 100644 index 470edd8a51..0000000000 --- a/macros/latex/contrib/beautybook/inner_pics/logo.png +++ /dev/null diff --git a/macros/latex/contrib/beautybook/inner_pics/mystery-1599527.jpg b/macros/latex/contrib/beautybook/inner_pics/mystery-1599527.jpg Binary files differnew file mode 100644 index 0000000000..19c0518b00 --- /dev/null +++ b/macros/latex/contrib/beautybook/inner_pics/mystery-1599527.jpg diff --git a/macros/latex/contrib/beautybook/stys/beautybook-bottompage.sty b/macros/latex/contrib/beautybook/stys/beautybook-bottompage.sty index 069dc61f60..814b929bb6 100644 --- a/macros/latex/contrib/beautybook/stys/beautybook-bottompage.sty +++ b/macros/latex/contrib/beautybook/stys/beautybook-bottompage.sty @@ -1,5 +1,5 @@ \NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesPackage{stys/beautybook-bottompage}[2024/06/30,v2.0] +\ProvidesPackage{stys/beautybook-bottompage}[2024/07/01,v2.0] \usepackage[ISBN=978-80-85955-35-4,SC0]{ean13isbn} \makeatletter %%----------------------------------封面信息定义--------------------------------------------------------%% @@ -45,9 +45,9 @@ \raggedright \sc\fontsize{20}{23}\selectfont\@bookseries} }; %系列丛书名称 - \node[right,text=white,font=\rmfamily\Large,] at - ([shift={(-.5cm,1.5cm)}]current page.south west) % - {\raisebox{-1.1cm}{\includegraphics[width=0.2\linewidth]{\@presslogo}}\hspace*{-3.5ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};% + \node[left,text=white,font=\rmfamily\Large,] at + ([shift={(5.6cm,2cm)}]current page.south west) % + {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};% \ifdefvoid{\@ISBNcode}{}{ \node[scale=1.5] (isbn) at ([shift={(-1.85\outermarginwidth,.5\covershift)}]current page.south east) {\@ISBNcode};% \begin{pgfonlayer}{bottom} diff --git a/macros/latex/contrib/beautybook/stys/beautybook-cover-birkar.sty b/macros/latex/contrib/beautybook/stys/beautybook-cover-birkar.sty index 4253b6a3a0..6668db854b 100644 --- a/macros/latex/contrib/beautybook/stys/beautybook-cover-birkar.sty +++ b/macros/latex/contrib/beautybook/stys/beautybook-cover-birkar.sty @@ -1,5 +1,5 @@ \NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesPackage{stys/beautybook-cover-birkar}[2024/06/30,v2.0] +\ProvidesPackage{stys/beautybook-cover-birkar}[2024/07/01,v2.0] \usepackage{anyfontsize} % 提供\fontsize{}{}\selectfont命令 \usepackage{etoolbox} %提供自定义封面选项接口 \usepackage[dvipsnames,svgnames,x11names,table]{xcolor}%颜色宏包 % Driver-independent color extensions @@ -34,59 +34,69 @@ decorations.pathmorphing, graphs, quotes, angles, calc, through, backgrounds} % top color=transparent!50] \makeatletter \newcommand{\aivcover}{ - \begin{scope}[opacity=0.8] - \coordinate (triangleA) at ([shift={(1cm,-1.5cm)}]current page.north); - \coordinate (triangleB) at ([shift={(-.75\linewidth,-.44\paperheight)}]triangleA); - \coordinate (triangleC) at ([shift={(.5\linewidth,-.44\paperheight)}]triangleA); - \draw[name path=triangle,very thick,coverfgcolor!70!white] - (triangleA)--(triangleB)--(triangleC)--cycle; - \draw[name path=circle,very thick,coverfgcolor!70!white] - ([shift={(-1.65cm,-7.8cm)}]triangleA) coordinate (O) circle(6cm); - %标注每个交点坐标 - \fill [name intersections={of=triangle and circle, name=i, total=\t}] - [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}] - \foreach \s in {1,...,\t}{(i-\s) circle (1em) node {}}; - \draw[name path=l,very thick,coverfgcolor!70!white] (i-1) -- (triangleC); - \draw[very thick,coverfgcolor!70!white] (i-6) -- (triangleB); - \draw[name path=l2,very thick,coverfgcolor!70!white] (i-4) -- (triangleA); - \fill[name intersections={of=l and circle,name=j,total=\l}] - [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}] - \foreach \c in {1,...,\l}{(j-\c) circle (1em) node {}}; - - \fill[name intersections={of=l2 and l,name=jj,total=\ll}] - [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}] - \foreach \cc in {1,...,\ll}{(jj-\cc) circle (1em) node {}}; - \end{scope} -} - -\newcommand{\lettercover}{ + \begin{tikzpicture}[remember picture,overlay] + \begin{pgfonlayer}{bottom} + \fill[coverfgcolor] + (current page.north west) rectangle (current page.south east);% 填充封面背景颜色 (coverbgcolor) + \fill[RED] + ([shift={(2.05cm,0)}]current page.north west) rectangle ([shift={(2.35cm,-6cm)}]current page.north west); + \fill[coverfgcolor!80,opacity=0.5] + ([shift={(0,-2cm)}]current page.north west) arc (90:-90:.3\paperheight) --cycle; + \fill[coverfgcolor!80,opacity=0.5] + ([shift={(0,-4cm)}]current page.north east) arc (90:270:.2\paperheight) --cycle; + \fill[coverfgcolor!80] + (current page.north west) rectangle ([shift={(2cm,0)}]current page.south west); \begin{scope}[opacity=0.8] - \coordinate (triangleA) at ([shift={(1cm,-1cm)}]current page.north); - \coordinate (triangleB) at ([shift={(-.85\linewidth,-.46\paperheight)}]triangleA); - \coordinate (triangleC) at ([shift={(.52\linewidth,-.46\paperheight)}]triangleA); - \draw[name path=triangle,very thick,coverfgcolor!70!white] - (triangleA)--(triangleB)--(triangleC)--cycle; - \draw[name path=circle,very thick,coverfgcolor!70!white] - ([shift={(-1.6cm,-7.3cm)}]triangleA) coordinate (O) circle(6cm); - %标注每个交点坐标 - \fill [name intersections={of=triangle and circle, name=i, total=\t}] - [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}] - \foreach \s in {1,...,\t}{(i-\s) circle (1em) node {}}; - \draw[name path=l,very thick,coverfgcolor!70!white] (i-1) -- (triangleC); - \draw[very thick,coverfgcolor!70!white] (i-6) -- (triangleB); - \draw[name path=l2,very thick,coverfgcolor!70!white] (i-4) -- (triangleA); - \fill[name intersections={of=l and circle,name=j,total=\l}] - [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}] - \foreach \c in {1,...,\l}{(j-\c) circle (1em) node {}}; - - \fill[name intersections={of=l2 and l,name=jj,total=\ll}] - [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}] - \foreach \cc in {1,...,\ll}{(jj-\cc) circle (1em) node {}}; - \end{scope} + \coordinate (triangleA) at ([shift={(1cm,-1.5cm)}]current page.north); + \coordinate (triangleB) at ([shift={(-.75\linewidth,-.44\paperheight)}]triangleA); + \coordinate (triangleC) at ([shift={(.5\linewidth,-.44\paperheight)}]triangleA); + \draw[name path=triangle,very thick,coverfgcolor!70!white] + (triangleA)--(triangleB)--(triangleC)--cycle; + \draw[name path=circle,very thick,coverfgcolor!70!white] + ([shift={(-1.65cm,-7.8cm)}]triangleA) coordinate (O) circle(6cm); + %标注每个交点坐标 + \fill [name intersections={of=triangle and circle, name=i, total=\t}] + [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}] + \foreach \s in {1,...,\t}{(i-\s) circle (1em) node {}}; + \draw[name path=l,very thick,coverfgcolor!70!white] (i-1) -- (triangleC); + \draw[very thick,coverfgcolor!70!white] (i-6) -- (triangleB); + \draw[name path=l2,very thick,coverfgcolor!70!white] (i-4) -- (triangleA); + \fill[name intersections={of=l and circle,name=j,total=\l}] + [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}] + \foreach \c in {1,...,\l}{(j-\c) circle (1em) node {}}; + + \fill[name intersections={of=l2 and l,name=jj,total=\ll}] + [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}] + \foreach \cc in {1,...,\ll}{(jj-\cc) circle (1em) node {}}; + \end{scope} + \end{pgfonlayer} + \begin{pgfonlayer}{foreground} + \fill[coverbar,opacity=.5] + ([yshift=2\outermarginwidth]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.2\outermarginwidth]current page.west); % 最左侧装饰矩形 + \end{pgfonlayer} + \shade[left color=coverfgcolor,right color=coverfgcolor!60,opacity=.3] + ([xshift=\outermarginwidth,yshift=2\outermarginwidth]current page.west) rectangle (current page.south east); % 标题背景大矩形 + \node[anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.4\covershift]current page.north) {% + \parbox{.8\paperwidth}{ + \filright + \color{white}\sffamily\fontsize{20}{23}\selectfont\@bookseries} + }; %系列丛书名称 + \node[ anchor=south,below right] (covertitles) at ([xshift=1.8\outermarginwidth-0.2cm,yshift=2.7cm]current page.west) + {\parbox{.8\paperwidth}{% + \raggedright% + {\renewcommand\baselinestretch{1.1}\selectfont \color{white}\sffamily\bfseries\fontsize{40}{40}\selectfont\@title\\[0.5ex] + \color{white}\sc\fontsize{30}{30}\selectfont + \ifdefvoid{\@subtitle}{}{\@subtitle}\par} + }};% 封面标题与副标题 + \node[anchor=west,font=\sc\fontsize{23}{23}\selectfont,text=white] at ([shift={(-.4\paperwidth,-6cm)}]covertitles) {\@edition}; + \node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth-0.3cm,yshift=\covershift]current page.west) {\@author}; + \node[left,text=white,font=\rmfamily\Large,] at + ([shift={(-2cm,2cm)}]current page.south east) + {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};% +\end{tikzpicture}% } -\newcommand*\makecover{ - \thispagestyle{empty} +\newcommand{\lettercover}{ \begin{tikzpicture}[remember picture,overlay] \begin{pgfonlayer}{bottom} \fill[coverfgcolor] @@ -99,38 +109,59 @@ decorations.pathmorphing, graphs, quotes, angles, calc, through, backgrounds} % ([shift={(0,-4cm)}]current page.north east) arc (90:270:.2\paperheight) --cycle; \fill[coverfgcolor!80] (current page.north west) rectangle ([shift={(2cm,0)}]current page.south west); - % /* -------------------------------------------------------------------------- */ - % /* 判断a4paper */ - % /* -------------------------------------------------------------------------- */ - \ifaivpaper@TF{\aivcover}{\lettercover} - % /* -------------------------------------------------------------------------- */ - % /* 判断a4paper */ - % /* -------------------------------------------------------------------------- */ -\end{pgfonlayer} -\begin{pgfonlayer}{foreground} - \fill[coverbar,opacity=.5] -([yshift=2\outermarginwidth]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.2\outermarginwidth]current page.west); % 最左侧装饰矩形 -\end{pgfonlayer} -\shade[left color=coverfgcolor,right color=coverfgcolor!60,opacity=.3] -([xshift=\outermarginwidth,yshift=2\outermarginwidth]current page.west) rectangle (current page.south east); % 标题背景大矩形 -\node[anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.4\covershift]current page.north) {% -\parbox{.8\paperwidth}{ -\filright -\color{white}\sffamily\fontsize{20}{23}\selectfont\@bookseries} -}; %系列丛书名称 -\node[ anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.57\paperheight]current page.north) -{\parbox{.8\paperwidth}{% - \raggedright% -{\renewcommand\baselinestretch{1.1}\selectfont \color{white}\sffamily\bfseries\fontsize{40}{40}\selectfont\@title\\[0.5ex] - \color{white}\sffamily\fontsize{30}{30}\selectfont - \ifdefvoid{\@subtitle}{}{\@subtitle}\par} -}};% 封面标题与副标题 -\node[anchor=west,font=\sffamily\fontsize{23}{23}\selectfont,text=white] at ([xshift=1.8\outermarginwidth,yshift=-.6\covershift]current page.west) {\@edition}; -\node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth,yshift=\covershift]current page.west) {\@author}; -\node[left,text=white,font=\rmfamily\Large,] at -([shift={(-1cm,2cm)}]current page.south east) % -{\raisebox{-1.1cm}{\includegraphics[width=0.2\linewidth]{\@presslogo}}\hspace*{-3.5ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};% + \begin{scope}[opacity=0.8] + \coordinate (triangleA) at ([shift={(1cm,-1cm)}]current page.north); + \coordinate (triangleB) at ([shift={(-.85\linewidth,-.46\paperheight)}]triangleA); + \coordinate (triangleC) at ([shift={(.52\linewidth,-.46\paperheight)}]triangleA); + \draw[name path=triangle,very thick,coverfgcolor!70!white] + (triangleA)--(triangleB)--(triangleC)--cycle; + \draw[name path=circle,very thick,coverfgcolor!70!white] + ([shift={(-1.6cm,-7.3cm)}]triangleA) coordinate (O) circle(6cm); + %标注每个交点坐标 + \fill [name intersections={of=triangle and circle, name=i, total=\t}] + [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}] + \foreach \s in {1,...,\t}{(i-\s) circle (1em) node {}}; + \draw[name path=l,very thick,coverfgcolor!70!white] (i-1) -- (triangleC); + \draw[very thick,coverfgcolor!70!white] (i-6) -- (triangleB); + \draw[name path=l2,very thick,coverfgcolor!70!white] (i-4) -- (triangleA); + \fill[name intersections={of=l and circle,name=j,total=\l}] + [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}] + \foreach \c in {1,...,\l}{(j-\c) circle (1em) node {}}; + + \fill[name intersections={of=l2 and l,name=jj,total=\ll}] + [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}] + \foreach \cc in {1,...,\ll}{(jj-\cc) circle (1em) node {}}; + \end{scope} + \end{pgfonlayer} + \begin{pgfonlayer}{foreground} + \fill[coverbar,opacity=.5] + ([yshift=2\outermarginwidth]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.2\outermarginwidth]current page.west); % 最左侧装饰矩形 + \end{pgfonlayer} + \shade[left color=coverfgcolor,right color=coverfgcolor!60,opacity=.3] + ([xshift=\outermarginwidth,yshift=2\outermarginwidth]current page.west) rectangle (current page.south east); % 标题背景大矩形 + \node[anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.4\covershift]current page.north) {% + \parbox{.8\paperwidth}{ + \filright + \color{white}\sffamily\fontsize{20}{23}\selectfont\@bookseries} + }; %系列丛书名称 + \node[ anchor=south,below right] (covertitles) at ([xshift=1.8\outermarginwidth-0.2cm,yshift=2.7cm]current page.west) + {\parbox{.8\paperwidth}{% + \raggedright% + {\renewcommand\baselinestretch{1.1}\selectfont \color{white}\sffamily\bfseries\fontsize{40}{40}\selectfont\@title\\[0.5ex] + \color{white}\sc\fontsize{30}{30}\selectfont + \ifdefvoid{\@subtitle}{}{\@subtitle}\par} + }};% 封面标题与副标题 + \node[anchor=west,font=\sc\fontsize{23}{23}\selectfont,text=white] at ([shift={(-.4\paperwidth,-6cm)}]covertitles) {\@edition}; + \node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth-0.3cm,yshift=\covershift]current page.west) {\@author}; + \node[left,text=white,font=\rmfamily\Large,] at + ([shift={(-2cm,2cm)}]current page.south east) + {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};% \end{tikzpicture}% +} + +\newcommand\makecover{ + \thispagestyle{empty} + \ifaivpaper@TF{\aivcover}{\lettercover} {\newpage\thispagestyle{empty}} } \makeatother diff --git a/macros/latex/contrib/beautybook/stys/beautybook-cover-cn.sty b/macros/latex/contrib/beautybook/stys/beautybook-cover-cn.sty index 176e740f6f..2c871fcf89 100644 --- a/macros/latex/contrib/beautybook/stys/beautybook-cover-cn.sty +++ b/macros/latex/contrib/beautybook/stys/beautybook-cover-cn.sty @@ -1,5 +1,5 @@ \NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesPackage{stys/beautybook-cover-cn}[2024/06/30,v2.0] +\ProvidesPackage{stys/beautybook-cover-cn}[2024/07/01,v2.0] \usetikzlibrary{calc,fadings,patterns} \usepackage{adjustbox} %修正minipage顶部对齐问题 %%%%===============================================================%%%%% @@ -19,34 +19,41 @@ bottom color =transparent!100, top color=transparent!50] \makeatletter -\newcommand*\makecover{ - %% Use the Tikz library positioning and clear the page header and footer - \usetikzlibrary{positioning} - \thispagestyle{empty} +\newcommand{\aivcover}{ \begin{tikzpicture}[remember picture,overlay] \fill[coverfgcolor!75] (current page.north west) rectangle (current page.south east);% 填充封面背景颜色 (coverbgcolor) - \fill[coverfgcolor!50] - ([xshift=-3\covershift,yshift=-.4\covershift]current page.east) rectangle ([yshift=-1.35\covershift]current page.east); % 被标题背景遮挡露出一部分的装饰矩形 + \ifaivpaper@TF{ % A4 + \fill[coverfgcolor!50] + ([xshift=-3\covershift,yshift=-.4\covershift]current page.east) rectangle ([yshift=-1.35\covershift]current page.east); % 被标题背景遮挡露出一部分的装饰矩形 + }{ % Letter + \fill[coverfgcolor!50] + ([xshift=-3\covershift,yshift=-.4\covershift]current page.east) rectangle ([yshift=-1.1\covershift]current page.east); % 被标题背景遮挡露出一部分的装饰矩形 + } \fill[coverfgcolor] ([xshift=\outermarginwidth]current page.north west) rectangle ([xshift=-\outermarginwidth,yshift=1.5\covershift]current page.south east); % 标题背景大矩形 - \fill[coverbar] - ([yshift=.44\covershift]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.4\covershift]current page.west); % 最左侧装饰矩形 + \ifaivpaper@TF{ + \fill[coverbar] + ([yshift=.44\covershift+0.05cm]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.4\covershift]current page.west); % 最左侧装饰矩形 + }{ + \fill[coverbar] + ([yshift=.44\covershift-0.1cm]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.4\covershift]current page.west); % 最左侧装饰矩形 + } \node[left] at ([xshift=-1.8cm,yshift=-1.5cm]current page.north east) {% \parbox{3\covershift}{ \raggedleft \color{white}\sffamily\bfseries\fontsize{18}{22}\selectfont\@bookseries} }; %系列丛书名称 - \node[right] at ([xshift=\outermarginwidth,yshift=1.5*\covershift]current page.west) - {\parbox{.8\paperwidth}{% - \filright% - \color{white}\sffamily\bfseries\fontsize{30}{30}\selectfont\@title\\[-1.2ex] - \begin{tikzpicture} - \draw[white,line width=1pt] (0,0) --++ (\paperwidth-3\outermarginwidth,0); - \end{tikzpicture}\\[-.5ex] - \color{white}\sffamily\bfseries\fontsize{30}{30}\selectfont - \ifdefvoid{\@subtitle}{}{\@subtitle} - }};% 封面英文书名与中文书名 + \node[right] at ([xshift=\outermarginwidth,yshift=1.5*\covershift]current page.west) + {\parbox{.8\paperwidth}{% + \filright% + \color{white}\sffamily\bfseries\fontsize{30}{30}\selectfont\@title\\[-1ex] + \begin{tikzpicture} + \draw[white,line width=1pt] (0,0) --++ (\paperwidth-3\outermarginwidth,0); + \end{tikzpicture}\\[0ex] + \color{white}\sffamily\bfseries\fontsize{30}{30}\selectfont + \ifdefvoid{\@subtitle}{}{\@subtitle} + }};% 封面英文书名与中文书名 \node[left,inner sep=0pt,outer sep=0pt] at ([xshift=1.2\outermarginwidth,yshift=1.8cm]current page.east) {% \adjustbox{valign=t}{ @@ -68,15 +75,84 @@ ([xshift=\outermarginwidth]current page.south west) rectangle ++(1.8*\covershift,.575\paperheight); \fill[pattern color=coverfgcolor!70,pattern=horizontal lines,opacity=0.8] ([xshift=\outermarginwidth,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east); - \fill [coverfgcolor!80,path fading=fade right]% - ([xshift=\outermarginwidth+.5\linewidth+.5cm,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east); - \fill [coverfgcolor!80,path fading=fade left]% + \ifaivpaper@TF{ % A4Paper + \fill [coverfgcolor!80,path fading=fade right]% ([xshift=\outermarginwidth+.5\linewidth+.5cm,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east); + \fill [coverfgcolor!80,path fading=fade left]% + ([xshift=\outermarginwidth+.5\linewidth+.5cm,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east); + }{ % Letterpaper + \fill [coverfgcolor!80,path fading=fade right]% + ([xshift=\outermarginwidth+.5\linewidth+.2cm,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east); + \fill [coverfgcolor!80,path fading=fade left]% + ([xshift=\outermarginwidth+.5\linewidth+.2cm,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east); + } \node[left,text=white,font=\rmfamily\Large,] at ([shift={(-2cm,2cm)}]current page.south east) % - {\raisebox{-1.1cm}{\includegraphics[width=0.2\linewidth]{\@presslogo}}\hspace*{-3.5ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};% + {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};% \end{tikzpicture}% - {\newpage\thispagestyle{empty}}} + } + +\newcommand{\lettercover}{ + \begin{tikzpicture}[remember picture,overlay] + \fill[coverfgcolor!75] + (current page.north west) rectangle (current page.south east);% 填充封面背景颜色 (coverbgcolor) + \fill[coverfgcolor!50] + ([xshift=-3\covershift,yshift=-.4\covershift]current page.east) rectangle ([yshift=-1.2\covershift]current page.east); % 被标题背景遮挡露出一部分的装饰矩形 + \fill[coverfgcolor] + ([xshift=\outermarginwidth]current page.north west) rectangle ([xshift=-\outermarginwidth,yshift=1.5\covershift]current page.south east); % 标题背景大矩形 + \fill[coverbar] + ([yshift=.44\covershift-0.1cm]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.4\covershift]current page.west); % 最左侧装饰矩形 + \node[left] at ([xshift=-1.8cm,yshift=-1.5cm]current page.north east) {% + \parbox{3\covershift}{ + \raggedleft + \color{white}\sffamily\bfseries\fontsize{18}{22}\selectfont\@bookseries} + }; %系列丛书名称 + \node[right] at ([xshift=\outermarginwidth,yshift=1.5*\covershift]current page.west) + {\parbox{.8\paperwidth}{% + \filright% + \color{white}\sffamily\bfseries\fontsize{30}{30}\selectfont\@title\\[-1ex] + \begin{tikzpicture} + \draw[white,line width=1pt] (0,0) --++ (\paperwidth-3\outermarginwidth,0); + \end{tikzpicture}\\[0ex] + \color{white}\sffamily\bfseries\fontsize{30}{30}\selectfont + \ifdefvoid{\@subtitle}{}{\@subtitle} + }};% 封面英文书名与中文书名 + \node[left,inner sep=0pt,outer sep=0pt] at ([xshift=1.2\outermarginwidth,yshift=1.8cm]current page.east) + {% + \adjustbox{valign=t}{ + \begin{minipage}{.25\textwidth} + \begin{tikzpicture} + \foreach \x/\r in {1.2/6,.8/4} { + \draw[white,line width=\x pt] (0,0) circle [radius=\r pt];} + \fill[white] (0,0) circle [radius=2.5pt]; + \end{tikzpicture} + \hspace{2pt}\color{white}\sffamily\fontsize{20}{25}\selectfont Editors + \end{minipage}} + \hfill + \adjustbox{valign=t}{\begin{minipage}{.45\textwidth} + \raggedright\color{white}\sffamily\fontsize{20}{25}\selectfont\@author + \end{minipage}} + };% 封面作者信息栏 + \fill [path picture={ \node at (path picture bounding box.center) + {\includegraphics[height=1.1\linewidth,keepaspectratio]{\@coverimage}};}] + ([xshift=\outermarginwidth]current page.south west) rectangle ++(1.8*\covershift,.575\paperheight); + \fill[pattern color=coverfgcolor!70,pattern=horizontal lines,opacity=0.8] + ([xshift=\outermarginwidth,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east); + \fill [coverfgcolor!80,path fading=fade right]% + ([xshift=\outermarginwidth+.5\linewidth+.2cm,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east); + \fill [coverfgcolor!80,path fading=fade left]% + ([xshift=\outermarginwidth+.5\linewidth+.2cm,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east); + \node[left,text=white,font=\rmfamily\Large,] at + ([shift={(-2cm,2cm)}]current page.south east) % + {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};% + \end{tikzpicture}% + } + +\newcommand\makecover{ + \thispagestyle{empty} + \ifaivpaper@TF{\aivcover}{\lettercover} + {\newpage\thispagestyle{empty}} +} \makeatother \endinput % %%%%===============================================================%%%%% diff --git a/macros/latex/contrib/beautybook/stys/beautybook-cover-en.sty b/macros/latex/contrib/beautybook/stys/beautybook-cover-en.sty index 1c86810380..76d358c627 100644 --- a/macros/latex/contrib/beautybook/stys/beautybook-cover-en.sty +++ b/macros/latex/contrib/beautybook/stys/beautybook-cover-en.sty @@ -1,5 +1,5 @@ \NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesPackage{stys/beautybook-cover-en}[2024/06/30,v2.0] +\ProvidesPackage{stys/beautybook-cover-en}[2024/07/01,v2.0] \usepackage{anyfontsize} % 提供\fontsize{}{}\selectfont命令 \usepackage{etoolbox} %提供自定义封面选项接口 \usepackage[dvipsnames,svgnames,x11names,table]{xcolor}%颜色宏包 % Driver-independent color extensions @@ -20,10 +20,66 @@ bottom color =transparent!100, top color=transparent!50] \makeatletter -\newcommand*\makecover{ - %% Use the Tikz library positioning and clear the page header and footer - \usetikzlibrary{positioning} - \thispagestyle{empty} +\newcommand{\aivcover}{ + \begin{tikzpicture}[remember picture,overlay] + \fill[coverfgcolor] + (current page.north west) rectangle (current page.south east);% 填充封面背景颜色 (coverbgcolor) + \coordinate (start) at ($(current page.east)!0.5!(current page.north east)+(1,-1)$); + \coordinate (end) at (current page.north west); + \foreach \i in {0,0.01,...,1} + { + \coordinate (point) at ($(start)!\i!(end)$); + \draw[coverfgcolor!50] + ($(point)+(310*\i:6)$)-- + ($(point)+(310*\i+120:6)$)-- + ($(point)+(310*\i+240:6)$)-- + ($(point)+(310*\i:6)$); + } + \coordinate (start) at (current page.south west); + \coordinate (end) at (current page.east); + \foreach \i in {0,0.02,...,1} + { + \coordinate (point) at ($(start)!\i!(end)$); + \draw[coverfgcolor!50] + ($(point)+(310*\i:10)$)-- + ($(point)+(310*\i+120:10)$)-- + ($(point)+(310*\i+240:10)$)-- + ($(point)+(310*\i:10)$); + } + \shade[bottom color=coverfgcolor,top color=coverfgcolor!70,opacity=0.7] + ([xshift=.5\outermarginwidth]current page.north west) rectangle (current page.south east); % 背景大矩形 + \shade[left color=coverfgcolor,right color=coverfgcolor!60,opacity=0.5] + ([xshift=\outermarginwidth,yshift=2\outermarginwidth]current page.west) rectangle (current page.south east); % 标题背景大矩形 + \fill[coverbar!90,opacity=0.8] + ([yshift=2\outermarginwidth]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.2\outermarginwidth]current page.west); % 最左侧装饰矩形 + \foreach \lx/\rx/\ry/\bc/\tc in { + 1/1.5/1.75/70/80,1.5/2/1.6/65/75,2/2.5/1.3/60/70,2.5/3/1/55/65,3/3.5/.7/50/60,3.5/4/1.2/60/70,4/4.5/1.9/75/85,4.5/5/1.1/55/65,5/5.5/1.2/60/70,6/6.5/1.6/65/75,6.5/7/1.3/60/70,7/7.5/1.87/70/80,7.5/8/1/55/65,8/8.5/.9/50/60,8.5/9/1.8/70/80,9/9.5/1.6/65/75,9.5/10/1.4/60/70,10/10.5/1/55/65,10.5/11/.7/50/60,11/11.5/1.3/55/65,11.5/12/1/70/80,12/12.5/1.3/65/75,12.5/13/1.6/60/70,13/13.5/1.75/55/65,13.5/14/1.6/65/75,14/14.5/1.3/60/70 + }{ + \shade[bottom color=coverfgcolor!\bc,top color=coverfgcolor!\tc,opacity=.5] + ([xshift=\lx\outermarginwidth]current page.north west) rectangle ([xshift=\rx\outermarginwidth,yshift=-\ry\covershift]current page.north west);%顶部琴键矩形 + } + \node[anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.4\covershift]current page.north) {% + \parbox{.8\paperwidth}{ + \filright + \color{white}\sffamily\fontsize{20}{23}\selectfont\@bookseries} + }; %系列丛书名称 + \node[ anchor=south,below right] (covertitles) at ([xshift=1.8\outermarginwidth-0.2cm,yshift=2.7cm]current page.west) + {\parbox{.8\paperwidth}{% + \raggedright% + {\renewcommand\baselinestretch{1.1}\selectfont \color{white}\sffamily\bfseries\fontsize{40}{40}\selectfont\@title\\[0.5ex] + \color{white}\sffamily\fontsize{30}{30}\selectfont + \ifdefvoid{\@subtitle}{}{\@subtitle}\par} + }};% 封面标题与副标题 + \node[anchor=west,font=\sc\fontsize{23}{23}\selectfont,text=white] at ([shift={(-.4\paperwidth,-6cm)}]covertitles) {\@edition}; + \node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth-0.3cm,yshift=\covershift]current page.west) {\@author}; + \node[left,text=white,font=\rmfamily\Large,] at + ([shift={(-2cm,2cm)}]current page.south east) % + {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};% + \end{tikzpicture}% + {\newpage\thispagestyle{empty}} +} + +\newcommand{\lettercover}{ \begin{tikzpicture}[remember picture,overlay] \fill[coverfgcolor] (current page.north west) rectangle (current page.south east);% 填充封面背景颜色 (coverbgcolor) @@ -66,21 +122,27 @@ \filright \color{white}\sffamily\fontsize{20}{23}\selectfont\@bookseries} }; %系列丛书名称 - \node[ anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.57\paperheight]current page.north) + \node[ anchor=south,below right] (covertitles) at ([xshift=1.8\outermarginwidth-0.2cm,yshift=2.7cm]current page.west) {\parbox{.8\paperwidth}{% \raggedright% {\renewcommand\baselinestretch{1.1}\selectfont \color{white}\sffamily\bfseries\fontsize{40}{40}\selectfont\@title\\[0.5ex] \color{white}\sffamily\fontsize{30}{30}\selectfont \ifdefvoid{\@subtitle}{}{\@subtitle}\par} }};% 封面标题与副标题 - \node[anchor=west,font=\sffamily\fontsize{23}{23}\selectfont,text=white] at ([xshift=1.8\outermarginwidth,yshift=-.6\covershift]current page.west) {\@edition}; - \node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth,yshift=\covershift]current page.west) {\@author}; + \node[anchor=west,font=\sc\fontsize{23}{23}\selectfont,text=white] at ([shift={(-.4\paperwidth,-6cm)}]covertitles) {\@edition}; + \node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth-0.3cm,yshift=\covershift]current page.west) {\@author}; \node[left,text=white,font=\rmfamily\Large,] at - ([shift={(-1cm,2cm)}]current page.south east) % - {\raisebox{-1.1cm}{\includegraphics[width=0.2\linewidth]{\@presslogo}}\hspace*{-3.5ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};% + ([shift={(-2cm,2cm)}]current page.south east) % + {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};% \end{tikzpicture}% {\newpage\thispagestyle{empty}} } + +\newcommand\makecover{ + \thispagestyle{empty} + \ifaivpaper@TF{\aivcover}{\lettercover} + {\newpage\thispagestyle{empty}} +} \makeatother %%%%===============================================================%%%%% %%------------------------------------------------------封面设计--------------------------------------------------------%% diff --git a/macros/latex/contrib/beautybook/stys/beautybook-cover-enfig.sty b/macros/latex/contrib/beautybook/stys/beautybook-cover-enfig.sty index e84129ddea..9c24de8b3e 100644 --- a/macros/latex/contrib/beautybook/stys/beautybook-cover-enfig.sty +++ b/macros/latex/contrib/beautybook/stys/beautybook-cover-enfig.sty @@ -1,5 +1,5 @@ \NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesPackage{stys/beautybook-cover-enfig}[2024/06/30,v2.0] +\ProvidesPackage{stys/beautybook-cover-enfig}[2024/07/01,v2.0] \tikzfading[name=fade right, right color =transparent!100, left color=transparent!0] @@ -13,10 +13,40 @@ bottom color =transparent!100, top color=transparent!50] \makeatletter -\newcommand*\makecover{ - %% Use the Tikz library positioning and clear the page header and footer - \usetikzlibrary{positioning} - \thispagestyle{empty} +\newcommand{\aivcover}{ + \begin{tikzpicture}[remember picture,overlay] + \begin{pgfonlayer}{bottom} + \node[opacity=0.8,inner sep=0pt] at (current + page.center){\includegraphics[width=\paperwidth,height=\paperheight]{\@coverimage}}; + \end{pgfonlayer} + \shade[left color=coverbgcolor!70,right color=coverbgcolor!50,path fading=fade right,opacity=.5] + ([xshift=.5\outermarginwidth]current page.north west) rectangle ([xshift=4\outermarginwidth]current page.south west); % 背景大矩形虚化 + \shade[left color=coverfgcolor,right color=coverfgcolor!60,opacity=.8] + ([xshift=\outermarginwidth,yshift=2\outermarginwidth]current page.west) rectangle (current page.south east); % 标题背景大矩形 + \fill[coverbar,opacity=0.8] + ([yshift=2\outermarginwidth]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.2\outermarginwidth]current page.west); % 最左侧装饰矩形 + \node[anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.4\covershift]current page.north) {% + \parbox{.8\paperwidth}{ + \filright + \color{white}\sc\fontsize{20}{23}\selectfont\@bookseries} + }; %系列丛书名称 + \node[ anchor=south,below right] (covertitles) at ([xshift=1.8\outermarginwidth-0.2cm,yshift=2.7cm]current page.west) + {\parbox{.8\paperwidth}{% + \raggedright% + {\renewcommand\baselinestretch{1.1}\selectfont \color{white}\sffamily\bfseries\fontsize{40}{40}\selectfont\@title\\[0.5ex] + \color{white}\sc\fontsize{30}{30}\selectfont + \ifdefvoid{\@subtitle}{}{\@subtitle}\par} + }};% 封面标题与副标题 + \node[anchor=west,font=\sc\fontsize{23}{23}\selectfont,text=white] at ([shift={(-.4\paperwidth,-6cm)}]covertitles) {\@edition}; + \node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth-0.3cm,yshift=\covershift]current page.west) {\@author}; + \node[left,text=white,font=\rmfamily\Large,] at + ([shift={(-2cm,2cm)}]current page.south east) % + {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};% + \end{tikzpicture}% + {\newpage\thispagestyle{empty}} +} + +\newcommand{\lettercover}{ \begin{tikzpicture}[remember picture,overlay] \begin{pgfonlayer}{bottom} \node[opacity=0.8,inner sep=0pt] at (current @@ -33,20 +63,26 @@ \filright \color{white}\sc\fontsize{20}{23}\selectfont\@bookseries} }; %系列丛书名称 - \node[ anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.55\paperheight]current page.north) + \node[ anchor=south,below right] (covertitles) at ([xshift=1.8\outermarginwidth-0.2cm,yshift=2.7cm]current page.west) {\parbox{.8\paperwidth}{% \raggedright% {\renewcommand\baselinestretch{1.1}\selectfont \color{white}\sffamily\bfseries\fontsize{40}{40}\selectfont\@title\\[0.5ex] \color{white}\sc\fontsize{30}{30}\selectfont \ifdefvoid{\@subtitle}{}{\@subtitle}\par} }};% 封面标题与副标题 - \node[anchor=west,font=\sc\fontsize{23}{23}\selectfont,text=white] at ([xshift=1.8\outermarginwidth,yshift=-.6\covershift]current page.west) {\@edition}; - \node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth,yshift=\covershift]current page.west) {\@author}; + \node[anchor=west,font=\sc\fontsize{23}{23}\selectfont,text=white] at ([shift={(-.4\paperwidth,-6cm)}]covertitles) {\@edition}; + \node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth-0.3cm,yshift=\covershift]current page.west) {\@author}; \node[left,text=white,font=\rmfamily\Large,] at - ([shift={(-1cm,2cm)}]current page.south east) % - {\raisebox{-1.1cm}{\includegraphics[width=0.2\linewidth]{\@presslogo}}\hspace*{-3.5ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};% + ([shift={(-2cm,2cm)}]current page.south east) % + {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};% \end{tikzpicture}% {\newpage\thispagestyle{empty}} } + +\newcommand\makecover{ + \thispagestyle{empty} + \ifaivpaper@TF{\aivcover}{\lettercover} + {\newpage\thispagestyle{empty}} +} \makeatother \endinput diff --git a/macros/latex/contrib/beautybook/stys/symbols.tex b/macros/latex/contrib/beautybook/stys/symbols.tex new file mode 100644 index 0000000000..cd65b06195 --- /dev/null +++ b/macros/latex/contrib/beautybook/stys/symbols.tex @@ -0,0 +1,141 @@ +%--------------------------------- +\newcommand{\fraka}{{\mathfrak a}} +\newcommand{\frakb}{{\mathfrak b}} +\newcommand{\frakc}{{\mathfrak c}} +\newcommand{\frakd}{{\mathfrak d}} +\newcommand{\frake}{{\mathfrak e}} +\newcommand{\frakf}{{\mathfrak f}} +\newcommand{\frakg}{{\mathfrak g}} +\newcommand{\frakh}{{\mathfrak h}} +\newcommand{\fraki}{{\mathfrak i}} +\newcommand{\frakj}{{\mathfrak j}} +\newcommand{\frakk}{{\mathfrak k}} +\newcommand{\frakl}{{\mathfrak l}} +\newcommand{\frakm}{{\mathfrak m}} +\newcommand{\frakn}{{\mathfrak n}} +\newcommand{\frako}{{\mathfrak o}} +\newcommand{\frakp}{{\mathfrak p}} +\newcommand{\frakq}{{\mathfrak q}} +\newcommand{\frakr}{{\mathfrak r}} +\newcommand{\fraks}{{\mathfrak s}} +\newcommand{\frakt}{{\mathfrak t}} +\newcommand{\fraku}{{\mathfrak u}} +\newcommand{\frakv}{{\mathfrak v}} +\newcommand{\frakw}{{\mathfrak w}} +\newcommand{\frakx}{{\mathfrak x}} +\newcommand{\fraky}{{\mathfrak y}} +\newcommand{\frakz}{{\mathfrak z}} +%--------------------------------- +%--------------------------------- +\newcommand{\frakA}{{\mathfrak A}} +\newcommand{\frakB}{{\mathfrak B}} +\newcommand{\frakC}{{\mathfrak C}} +\newcommand{\frakD}{{\mathfrak D}} +\newcommand{\frakE}{{\mathfrak E}} +\newcommand{\frakF}{{\mathfrak F}} +\newcommand{\frakG}{{\mathfrak G}} +\newcommand{\frakH}{{\mathfrak H}} +\newcommand{\frakI}{{\mathfrak I}} +\newcommand{\frakJ}{{\mathfrak J}} +\newcommand{\frakK}{{\mathfrak K}} +\newcommand{\frakL}{{\mathfrak L}} +\newcommand{\frakM}{{\mathfrak V}} +\newcommand{\frakN}{{\mathfrak N}} +\newcommand{\frakO}{{\mathfrak O}} +\newcommand{\frakP}{{\mathfrak P}} +\newcommand{\frakQ}{{\mathfrak Q}} +\newcommand{\frakR}{{\mathfrak R}} +\newcommand{\frakS}{{\mathfrak S}} +\newcommand{\frakT}{{\mathfrak T}} +\newcommand{\frakU}{{\mathfrak U}} +\newcommand{\frakV}{{\mathfrak V}} +\newcommand{\frakW}{{\mathfrak W}} +\newcommand{\frakX}{{\mathfrak X}} +\newcommand{\frakY}{{\mathfrak Y}} +\newcommand{\frakZ}{{\mathfrak Z}} +%--------------------------------- +%--------------------------------- +\newcommand{\bA}{{\mathbb A}} +\newcommand{\bB}{{\mathbb B}} +\newcommand{\bC}{{\mathbb C}} +\newcommand{\bD}{{\mathbb D}} +\newcommand{\bE}{{\mathbb E}} +\newcommand{\bF}{{\mathbb F}} +\newcommand{\bG}{{\mathbb G}} +\newcommand{\bH}{{\mathbb H}} +\newcommand{\bI}{{\mathbb I}} +\newcommand{\bJ}{{\mathbb J}} +\newcommand{\bK}{{\mathbb K}} +\newcommand{\bL}{{\mathbb L}} +\newcommand{\bM}{{\mathbb M}} +\newcommand{\bN}{{\mathbb N}} +\newcommand{\bO}{{\mathbb O}} +\newcommand{\bP}{{\mathbb P}} +\newcommand{\bQ}{{\mathbb Q}} +\newcommand{\bR}{{\mathbb R}} +\newcommand{\bS}{{\mathbb S}} +\newcommand{\bT}{{\mathbb T}} +\newcommand{\bU}{{\mathbb U}} +\newcommand{\bV}{{\mathbb V}} +\newcommand{\bW}{{\mathbb W}} +\newcommand{\bX}{{\mathbb X}} +\newcommand{\bY}{{\mathbb Y}} +\newcommand{\bZ}{{\mathbb Z}} +%--------------------------------- +%--------------------------------- +\newcommand{\mA}{{\mathcal A}} +\newcommand{\mB}{{\mathcal B}} +\newcommand{\mC}{{\mathcal C}} +\newcommand{\mD}{{\mathcal D}} +\newcommand{\mE}{{\mathcal E}} +\newcommand{\mF}{{\mathcal F}} +\newcommand{\mG}{{\mathcal G}} +\newcommand{\mH}{{\mathcal H}} +\newcommand{\mI}{{\mathcal I}} +\newcommand{\mJ}{{\mathcal J}} +\newcommand{\mK}{{\mathcal K}} +\newcommand{\mL}{{\mathcal L}} +\newcommand{\mM}{{\mathcal V}} +\newcommand{\mN}{{\mathcal N}} +\newcommand{\mO}{{\mathcal O}} +\newcommand{\mP}{{\mathcal P}} +\newcommand{\mQ}{{\mathcal Q}} +\newcommand{\mR}{{\mathcal R}} +\newcommand{\mS}{{\mathcal S}} +\newcommand{\mT}{{\mathcal T}} +\newcommand{\mU}{{\mathcal U}} +\newcommand{\mV}{{\mathcal V}} +\newcommand{\mW}{{\mathcal W}} +\newcommand{\mX}{{\mathcal X}} +\newcommand{\mY}{{\mathcal Y}} +\newcommand{\mZ}{{\mathcal Z}} +%--------------------------------- +%--------------------------------- +\newcommand{\sA}{{\mathscr A}} +\newcommand{\sB}{{\mathscr B}} +\newcommand{\sC}{{\mathscr C}} +\newcommand{\sD}{{\mathscr D}} +\newcommand{\sE}{{\mathscr E}} +\newcommand{\sF}{{\mathscr F}} +\newcommand{\sG}{{\mathscr G}} +\newcommand{\sH}{{\mathscr H}} +\newcommand{\sI}{{\mathscr I}} +\newcommand{\sJ}{{\mathscr J}} +\newcommand{\sK}{{\mathscr K}} +\newcommand{\sL}{{\mathscr L}} +\newcommand{\sM}{{\mathscr V}} +\newcommand{\sN}{{\mathscr N}} +\newcommand{\sO}{{\mathscr O}} +\newcommand{\sP}{{\mathscr P}} +\newcommand{\sQ}{{\mathscr Q}} +\newcommand{\sR}{{\mathscr R}} +\newcommand{\sS}{{\mathscr S}} +\newcommand{\sT}{{\mathscr T}} +\newcommand{\sU}{{\mathscr U}} +\newcommand{\sV}{{\mathscr V}} +\newcommand{\sW}{{\mathscr W}} +\newcommand{\sX}{{\mathscr X}} +\newcommand{\sY}{{\mathscr Y}} +\newcommand{\sZ}{{\mathscr Z}} +%--------------------------------- +%------------------------- end list of symbols -------------- diff --git a/macros/latex/contrib/pdfx/pdfx.pdf b/macros/latex/contrib/pdfx/pdfx.pdf Binary files differindex 86e447b283..140c496d52 100644 --- a/macros/latex/contrib/pdfx/pdfx.pdf +++ b/macros/latex/contrib/pdfx/pdfx.pdf diff --git a/macros/latex/contrib/pdfx/src/pdfx.dtx b/macros/latex/contrib/pdfx/src/pdfx.dtx index ffdb92ee01..573a23b611 100644 --- a/macros/latex/contrib/pdfx/src/pdfx.dtx +++ b/macros/latex/contrib/pdfx/src/pdfx.dtx @@ -1,33 +1,33 @@ % \iffalse meta-comment -% +% % File: pdfx.dtx % % Copyright (c) 2019, CV Radhakrishnan <cvr@river-valley.org>, % Han The Thanh <thanh@river-valley.org>, % Ross Moore <ross.moore@mq.edu.au>, % Peter Selinger <selinger@mathstat.dal.ca> -% +% % This file may be distributed and/or modified under the conditions % of the LaTeX Project Public License, either version 1.2 of this % license or (at your option) any later version. The latest version % of this license is in: -% +% % http://www.latex-project.org/lppl.txt -% +% % and version 1.2 or later is part of all distributions of LaTeX % version 1999/12/01 or later. % % \fi % -% \CheckSum{6309} +% \CheckSum{6802} % \iffalse % %<*driver> \pdfcompresslevel 9 \providecommand{\pdfxopt}{a-2u} \providecommand{\lastyear}{2018} -\providecommand{\thisyear}{2019} -\begin{filecontents*}{./\jobname.xmpdata} +\providecommand{\thisyear}{2024} +\begin{filecontents}[force]{./\jobname.xmpdata} \Title{Generation of PDF/X- and PDF/A-compliant PDFs with pdfTeX \textemdash\ pdfx.sty} \Author{\CVR\sep \Thanh\sep Ross Moore\sep Peter Selinger} \Subject{This package supports generation of PDF/X-, PDF/A- and PDF/E-compliant documents, in most of their variants, using pdfLaTeX, LuaLaTeX and XeLaTeX.} @@ -37,10 +37,10 @@ \Copyright{Public domain.} \Copyrighted{False} \CopyrightURL{http://tug.org/texlive/} -\CoverDisplayDate{March \thisyear} -\CoverDate{\thisyear-03-10} +\CoverDisplayDate{July \thisyear} +\CoverDate{\thisyear-07-01} \CreatorTool{LaTeX + pdfx.sty with option \pdfxopt, from TeX Live \thisyear} -\Date{2017-05-18\sep 2017-06-23\sep 2018-11-29\sep 2018-12-22\sep 2019-02-08\sep 2019-03-10} +\Date{2024-07-01} \Advisory{An earlier version of this documentation was published as: TUGboat 36, No.2, pp.136\textendash 142 (2015)} \Advisory{v1.6: Added XMP support for PDF/UA-1. Added more Metadata fields and Language support.} \Advisory{v1.6: Default RGB and CMYK profiles now require the colorprofiles.sty package.} @@ -52,16 +52,29 @@ \Advisory{v1.6: Support for 8-bit Hebrew encodings, some Arabic and Devanagari.} \Advisory{v1.6: Updated documentation, incl. for LaTeX changes.} \Advisory{v1.6.1: Fixed issue with ifthen package; improved Metadata with LuaTeX and XeTeX.} -\Advisory{v.1.6.1: Flexibility with page boxes for PDF/X.} -\Advisory{v.1.6.2: Fixed passing of options to xcolor, and some glyphtounicode values.} -\Advisory{v.1.6.2: Fixed encoding issue. Extra warning when colorprofiles.tex is missing.} -\Advisory{v.1.6.3: Properly fixed encoding issue; supports \string\pdfomitcharset\ primitive.} -\Advisory{v.1.6.3: Reference to veraPDF validation software; additions to glyphtounicode-ntx.tex.} -\Advisory{v.1.6.3: Patched \string\mathaccentV\ to output accents after the base character.} +\Advisory{v1.6.1: Flexibility with page boxes for PDF/X.} +\Advisory{v1.6.2: Fixed passing of options to xcolor, and some glyphtounicode values.} +\Advisory{v1.6.2: Fixed encoding issue. Extra warning when colorprofiles.tex is missing.} +\Advisory{v1.6.3: Properly fixed encoding issue; supports \string\pdfomitcharset\ primitive.} +\Advisory{v1.6.3: Reference to veraPDF validation software; additions to glyphtounicode-ntx.tex.} +\Advisory{v1.6.3: Patched \string\mathaccentV\ to output accents after the base character.} +\Advisory{v1.6.4: Added check and warning with luatex for whether \string\pdfminorversion\ can be changed.} +\Advisory{v1.6.4: Ensure correct \string\catcode for input characters up to 31, when reading .xmpdata file.} +\Advisory{v1.6.4: Disabled patched \string\mathaccentV\ due to incompatibility with wide base expressions.} +\Advisory{v1.6.5: Support for \string\Nickname\ as Metadata command.} +\Advisory{v1.6.5: Ensure par is unexpandable when reading Metadata.} +\Advisory{v1.6.5a: Support for Memoir class's \string\stockwidth\ and \string\stockheight.} +\Advisory{v1.6.5a: Added pdf20 option for PDF 2.0, with support for \string\pdfmajorversion.} +\Advisory{v1.6.5b: Avoid loading xmpincl package from within a TeX grouping.} +\Advisory{v1.6.5c: Avoid loading stringenc package from within a TeX grouping.} +\Advisory{v1.6.5d: Disable some options for xcolor after use.} +\Advisory{v1.6.5e: Ensure \string\pdfmajorversion\ and \string\pdfminorversion\ are both defined and set correctly.} +\Advisory{v1.6.5e: Updated documentation; added new Bibliography entries and revised URL links.} +\Advisory{v1.6.5f: Reset ifpdf properly; support \string\creationdate with XeTeX. Revised Glossary layout.} \pdfxEnableCommands{% \def\CVR{C.V. Radhakrishnan}\def\Thanh{H\`an Th\eee Thanh}% \def\eee{^^c3^^aa^^cc^^81 }} -\end{filecontents*} +\end{filecontents} \PassOptionsToPackage{dvipsnames,svgnames}{xcolor} \documentclass[a4paper]{ltxdoc} \usepackage[\pdfxopt]{pdfx} @@ -104,12 +117,12 @@ % \GetFileInfo{pdfx.dtx} % % \DoNotIndex{\newcommand,\newenvironment} -% +% % \DoNotIndex{\def,\edef,\gdef,\xdef,\global,\long,\let} % \DoNotIndex{\expandafter,\string,\the,\ifx,\else,\fi} % \DoNotIndex{\csname,\endcsname,\relax,\begingroup,\endgroup} % \DoNotIndex{\DeclareTextCommand,\DeclareTextCompositeCommand} -% \DoNotIndex{\space,\@empty,\special,\@nil,\advance\@nnil,\z@,\@@mod} +% \DoNotIndex{\space,\@empty,\special,\@nil,\z@,\@@mod} % \DoNotIndex{\\,\@gobble,\@@,\@fornoop,\@fortmp,\@ifundefined,\@firstoftwo,\@secondoftwo} % \DoNotIndex{\@tempcnta,\@tempcntb,\@tempboxa,\ifnot@empty,\@this,\@firstofone} % \DoNotIndex{\{,\},\alph,\bgroup,\dp,\ht,\kern,\egroup} @@ -134,78 +147,92 @@ % \DoNotIndex{\scantokens,\typeout,\vrule,\wd} % % \changes{v1.00}{2008/12/01}{Initial commit to the CVS.} -% \changes{v1.01}{2008/12/10}{glyphtounicode-cmr.tex included with the package.} -% \changes{v1.3}{2008/12/01}{Fix copyright in xmp files.} +% \changes{v1.01}{2008/12/10}{\texttt{glyphtounicode-cmr.tex} included with the package.} +% \changes{v1.3}{2008/12/01}{Fix copyright in \texttt{.xmp} files.} % \changes{v1.5.4}{2015/02/28}{Fixed timezone bug; Unicode support; more % PDF variants; added color profiles.} -% \changes{v1.5.5}{2015/03/23}{Support for PDF/X-4p and PDF/X-5pg +% \changes{v1.5.5}{2015/03/23}{Support for PDF/X-4p and PDF/X-5pg % with external color profiles.} % \changes{v1.5.6}{2016/02/05}{Suppressed `dummy-space' font warning; -% removed spurious '?' in XMP packets; improved handling of Color Profiles; -% ensure Hy@pdfatrue when building PDF/A, for link flags; -% properly enables xcolor conversion of color models.} -% \changes{v1.5.7}{2016/02/17}{Removed UTF-8 characters that appear in +% removed spurious `?' in XMP packets; improved handling of Color Profiles; +% ensure \texttt{\textbackslash Hy@pdfatrue} when building PDF/A, for link flags; +% properly enables \texttt{xcolor} conversion of color models.} +% \changes{v1.5.7}{2016/02/17}{Removed UTF-8 characters that appear in % the documentation only, within comments in the package source, % but result in a validation failure. Language support in XMP metadata. % Added macros for Windows and Mac system color profile directories.} % \changes{v1.5.8}{2016/05/03}{MediaBox, TrimBox, etc. derived from -% the paperheight, paperwidth. Improved language support, incl. KOI8-R +% the \texttt{\textbackslash paperheight}, \texttt{\textbackslash paperwidth}. +% Improved language support, incl. KOI8-R % encoded cyrillics, Armenian OT6, and LGR Greek encoding, incl. polytonic Greek. % All the encodings Latin-1--9 are supported for upper 8-bit characters. -% Fixed the quoted file-name problem, evident with LuaTeX. +% Fixed the quoted file-name problem, evident with Lua\TeX. % Method to generate correct bookmarks with non-active (transliterated) input. -% Added support for XeLaTeX, improvements with LuaTeX. Updated documentation.} +% Added support for Xe\LaTeX, improvements with Lua\TeX. Updated documentation.} % \changes{v1.5.82}{2017/05/12}{% -% Adjusted to changes in the LaTeX core, affecting macros for composite +% Adjusted to changes in the \LaTeX\ core, affecting macros for composite % commands; incl. \texttt{\textbackslash textsuperscript} and others.}% -% \changes{v1.5.83}{2017/05/16}{Improved support for XeLaTeX and LuaLaTeX.}% -% \changes{v1.5.84}{2017/05/18}{Fully expand options for hyperref. Better support +% \changes{v1.5.83}{2017/05/16}{Improved support for Xe\LaTeX\ and Lua\LaTeX.}% +% \changes{v1.5.84}{2017/05/18}{Fully expand options for \texttt{hyperref}. Better support % for extended IPA letters and modifiers. Adjusted release versions and dates.}% -% \changes{v1.5.85}{2017/06/23}{Fixed bugs, and fully implemented L8U as -% a pseudo-encoding; renamed L8U files into the form *-penc.def }% -% \changes{v1.6}{2018/11/18}{Added XMP support for PDF/UA-1. -% Added more Metadata fields and Language support. -% Default RGB and CMYK profiles now require the colorprofiles.sty package. -% Added file CallasColorProfiles.tex . -% Revised glyphtounicode.sty to use variation selectors, altered maps to PUA -% codepoints; added more glyphs via glyphtounicode-ntx.tex . +% \changes{v1.5.85}{2017/06/23}{Fixed bugs, and fully implemented L8U as +% a pseudo-encoding; renamed L8U files into the form \texttt{*-penc.def}.}% +% \changes{v1.6}{2018/11/18}{Added XMP support for PDF/UA-1. +% Added more Metadata fields and Language support. +% Default RGB and CMYK profiles now require the \texttt{colorprofiles.sty} package. +% Added file \texttt{CallasColorProfiles.tex}. +% Revised \texttt{glyphtounicode.sty} to use variation selectors, altered maps to PUA +% codepoints; added more glyphs via \texttt{glyphtounicode-ntx.tex}. % Support for 8-bit Hebrew encodings, some Arabic and Devanagari. -% Updated documentation, incl. for LaTeX changes. +% Updated documentation, incl. for \LaTeX\ changes. % }% -% \changes{v1.6.1}{2018/12/22}{Fixed issue with ifthen package; -% improved Metadata with LuaTeX and XeTeX. Flexibility with page boxes for PDF/X.}% -% \changes{v1.6.2}{2019/01/04}{Fixed passing of options to xcolor, and some glyphtounicode values.}% -% \changes{v1.6.3}{2019/02/27}{Fixed encoding issues; support for new pdfomitcharset primitive; -% reference to veraPDF validation software; additions to glyphtounicode-ntx.tex.}% +% \changes{v1.6.1}{2018/12/22}{Fixed issue with \texttt{ifthen} package; +% improved Metadata with Lua\TeX\ and Xe\TeX. Flexibility with page boxes for PDF/X.}% +% \changes{v1.6.2}{2019/01/04}{Fixed passing of options to \texttt{xcolor}, and some \texttt{glyphtounicode} values.}% +% \changes{v1.6.3}{2019/02/27}{Fixed encoding issues; support for new \texttt{\textbackslash pdfomitcharset} primitive; +% reference to \textsf{veraPDF} validation software; additions to \texttt{glyphtounicode-ntx.tex}.}% +% \changes{v1.6.4}{2019/09/26}{Added check and warning with \texttt{luatex} for whether \texttt{\textbackslash pdfminorversion} can be changed; +% ensure correct \texttt{\textbackslash catcode} for input characters up to 31, when reading \texttt{.xmpdata} file; +% disabled patched \texttt{\textbackslash mathaccentV} due to incompatibility with wide base expressions.} +% \changes{v1.6.5}{2021/07/06}{Support for \texttt{\textbackslash Nickname} as Metadata command; +% ensure \texttt{\textbackslash par} is unexpandable when processing XMP metadata.} +% \changes{v1.6.5a}{2023/10/17}{Added option \texttt{pdf20} for future need with PDF 2.0; support for \texttt{\textbackslash pdfmajorversion}; +% support for Memoir's \texttt{\textbackslash stockwidth} and \texttt{\textbackslash stockheight} dimen registers.} +% \changes{v1.6.5b}{2024/04/05}{Avoid loading \texttt{xmpincl} package from within a \TeX\ grouping.} +% \changes{v1.6.5c}{2024/05/23}{Avoid loading \texttt{stringenc} package from within a \TeX\ grouping.} +% \changes{v1.6.5d}{2024/05/29}{Adjust for non-zero \texttt{\textbackslash stockwidth} only; prevent changes to \texttt{xcolor} options after use.} +% \changes{v1.6.5e}{2024/06/22}{Ensure \texttt{\textbackslash pdfmajorversion} and \texttt{\textbackslash pdfminorversion} +% are both defined and set correctly. Updated documentation; added new Bibliography entries and revised URL links.} +% \changes{v1.6.5f}{2024/06/24}{Reset \texttt{\textbackslash ifpdf} properly; support \texttt{\textbackslash creationdate} with Xe\TeX. Revised Glossary layout.} % \title{Generation of PDF/X- and PDF/A-\penalty-200 compliant PDFs with \pdftex --- \texttt{pdfx.sty}} -% \date{2019/02/27} -% \version{1.6.3} +% \date{2024/07/01} +% \version{1.6.5f} % \keywords{PDF, PDF/A, PDF/X, pdf\TeX, \LaTeX, Multilingual Metadata} % \author{C.\,V.\,Radhakrishnan, \Thanh, Ross Moore {\upshape\small % and} Peter Selinger} % \contact{\texttt{[cvr,thanh]@river-valley.org},\\% -% \texttt{ross.moore@mq.edu.au}, \texttt{selinger@mathstat.dal.ca}\hss} -% +% \texttt{ozross@icloud.com}, \texttt{selinger@mathstat.dal.ca}\hss} +% % \maketitle % % \StopEventually{} % % \section[Introduction]{Introduction} % -% This package\footnote{An earlier version of this documentation +% This package\footnote{An earlier version of this documentation % was published as \cite{pdfx}. All the changes since then have been developed % and coded by the 3rd-listed author.} -% currently supports generation of PDF/X-, PDF/A- and PDF/E-compliant +% currently supports generation of PDF/X-, PDF/A- and PDF/E-compliant % documents, using \pdftex, in most of their variants; % see the complete list in Section~\ref{ssec-options} below. % As of \TeX\,Live 2016 it now also works with Lua\LaTeX\ and Xe\LaTeX, % when using appropriate command-line options\footnote{% -% The required invokation is:\quad +% The required invocation is:\quad % |xelatex --shell-escape -output-driver="xdvipdfmx -z 0" <filename>.tex |}, but % with some limitations --- see Sections~\ref{sssec-xetex} and \ref{sssec-luatex}. -% By `supports', we mean that the package provides correct and sufficient +% By `supports', we mean that the package provides correct and sufficient % means to declare that a document conforms with a stated PDF variant -% (PDF/X, PDF/A, PDF/E, PDF/VT, PDF/UA, etc.) along with the version and/or +% (PDF/X, PDF/A, PDF/E, PDF/VT, PDF/UA, etc.) along with the version and/or % level of conformance. % This package also allows appropriate Metadata and Color Profile % to be specified, according to the requirements of the PDF variant. @@ -216,7 +243,7 @@ % information as well as a large range of optional data, a fully validating % PDF file cannot be achieved. The PDF can be created, having the correct % visual appearance on all pages, but it will not pass validation checks. -% Sections~\ref{ssec-metadata} and \ref{ssec-multi} describe +% Sections~\ref{ssec-metadata} and \ref{ssec-multi} describe % how this file should be constructed. % % \medskip @@ -224,23 +251,24 @@ % of document structure and type of content that may be required % (or restricted) within a PDF variant. For example, PDF/VT \cite{PDFVT} requires % well-structured parts, using Form XObject sections tagged as `/DPart'. -% Similarly PDF/A-1a (and 2a and 3a) \cite{PDFA,PDFA2,PDFA3} require -% a fully `Tagged PDF', including a detailed structure tagging which +% Similarly PDF/A-1a (and 2a and 3a) \cite{PDFA,PDFA2,PDFA3} require +% a fully `Tagged PDF', including a detailed structure tagging which % envelops the complete contents of the document, as does also PDF/UA \cite{PDF-UA}. -% This is beyond the current version of \LaTeX\ engines, as commonly shipped. +% This is beyond the current version of \LaTeX\ engines as commonly shipped; +% though see Section~\ref{sec-pdf20} for recent developments. % So while this package provides enough to meet the declaration, -% metadata and font-handling aspects for these PDF/A variants, -% it is not sufficient to produce fully conforming PDFs. -% However, with extra \pdftex-based software or macro coding that \emph{is} capable -% of producing `Tagged PDF', this package can be used as part of -% the overall workflow to produce fully conforming documents. +% Metadata and font-handling aspects for these PDF/A variants, +% it is not sufficient to produce fully-conforming PDFs. +% However, with extra \pdftex-based software or macro coding that \emph{is} capable +% of producing `Tagged PDF', this package can be used as part of +% the overall workflow to produce fully-conforming documents; see \cite{tpdf}. % % % \subsection{PDF standards}\label{ssec-standards} % % PDF/X and PDF/A are umbrella terms used to denote several ISO -% standards \cite{PDFX,PDFX3,PDFX1a,PDFX4,PDFX5,PDFA,PDFA2,PDFA3} -% that define different subsets of the PDF standard \cite{PDF17,ISO32000}. +% standards \cite{PDFX,PDFX3,PDFX1a,PDFX4,PDFX5,PDFA,PDFA2,PDFA3} +% that define different subsets of the PDF standard \cite{PDF17,ISO32000}. % The objective of PDF/X is to facilitate graphics exchange between % document creator and printer and therefore, has all requirements % related to printing. For instance, in PDF/X, all fonts need to be @@ -249,28 +277,28 @@ % specifications of PDF/X. % Since 2005 other variants of PDF/X have emerged, as extra effects % (such as layering and transparency) have been supported within the PDF -% standard itself. The full range of versions and conformance supported +% standard itself. The full range of versions and conformance supported % in this package is discussed below in Section~\ref{ssec-options}. % % PDF/A defines a profile for archiving PDF documents, which ensures % the documents can be reproduced in the exact same way in years to % come. A key element to achieving this is that PDF/A documents % are 100\% self-contained. All the information needed to display the -% document in the same manner every time is embedded in the file. +% document in the same manner every time is embedded in the file. % A PDF/A document is not permitted to be reliant on information from % external sources. Other restrictions include avoidance of -% audio/video content, JavaScript and encryption. -% Mandatory inclusion of fonts, color profile and standards-based metadata +% audio/video content, JavaScript and encryption. +% Mandatory inclusion of fonts, color profile and standards-based metadata % are absolutely essential for PDF/A. % Later versions allow for use of image compression and file attachments. % -% PDF/E is an ISO standard \cite{PDFE} intended for documents used in engineering workflows. +% PDF/E is an ISO standard \cite{PDFE} intended for documents used in engineering workflows. % PDF/VT \cite{PDFVT} allows for high-volume customised form printing, such as utility bills. % PDF/UA (`Universal Accessibility') has emerged as a standard \cite{PDF-UA,PDFUA1,PDFUABSI} -% supporting Assistive Technologies, incorporating web-accessibility guidelines (WCAG) -% for electronic documents. +% supporting Assistive Technologies, incorporating web-accessibility guidelines (WCAG) +% for electronic documents. % In future, PDF/H may emerge for health records and medical-related -% documents. Other applications can be envisaged. +% documents. Other applications can be envisaged. % Declarations and Metadata are supported for the first three of these. % The others are the subject of further work; revised versions of this % package can be expected in later years. @@ -281,6 +309,30 @@ % and whatever else is relevant to how the standards have been established % and how they can be used. % +% \subsection{Later \LaTeX\ changes, support for newer PDF standards}\label{sec-pdf20} +% +% Although PDF 2.0~\cite{PDF20} was first published in 2017 and revised in 2020, it has taken +% a long time for it to become a target format for documents built using \LaTeX. +% This is because the requirement of using `Tagged PDF' is stringent, requiring +% a reworking of almost every aspect of \LaTeX's document production model \cite{LaTeXPDF}. +% Work to this end is going on, via the PDF Association's `\LaTeX\ Project LWG'\cite{PDF-LaTeX}, +% the experimental |tagpdf| package \cite{tagpdf}, and Ross Moore's |tpdf| package and macro suite \cite{tpdf}. +% Significant internal changes have been made to \LaTeX\ itself, which in turn have +% required the |v1.6.5x| updates in 2024 to this |pdfx| package. We thank the following users for reporting +% issues arising from such changes: Sergio Zenoni, Takehiko Tanabe, Tom\'a\v s Nov\'a\v cek. +% +% In early 2024 the PDF Association published several documents for new and updated standards +% based upon PDF 2.0~\cite{PDF20}. These include PDF/UA-2 \cite{PDFUA2}, PDF `Declarations' \cite{PDFDecl}, +% `Well-Tagged PDF' (WTPDF) \cite{WTPDF} with declarations for `Accessibility' and `Reuse', +% adding to PDF/A-4 \cite{PDFA4}, PDF/X-6 \cite{PDFX6} and PDF/VT-3 \cite{PDFVT3}, each with various flavours. +% To support these, there will be released in late 2024 a variant named |pdfx2| as an extension of |pdfx|, +% with separate documentation detailing how to specify appropriate XMP metadata \cite{XMP-ISO}. +% +% Once |pdfx2| becomes available, this will take on the role of handling new developments for +% \LaTeX\ support of PDF 2.0-based software solutions. The |pdfx| package will remain under +% active development, primarily to ensure compatibility of existing documents with PDF 1.7-based +% requirements (tagged or otherwise), following any further changes in \LaTeX\ or other packages. +% % \section[Usage]{Usage}\label{sec-usage} % % The package can be loaded with the command: @@ -292,7 +344,7 @@ % \subsection{Package options}\label{ssec-options} % % \subsubsection{PDF/A options} -% +% % PDF/A is an ISO standard~\cite{PDFA,PDFA2,PDFA3} intended for long-term archiving of % electronic documents. It therefore emphasizes self-containedness and % reproducibility, as well as machine-readable metadata. The PDF/A @@ -307,7 +359,7 @@ % versions contain a subset of the features of later versions, so for % maximum portability, it is preferable to use a lower-numbered % version, when the extra features allowed in higher versions are not used. -% There is no conformance level `u' in version 1 of the standard. +% There is no conformance level `u' in version 1 of the standard. % Thus for many typical uses of PDF/A, it is sufficient to use PDF/A-1b. % % \begin{itemize} @@ -320,28 +372,28 @@ % \item |a-3b|: generate PDF/A-3b. % \item |a-3u|: generate PDF/A-3u. % \end{itemize} -% By `Experimental, not fully implemented' here we mean primarily that +% By `Experimental, not fully implemented' here we mean primarily that % the document structure, as required for `Tagged PDF', is not handled -% by this package. Using other \pdftex-based software that \emph{is} +% by this package. Using other \pdftex-based software that \emph{is} % capable of producing such complete tagging, conforming documents % can indeed be produced. % % \subsubsection{PDF/E options} -% +% % PDF/E is an ISO standard~\cite{PDFE} intended for documents used in engineering % workflows. There is only one version of the PDF/E standard so far, % and it is called PDF/E-1. -% +% % \begin{itemize} % \item |e-1|: generate PDF/E-1. % \item |e|: same as |e-1|. % \end{itemize} % % \subsubsection{PDF/UA options} -% -% PDF/UA is an ISO and ANSI standard~\cite{PDF-UA,PDFUABSI} intended for making -% structured documents readable and navigable using Assistive Technology; -% e.g., screen-readers, Braille keyboards and such-like. +% +% PDF/UA is an ISO and ANSI standard~\cite{PDF-UA,PDFUABSI} intended for making +% structured documents readable and navigable using Assistive Technology; +% e.g., screen-readers, Braille keyboards and such-like. % Documents prepared this way can be easily saved in other formats which % preserve the structure, such as XML, HTML, and (Microsoft) Word-based formats. % @@ -359,20 +411,20 @@ % multi-file exchange, and level 2s is for streamed delivery. % Currently, none of the PDF/VT conformance levels are fully % implemented by the |pdfx| package. -% +% % \begin{itemize} % \item |vt-1|: generate PDF/VT-1, based on PDF/X-4. Experimental, not fully implemented % \item |vt-2|: generate PDF/VT-2, based on PDF/X-5pg. Experimental, not fully implemented. % \item |vt-2s|: generate PDF/VT-2s. Experimental, not fully implemented. % \end{itemize} -% By `Experimental, not fully implemented' here we mean primarily that +% By `Experimental, not fully implemented' here we mean primarily that % the structuring of a document into `/DPart' sections, as Form XObjects, -% is not handled by this package. -% This \emph{is} possible with current \pdftex\ software, +% is not handled by this package. +% This \emph{is} possible with current \pdftex\ software, % but not yet in a way that lends itself easily to full automation, due to % requirements of knowing the internal object number of certain internal -% PDF constructs. All the other aspects: PDFInfo declaration, Metadata -% and Color Profile, of the PDF/VT variants are correctly handled. +% PDF constructs. All the other aspects: PDFInfo declaration, Metadata +% and Color Profile, of the PDF/VT variants are correctly handled. % % \subsubsection{PDF/X options} % @@ -380,13 +432,13 @@ % emphasizes printing-related requirements, such as embedded fonts and % color profiles. The PDF/X standard has a large number of variants % and conformance levels. The basic variants are X-1, X-1a, -% X-3, X-4, and X-5. (Note that a revised version of the X-2 standard -% was published in 2003 but withdrawn as an ISO standard in 2011, -% basically due to lack of interest in using it). -% The PDF/X-1a standard exists in revisions of 2001 and 2003, -% the PDF/X-3 standard exists in revisions of 2002 and 2003, -% and the PDF/X-4 and PDF/X-5 standards exist in revisions of 2008 and 2010. -% Moreover, some of these standards have a `p' version, which permits the +% X-3, X-4, and X-5. (Note that a revised version of the X-2 standard +% was published in 2003 but withdrawn as an ISO standard in 2011, +% basically due to lack of interest in using it). +% The PDF/X-1a standard exists in revisions of 2001 and 2003, +% the PDF/X-3 standard exists in revisions of 2002 and 2003, +% and the PDF/X-4 and PDF/X-5 standards exist in revisions of 2008 and 2010. +% Moreover, some of these standards have a `p' version, which permits the % use of an externally supplied color profile (instead of an embedded one), % and/or a `g' version, which permits the use of external graphical % content. Moreover, PDF/X-5 has an `n' version, which extends @@ -401,14 +453,14 @@ % \item |x-2|: generate PDF/X-2; unpublished, doesn't validate. % \item |x-3|: generate PDF/X-3. Options |x-302| and |x-303| are % also available to specify PDF/X-3:2002 or PDF/X-3:2003 explicitly. -% \item |x-4|: generate PDF/X-4. Options |x-408| and |x-410| are +% \item |x-4|: generate PDF/X-4. Options |x-408| and |x-410| are % also available to specify PDF/X-4:2008 or PDF/X-4:2010 explicitly. % \item |x-4p|: generate PDF/X-4p. Options |x-4p08| and |x-4p10| are % also available to specify PDF/X-4p:2008 or PDF/X-4p:2010 explicitly. % \item |x-5g|: generate PDF/X-5g. Options |x-5g08| and |x-5g10| are % also available to specify PDF/X-5g:2008 or PDF/X-5g:2010 explicitly. % \item |x-5n|: generate PDF/X-5n. Options |x-5n08| and |x-5n10| are -% also available to specify PDF/X-5n:2008 or PDF/X-5n:2010 explicitly. +% also available to specify PDF/X-5n:2008 or PDF/X-5n:2010 explicitly. % Experimental, not fully implemented. % \item |x-5pg|: generate PDF/X-5pg. Options |x-5pg08| and |x-5pg10| are % also available to specify PDF/X-5pg:2008 or PDF/X-5pg:2010 explicitly. @@ -441,9 +493,11 @@ % applicable standard.\\This may produce a non-standard-conforming PDF file. % \item |pdf17|: use PDF 1.7, overriding the version specified by the % applicable standard.\\This may produce a non-standard-conforming PDF file. +% \item |pdf20|: use PDF 2.0, experimental in preparation for use with future +% software, under development. This may produce a non-standard-conforming PDF file. % \item |nocharset|: do not generate the Charset entry for fonts (\pdftex\ only). % \item |usecharset|: generate the Charset entry for fonts (\pdftex\ only). -% \end{itemize} +% \end{itemize} % The latter two options affect the value of the |\pdfomitcharset| primitive, % added to \pdftex\ in 2019, due to differing requirements for PDF/A-1 % and other PDF/A versions. Indeed use of the |/Charset| entry for a font @@ -451,14 +505,14 @@ % % \subsubsection{XMP language options}\label{ssec-xmplang} % -% These options allow for characters in alphabets other than those -% used for English and Western European languages to be used -% within the |.xmpdata| file (see Section~\ref{ssec-metadata}), +% These options allow for characters in alphabets other than those +% used for English and Western European languages to be used +% within the |.xmpdata| file (see Section~\ref{ssec-metadata}), % supported through \LaTeX\ character representation macros. % \begin{itemize} -% \item |latxmp|: extended Latin blocks, |Ux0180|--|Ux024F| -% and |Ux1E00|--|Ux1EFF| -% \item |armxmp|: armenian letters and ligatures, |Ux0530|--|Ux058F|, +% \item |latxmp|: extended Latin blocks, |Ux0180|--|Ux024F| +% and |Ux1E00|--|Ux1EFF| +% \item |armxmp|: armenian letters and ligatures, |Ux0530|--|Ux058F|, % via macros |\armyba|, |\armfe|, |\armcomma|, etc. % \item |cyrxmp|: cyrillic letters and accents, |Ux0400|--|Ux04FF| % and |Ux0500|--|Ux0527| via macros |\cyra|, |\CYRN|, etc. @@ -472,8 +526,8 @@ % via macros |\abreve|, |\uhorn|, |\ECIRCUMFLEX|, etc. % \item |ipaxmp|: phonetic extensions, |Ux0250|--|Ux02AF| % and |Ux1D00|--|Ux1DFF| -% \item |mathxmp|: mathematical letters, symbols, operators -% arrows, alphanumeric forms. +% \item |mathxmp|: mathematical letters, symbols, operators +% arrows, alphanumeric forms. % \item |allxmp|: all of the above, as well as those listed next; % used primarily for testing compatibility with other packages. % \end{itemize} @@ -486,13 +540,13 @@ % Further options allow direct (enclosed) input of upper 8-bit % characters, from encodings such as Latin-1--Latin-9, KOI8-R, % LGR (Greek), ArmSSCI8, and a few more. -% Use of these requires a carefully controlled parsing regime. +% Use of these requires a carefully controlled parsing regime. % Here we list the package options that declare such content % may be present in the |.xmpdata| file. -% A detailed account of how these are used is given +% A detailed account of how these are used is given % in~Section~\ref{ssec-multi} (``Multilingual Metadata''). % \begin{itemize} -% \item |LATxmp|: support for direct use of the upper-range characters +% \item |LATxmp|: support for direct use of the upper-range characters % (byte codes 160--255) for input encodings Latin1--Latin9, for % Latin-based alphabets as used in European countries and elsewhere. % This defines parser macros |\textLAT|, |\textLII|, \dots, |\textLIX|. @@ -501,7 +555,7 @@ % of upper-range characters (byte codes 148--255) under input % encodings KOI8-R and KOIR8-RU, using |\textKOI| as parser macro. % All support from |cyrxmp| is loaded also. -% \item |LGRxmp|: support for greek letters entered using either +% \item |LGRxmp|: support for greek letters entered using either % the LGR input transliteration of ASCII characters, or the ISO-8859-7 % encoding of upper-range characters (byte codes 160--255), % or a combination of both, using |\textLGR| as parser macro. @@ -509,25 +563,25 @@ % \item |AR8xmp|: support for armenian letters entered using the % Arm\TeX~2.0 input transliteration of ASCII characters, or the % ArmSCII8 encoding of upper-range characters (byte codes 160--255), -% or a combination of both, using |\textARM| as parser macro. +% or a combination of both, using |\textARM| as parser macro. % All support from |armxmp| is loaded also. -% \item |HEBxmp|: support for hebrew letters entered using either -% LHE input transliteration of ASCII characters, or the CP1255, CP862 +% \item |HEBxmp|: support for hebrew letters entered using either +% LHE input transliteration of ASCII characters, or the CP1255, CP862 % or ISO-8859-8 (HE8) encoding of upper-range characters (byte codes 160--255), % or a combination of these using |\textLHE|, |\textHEBO|, |\textHEB| as parser macros. % All support from |hebxmp| is loaded also. % \end{itemize} -% These `parser' options have received limited testing, so please +% These `parser' options have received limited testing, so please % report any mistakes in the UTF-8 output that you may encounter. % % \subsection{Data file for metadata}\label{ssec-metadata} % -% As mentioned above, standards-compliant PDF documents require -% document-level metadata to be included. -% This, known as an `XMP packet'~\cite{XMP-spec,XMP-ISO}, +% As mentioned above, standards-compliant PDF documents require +% document-level metadata to be included. +% This, known as an `XMP packet'~\cite{XMP-spec,XMP-ISO}, % is like having a library catalog card included within the PDF itself. It is an unencrypted % portion of the PDF file, with data expressed in Extensible Markup Language (XML), -% using Resource Description Format (RDF~\cite{RDF}) syntax, encoded as UTF-8 +% using Resource Description Format (RDF~\cite{RDF}) syntax, encoded as UTF-8 % so readable by any text editing software on any modern computing platform. % % Some advantages of doing this are clear. @@ -539,12 +593,12 @@ % \item For the author(s): who can specify the kind of information most appropriate % to help readers understand the nature and purpose of the document. % \end{itemize} -% -% The |pdfx| package builds the XMP metadata from information supplied via a special data file -% called |\jobname.xmpdata|. Here, |\jobname| is usually the basename of the document's main -% |.tex| file. For example, if your document source is in the file |main.tex|, -% then the metadata must be in a file called |main.xmpdata|. -% None of the individual metadata fields are mandatory, but for most documents, it makes sense +% +% The |pdfx| package builds the XMP metadata from information supplied via a special data file +% called |\jobname.xmpdata|. Here, |\jobname| is usually the basename of the document's main +% |.tex| file. For example, if your document source is in the file |main.tex|, +% then the metadata must be in a file called |main.xmpdata|. +% None of the individual metadata fields are mandatory, but for most documents, it makes sense % to specify at least the title and the author. For more technical aspects of metadata % and its uses, consult the work of the Dublin Core Initiative~\cite{DC} and PRISM~\cite{PRISM}. % @@ -557,72 +611,73 @@ % |\Publisher{Baking International}| % \end{decl} % You should note that multiple authors and keywords have been separated -% by |\sep|. This |\sep| macro serves a technical purpose and is +% by |\sep|. This |\sep| macro serves a technical purpose and is % permitted within the |\Author|, |\Keywords|, and |\Publisher| fields, -% as well as some others. See \S\ref{mdfields} below for a complete listing +% as well as some others. See \S\ref{mdfields} below for a complete listing % of the supported author-supplied metadata fields. % % After processing, the local directory contains a file named such as % |pdfa.xmpi| or |pdfe.xmpi| or |pdfx.xmpi| according to the PDF variant desired. -% This file is the complete XMP Metadata packet. -% It can be checked for validity, using an online validator, such as at +% This file is the complete XMP Metadata packet. +% It can be checked for validity, using an online validator, such as at % \href{http://www.pdflib.com/knowledge-base/xmp-metadata/free-xmp-validator/}{www.pdflib.com}. -% \textsf{veraPDF}~\cite{veraPDF} is Open Source software providing validation for PDF/A, +% \textsf{veraPDF}~\cite{veraPDF} is Open Source software providing validation for PDF/A, % and other checkers useful in a PDF/A production setting. -% +% % \textbf{Warning}: The |\jobname.xmpdata| file may be included in the -% main document source, within a |{filecontents*}| environment, +% main document source, within a |{filecontents}| environment, % provided this comes \emph{before} the |\documentclass| command, as follows. +% The |force| option ensures overwriting a previous file to catch recent edits. % \begin{decl}[] -% |\begin{filecontents*}{\jobname.xmpdata}|\\ +% |\begin{filecontents}[force]{\jobname.xmpdata}|\\ % | \Title{Baking through the ages}|\\ % | \Author{A. Baker\sep C. Kneader}|\\ % | \Language{en-GB}|\\ % | \Keywords{cookies\sep muffins\sep cakes}|\\ % | \Publisher{Baking International}|\\ -% |\end{filecontents*}|\\ +% |\end{filecontents}|\\ % |\documentclass[11pt,a4paper]{article}|\\ % |...| % \end{decl} % Including the metadata with the \LaTeX\ source is very convenient. -% Having it at the top of the file also brings attention to it, placing emphasis on -% the desirability of including metadata, and keeping it accurate while the main -% content of the document is subject to changes or revision. -% Macro definitions can also occur prior to the |\documentclass| command, -% including any that may be needed within the metadata. +% Having it at the top of the file also brings attention to it, placing emphasis on +% the desirability of including metadata, and keeping it accurate while the main +% content of the document is subject to changes or revision. +% Macro definitions can also occur prior to the |\documentclass| command, +% including any that may be needed within the metadata. % An example of this is apparent in Figure~\ref{koi8-code} occurring later. % -% However, this ordering is also extremely important, else any non-ascii UTF-8 byte -% sequences can become active characters and expand upon data being written out, +% However, this ordering is also extremely important, else any non-ascii UTF-8 byte +% sequences can become active characters and expand upon data being written out, % rather than remaining as inactive bytes. % If you edit the metadata supplied this way, remember to remove the % existing copy of |\jobname.xmpdata| file before the next processing run, -% as \LaTeX\ does not write a new copy of the file when it exists on disk already, +% as \LaTeX\ does not write a new copy of the file when it exists on disk already, % within the current working directory or elsewhere that \LaTeX\ may find. % In development or testing situations the filename may need to be given as % |./\jobname.xmpdata|, else an older version may be loaded in error. -% +% % Experienced users/programmers can employ the \verb|\write18| mechanism% -% \footnote{If you don't already know what this is, they you probably -% should not try using it |:-)|.}, together with the |--shell-escape| command-line -% option, to automatically execute a shell command that removes |\jobname.xmpdata| -% on every (or on selected) processing runs. +% \footnote{If you don't already know what this is, they you probably +% should not try using it |:-)|.}, together with the |--shell-escape| command-line +% option, to automatically execute a shell command that removes |\jobname.xmpdata| +% on every (or on selected) processing runs. % This is only useful when the metadata changes, for whatever reason. % % \medskip -% Other places for the |{filecontents*}| environment can work, +% Other places for the |{filecontents}| environment can work, % but \emph{only} when it contains \emph{no} non-ascii UTF-8 byte sequences. -% Since 2018, with default +% Since 2018, with default % See Section~\ref{ssec-symbols} below for more information on the macros % that can be safely used within |.xmpdata| metadata files. -% +% % \subsection{List of supported metadata fields}\label{mdfields} -% +% % Following is a complete list of user-definable metadata fields currently supported, % separated into particular groupings. -% Each command is accompanied by the specific XML tagged field name (with namespace) -% that is placed into the document-level Metadata packet, as well as the kind of information -% being conveyed. +% Each command is accompanied by the specific XML tagged field name (with namespace) +% that is placed into the document-level Metadata packet, as well as the kind of information +% being conveyed. % More may be added in the future. % These commands can \emph{only} be used within the |.xmpdata| file. % @@ -630,13 +685,13 @@ % using RFC5646 (BCP 47)~\cite{BCP47} codes, in which the metadata field is given. % Languages for multiple entries can use e.g., |\sep[de] ...|. % Only those fields requiring a specific format (e.g. dates) do \emph{not} -% support language specifiers; these are indicated with \fixmd. +% support language specifiers; these are indicated with \fixmd. % Fields allowing more than one value are indicated with \starmd. % Multiple values may be given as separate instances of the macro, or as a single -% instance with the values delimited by |\sep|, as in the example above. -% +% instance with the values delimited by |\sep|, as in the example above. +% % \subsubsection{General information:} -% +% % \begin{itemize} % \item \starmd|\Author|: \hfill (|dc:creator|)\\ % the document's human author(s). Separate multiple authors with |\sep|. @@ -661,10 +716,10 @@ % location of a web page describing the owner % and/or rights statement for this document. % \item \fixmd|\Copyrighted|: \hfill (|xmpRights:Marked|)\\ -% `True' if the document is copyrighted, and `False' if it isn't. -% This is automatically set to `True' if either |\Copyright| or |\CopyrightURL| is specified, -% but this can be overridden. -% For example, if the copyright statement is `Public Domain', +% `True' if the document is copyrighted, and `False' if it isn't. +% This is automatically set to `True' if either |\Copyright| or |\CopyrightURL| is specified, +% but this can be overridden. +% For example, if the copyright statement is `Public Domain', % then specify also |\Copyrighted{False}|. % \item \starmd|\Owner|: \hfill (|xmpRights:Owner|)\\ % specifies the owner(s) of the document or resource. @@ -673,18 +728,18 @@ % \end{itemize} % % \subsubsection{more Dublin Core metadata:}\label{sssec-dc} -% From version 1.6 of |pdfx.sty|, the following fields can be used to provide a greater -% range of information to be specified as metadata. +% From version 1.6 of |pdfx.sty|, the following fields can be used to provide a greater +% range of information to be specified as metadata. % \begin{itemize} % \item \starmd|\Contributor|: \hfill (|dc:contributor|)\\ % contributor(s) other than author(s) of the PDF document. % \item |\Coverage|: \hfill (|dc:coverage|)\\ % statement about the extent or scope of the document's contents. % \item \starmd\fixmd|\Date|: \hfill (|dc:date|)\\ -% date(s) when something significant occurred relating to the resource (e.g., version changes); +% date(s) when something significant occurred relating to the resource (e.g., version changes); % must be in ISO date format |YYYY-MM-DD| or |YYYY-MM|. % \item \fixmd|\PublicationType|: \hfill (|dc:type|)\\ -% The type of publication. If specified, must be one of `book', `catalog', `feed', `journal', +% The type of publication. If specified, must be one of `book', `catalog', `feed', `journal', % `magazine', `manual', `newsletter', `pamphlet'. This is automatically set to `journal' % if |\Journaltitle| is specified (see below), but can be overridden. % \item \starmd|\Relation|: \hfill (|dc:relation|)\\ @@ -700,10 +755,10 @@ % \end{itemize} % % The remaining Dublin Core field |(dc:format)| is always set to `|application/pdf|'. -% +% % \subsubsection{Publication information:}\label{sssec-publ} -% The following macros allow for inclusion of publication related metadata fields, -% as specified by PRISM~\cite{PRISM} to meet publishing requirements. +% The following macros allow for inclusion of publication related metadata fields, +% as specified by PRISM~\cite{PRISM} to meet publishing requirements. % \begin{itemize} % \item |\Journaltitle|: \hfill (|prism:issueName|)\\ % The title of the journal in which the document was published. @@ -720,7 +775,7 @@ % \item |\CoverDisplayDate|: \hfill (|prism:coverDisplayDate|)\\ % Date on the cover of the journal issue, as a human-readable text string. % \item \fixmd|\CoverDate|: \hfill (|prism:coverDate|)\\ -% Date on the cover of the journal issue, in a format suitable for storing in a database +% Date on the cover of the journal issue, in a format suitable for storing in a database % field with a `date' data type; e.g. |YYYY-MM|, or |YYYY-MM-DD|. % \end{itemize} % This is an area which can be expanded, to deal with more kinds @@ -729,20 +784,20 @@ % Examples of this can be found in the template files |pdfx.xmp|, |pdfa.xmp|, |pdfe.xmp|. % % \subsubsection{Backward Compatibility} -% The following macros are also recognised, for backward compatibility +% The following macros are also recognised, for backward compatibility % with earlier versions of the package. % \begin{itemize} % \item \starmd|\AuthoritativeDomain|: \hfill (|pdfx:AuthoritativeDomain|)\\ % specifies extra names (e.g., of companies) associated to the existence of the PDF or resource. % \item |\Creator|: \hfill (|xmp:CreatorTool|)\\ -% synonymous with |\CreatorTool| which is usually handled automatically anyway, +% synonymous with |\CreatorTool| which is usually handled automatically anyway, % but can be over-ridden. % \item |\Org|: synonymous with |\Publisher|. % \item |\WebStatement|: synonymous with |\CopyrightURL|. % \end{itemize} -% +% % \subsubsection{more XMP metadata:}\label{sssec-xmp} -% +% % \begin{itemize} % \item \starmd|\Advisory|: \hfill (|xmp:Advisory|)\\ % noteworthy information; e.g., revision data or changes. @@ -763,7 +818,7 @@ % with a PDF standard, and level of conformance. % There are no separate user-macros to alter these. % The first three dates are usually set to be identical. -% +% % \begin{itemize} % \item (|xmp:CreateDate|) : creation date\&time of the PDF. % \item (|xmp:MetadataDate|) : creation date\&time of the Metadata for the PDF. @@ -776,7 +831,7 @@ % \item (|pdfaid:conformance|) : |a|, |b| or |u| for PDF/A-?? % \item (|pdfuaid:part|) : currently |1| for PDF/UA-1 % \item (|pdfe:ISO_PDFEVersion|) : currently |1| for PDF/E-1 -% \item (|pdf:Version|) : |PDF/X-1|, |PDF/X-2| or |PDF/X-3| +% \item (|pdf:Version|) : |PDF/X-1|, |PDF/X-2| or |PDF/X-3| % \item (|pdfx:GTS_PDFXVersion|) : e.g., |PDF/X-1a:2003| up to PDF/X-3 ; % but no year for PDF/X-4 and PDF/X-5 variants % \item (|pdfx:GTS_PDFXConformance|) : e.g., |PDF/X-1a:2003| up to PDF/X-2 @@ -788,13 +843,13 @@ % \subsection{Symbols permitted in metadata}\label{ssec-symbols} % % Within the metadata, all printable ASCII characters except -% |\|, |{|, |}| and |%| represent themselves. Also, all printable Unicode characters -% from the basic multilingual plane (i.e., up to code point U+FFFF) +% |\|, |{|, |}| and |%| represent themselves. Also, all printable Unicode characters +% from the basic multilingual plane (i.e., up to code point U+FFFF) % can be used directly with the UTF-8 encoding. -% (Please note: encodings other than UTF-8 are not supported in the metadata, -% except as arguments to `parser-macros'; see Section~\ref{ssec-xmplang}). -% Consecutive whitespace characters are combined into a single space. -% Whitespace after a macro such as |\copyright|, |\backslash|, or |\sep| is ignored. +% (Please note: encodings other than UTF-8 are not supported in the metadata, +% except as arguments to `parser-macros'; see Section~\ref{ssec-xmplang}). +% Consecutive whitespace characters are combined into a single space. +% Whitespace after a macro such as |\copyright|, |\backslash|, or |\sep| is ignored. % Blank lines are not permitted. % Moreover, the following markup can be used: % @@ -807,32 +862,32 @@ % \item |\copyright|: the copyright symbol \textcopyright % \end{itemize} % The macro |\sep| is permitted within |\Author|, |\Keywords|, -% |\Publisher|, and other macros marked with \starmd\ above. -% It's purpose is to separate multiple authors, keywords, etc. -% to appear as separate list items appropriately and consistently -% in the different ways that such information is represented -% within the PDF file. +% |\Publisher|, and other macros marked with \starmd\ above. +% It's purpose is to separate multiple authors, keywords, etc. +% to appear as separate list items appropriately and consistently +% in the different ways that such information is represented +% within the PDF file. % The package takes care of this when |\sep| is used. % For example, in the XMP metadata, it expands as |</rdf:li><rdf:li>| tagging. % % \subsubsection{PDF Info strings}\label{sssec-info} -% When |\sep| is not used within its argument, the metadata from |\Title|, -% |\Author| and |\Keywords| is also included in the PDF |/Info| dictionary. +% When |\sep| is not used within its argument, the metadata from |\Title|, +% |\Author| and |\Keywords| is also included in the PDF |/Info| dictionary. % When this is the case, validation for the declared standard % will occur only if the corresponding |/Info| item and XMP metadata field -% convert to exactly the same Unicode string. +% convert to exactly the same Unicode string. % This cannot happen when |\sep| is used, so the |/Info| items are then not populated. % % Unfortunately not all PDF browsers (in particular, older ones and much Apple software) % give ready access to the XMP metadata packet. Some authors want to see everything -% using e.g., the Unix/Linux command: |pdfinfo -enc UTF-8 |. In fact there is the |-meta| -% option to get the complete metadata packet (in UTF-8 encoding). +% using e.g., the Unix/Linux command: |pdfinfo -enc UTF-8 |. In fact there is the |-meta| +% option to get the complete metadata packet (in UTF-8 encoding). % This can give more than what one wants, so use it as follows: % \begin{decl}[] % pdfinfo -meta <filename>.pdf \textbar\ grep 'dc:' % \end{decl} % to extract just the Dublin Core metadata fields. -% +% % Another possibility is to \emph{not} use |\sep| with multiple authors and/or keywords. % Instead replace it with simply `|, |'. We do not recommend doing this, as more sophisticated % metadata tools will see the result as a single value, rather than multiple authors, say. @@ -842,21 +897,21 @@ % % \subsection{Macros permitted in metadata}\label{ssec-macros} % -% Other \TeX\ macros actually can be used, provided the author is very +% Other \TeX\ macros actually can be used, provided the author is very % careful and not ask for too-complicated \TeX\ or \LaTeX\ expansions % into internal commands or non-character primitives; basically just accents, % macros for Latin-based special characters, and simple textual replacements, -% perhaps with a simple parameter. A special macro |\pdfxEnableCommands{...}| +% perhaps with a simple parameter. A special macro |\pdfxEnableCommands{...}| % is provided to help resolve difficulties that may arise. % % Here is an example\footnote{ Other use cases are discussed with regard to -% Figures~\ref{arm-code} and \ref{math-wflow}.} of the use of |\pdfxEnableCommands|, -% which occurs with the name of one of our authors {(H\`an Th\'{\^e} Thanh)} +% Figures~\ref{arm-code} and \ref{math-wflow}.} of the use of |\pdfxEnableCommands|, +% which occurs with the name of one of our authors {(H\`an Th\'{\^e} Thanh)} % due to the doubly-accented letter \'{\^e}. % It is usual to define a macro such as: |\def\thanh{H\`an Th\'{\^e} Thanh}|. -% In previous versions of the |pdfx| package, use of such a macro +% In previous versions of the |pdfx| package, use of such a macro % within the |.xmpdata| file, in the |Copyright| information say, -% could result in the accent macros expanding into internal primitives, such as +% could result in the accent macros expanding into internal primitives, such as % \begin{decl}[] % | H\unhbox \voidb@x \bgroup \let \unhbox \voidb@x \setbox \@tempboxa ... | % \end{decl} @@ -867,7 +922,7 @@ % | \def\`#1{#1^^cc^80}\def\'#1{#1^^cc^81}\def\^#1{#1^^cc^82}}| % \end{decl} % \removelastskip\noindent -% where the |^^cc^80|, |^^cc^81|, |^^cc^82| cause \TeX\ to generate the correct +% where the |^^cc^80|, |^^cc^81|, |^^cc^82| cause \TeX\ to generate the correct % UTF-8 bytes for `combining accent' characters. % % This works fine for metadata fields that appear just in the XMP packet. @@ -878,22 +933,22 @@ % | \def\thanh{H^^c3^^a0n Th\eee Thanh}\def\eee{^^c3^^aa^^cc^^81 }}| % \end{decl} % \removelastskip\noindent -% or the above with `\`a' typed directly as UTF-8 instead of |^^c3^^a0| +% or the above with `\`a' typed directly as UTF-8 instead of |^^c3^^a0| % and `\^e' in UTF-8 for |^^c3^^aa|. % The reason for this is due to the |\pdfstringdef| command, which constructs -% the accented latin letters as single combined characters \`a and \^e, +% the accented latin letters as single combined characters \`a and \^e, % without resorting to combining accents, wherever possible. -% If the Metadata does not have the same, irrespective of Unicode normalisation, +% If the Metadata does not have the same, irrespective of Unicode normalisation, % then validation fails. % % With version (1.5.6) of the |pdfx| package, such difficulties -% have been overcome, at least for characters used in Western European, -% Latin-based languages. The input encoding used when reading the |.xmpdata| -% file now includes interpretations of \TeX's usual accent commands to +% have been overcome, at least for characters used in Western European, +% Latin-based languages. The input encoding used when reading the |.xmpdata| +% file now includes interpretations of \TeX's usual accent commands to % produce the required UTF-8 byte sequences. % % \medskip -% Since version (1.5.8) this input encoding was extended to include +% Since version (1.5.8) this input encoding was extended to include % macro definitions covering \LaTeX's internal character representation % of other alphabets (e.g., extended Latin, Cyrillic, Greek, etc.). % However this can become memory intensive, requiring a large number of @@ -902,12 +957,12 @@ % be relevant. Currently these are as in Section~\ref{ssec-xmplang}. % % A significant portion of the Unicode Basic Plane characters can be covered -% this way. Modules could even be provided for CJK character sets and +% this way. Modules could even be provided for CJK character sets and % mathematical symbols, etc. However, as this can become memory intensive, % significant testing will be required before these become a standard -% part of the |pdfx| package. +% part of the |pdfx| package. +% % -% % \subsection{Color profiles}\label{sec-profiles} % % Most standards compliant PDF documents require a \emph{color @@ -915,26 +970,26 @@ % determines precisely how the colors used in the document will be % rendered when printed to a physical medium. This can be used to % ensure that the document will look exactly the same, even when it is -% printed on different printers, with different paper types, etc. -% The inclusion of a color profile is necessary to make the document +% printed on different printers, with different paper types, etc. +% The inclusion of a color profile is necessary to make the document % completely self-contained. % % Since most \LaTeX\ users are not graphics professionals and are not % particularly picky about colors, the |pdfx| package includes default -% profiles that will be included when nothing else is specified. +% profiles that will be included when nothing else is specified. % Therefore, the average user doesn't have to do anything % special about color. % % For users who have a specific color profile they wish to use, it is % possible to do so by including a |\setRGBcolorprofile| or % |\setCMYKcolorprofile| command in the |.xmpdata| file. Note that -% PDF/A and PDF/E require a profile of type `|mnrt|' (monitor) which -% is usually an RGB color profile, while PDF/X and PDF/VT require type `|prtr|' +% PDF/A and PDF/E require a profile of type `|mnrt|' (monitor) which +% is usually an RGB color profile, while PDF/X and PDF/VT require type `|prtr|' % (printer) which is usually a CMYK color profile; but valid documents % can be created with the correct type designed for the other color space. -% Use the following commands to specify an RGB or CMYK color profile, +% Use the following commands to specify an RGB or CMYK color profile, % respectively: -% +% % \begin{decl} % \defmacro{setRGBcolorprofile}\marg{filename}\marg{identifier}\marg{info % string}\marg{registry URL} @@ -944,7 +999,7 @@ % \end{decl} % Within the arguments of these macros, the characters |<|, |>|, |&|, % |^|, |_|, |#|, |$|, and |~| can be used as themselves, but -% |%| must be escaped as |\%|. +% |%| must be escaped as |\%|. % % From version (1.6) the default RGB and CMYK color profiles are now supplied % using the |colorprofiles| package by Norbert Preining and Ross Moore~\cite{colorp}. @@ -966,7 +1021,7 @@ % \url{http://www.color.org/iccprofile.xalter}. % % Alternatively, color profiles are shipped with many Adobe software -% applications; these are then available for use also with non-Adobe +% applications; these are then available for use also with non-Adobe % software. Now the |pdfx| package includes coding to streamline % inclusion of these profiles in PDF documents, or to specify % them as `external' profiles, with PDF/X-4p and PDF/X-5pg variants. @@ -977,17 +1032,17 @@ % Both define commands to use Color Profiles as follows. % \begin{decl}[] % \begin{tabular}{ll} -% \texttt{\string\FOGRAXXXIX} & Coated FOGRA39 (ISO 12647-2:2004)\\ +% \texttt{\string\FOGRAXXXIX} & Coated FOGRA39 (ISO 12647-2:2004)\\ % \texttt{\string\SWOPCGATSI} & U.S. Web Coated (SWOP) v2\\ -% \texttt{\string\JapanColorMMICoated} & Japan Color 2001 Coated\\ -% \texttt{\string\JapanColorMMIUncoated} & Japan Color 2001 Uncoated\\ -% \texttt{\string\JapanColorMMIINewspaper} & Japan Color 2002 Newspaper\\ -% \texttt{\string\JapanWebCoatedAd} & Japan Web Coated (Ad)\\ -% \texttt{\string\CoatedGRACoL} & Coated GRACoL 2006 (ISO 12647-2:2004)\\ +% \texttt{\string\JapanColorMMICoated} & Japan Color 2001 Coated\\ +% \texttt{\string\JapanColorMMIUncoated} & Japan Color 2001 Uncoated\\ +% \texttt{\string\JapanColorMMIINewspaper} & Japan Color 2002 Newspaper\\ +% \texttt{\string\JapanWebCoatedAd} & Japan Web Coated (Ad)\\ +% \texttt{\string\CoatedGRACoL} & Coated GRACoL 2006 (ISO 12647-2:2004)\\ % \texttt{\string\SNAPCGATSII} & CGATS TR 002\\ % \texttt{\string\SWOPCGATSIII} & CGATS TR 003\\ % \texttt{\string\SWOPCGATSV} & CGATS TR 005\\ -% \texttt{\string\ISOWebCoated} & Web Coated FOGRA28 (ISO 12647-2:2004)\\ +% \texttt{\string\ISOWebCoated} & Web Coated FOGRA28 (ISO 12647-2:2004)\\ % \texttt{\string\ISOCoatedECI} & ISO Coated v2 (ECI)\\ % \texttt{\string\CoatedFOGRA} & Coated FOGRA27 (ISO 12647-2:2004)\\ % \texttt{\string\WebCoatedFOGRA} & Web Coated FOGRA28 (ISO 12647-2:2004)\\ @@ -999,18 +1054,18 @@ % As of the time of first compiling this list, only the first six of these result in PDFs % which can validate with external profiles (i.e., for PDF/X-4p and PDF/X-5pg) % using the then-current versions of Adobe Acrobat Pro software. It is unclear -% whether the others (incl.\,\verb|\IFRAXXVI| and \verb|\IFRAXXX|) failed due -% to incorrect data or problems in the validation software. +% whether the others (incl.\,\verb|\IFRAXXVI| and \verb|\IFRAXXX|) failed due +% to incorrect data or problems in the validation software. % Since then, with updates to Acrobat Pro, almost all the others have been verified % to work, except \verb|\IFRAXXX| which seems no longer available. -% Thus these commands come with a `use at own risk' clause. +% Thus these commands come with a `use at own risk' clause. % -% For `external' profiles, there is a command |\setEXTERNALprofile|, taking 9 arguments, +% For `external' profiles, there is a command |\setEXTERNALprofile|, taking 9 arguments, % that must be used. Consult |AdobeExternalProfiles.tex| for examples of its use. -% -% All but the last of the macros listed above can also be used for valid embedded profiles, -% providing the corresponding files can be found. -% The following macros are used to set the (absolute or relative) path, +% +% All but the last of the macros listed above can also be used for valid embedded profiles, +% providing the corresponding files can be found. +% The following macros are used to set the (absolute or relative) path, % on the local operating system, to the location of color profile files. % \begin{decl} % \defmacro{pdfxSetRGBcolorProfileDir}\marg{path to RGB color profiles}\\ @@ -1020,7 +1075,7 @@ % One can use either a macro |\MacOSColordir| which expands % into the path for system-provided profiles: % \begin{decl}[] -% |/System/Library/ColorSync/Profiles/| +% |/System/Library/ColorSync/Profiles/| % \end{decl} % or the macro |\MacOSLibraryColordir| expanding to: % \begin{decl}[] @@ -1030,23 +1085,23 @@ % \begin{decl}[] % |/Library/Application Support/Adobe/Color/Profiles/Recommended/| % \end{decl} -% Under Windows an available macro is |\WindowsColordir| which expands to: +% Under Windows an available macro is |\WindowsColordir| which expands to: % \begin{decl}[] % |C:\Windows\System32\Spool\Drivers\Color/| % \end{decl} % being the common location for color profiles. -% Use these within the \verb|.xmpdata| file as, e.g., +% Use these within the \verb|.xmpdata| file as, e.g., % \begin{decl}[] % |\pdfxSetCMYKcolorProfileDir{\AdobeMacOSdir}| % \end{decl} % Authors may change the paths to suit their own circumstances, either -% \emph{before} loading |pdfx.sty| or within the \verb|.xmpdata| file. +% \emph{before} loading |pdfx.sty| or within the \verb|.xmpdata| file. % % PDF/A and PDF/E usually need an RGB profile, while PDF/X and PDF/VT -% require a CMYK profile. It is possible to use a CMYK profile with PDF/A +% require a CMYK profile. It is possible to use a CMYK profile with PDF/A % or PDF/E by specifying |\setRGBcolorprofile{}{}{}{}| in the \verb|.xmpdata| file. % Beware however, that with PDF/A any coloured hyperlink annotations can -% cause a validation problem, as these are interpreted as RGB colours +% cause a validation problem, as these are interpreted as RGB colours % even when 4 components are given. This may be a bug in validators, % as PDF specifies that the number of components should match the color space. % @@ -1070,44 +1125,44 @@ % \end{decl} % which uses a profile that accompanies the \texttt{pdfaPilot} software from % Callas Software Gmbh~\cite{pdfaPilot}. -% The macro |\CallasMacOSpdfaPilotdir|, defined in the file \texttt{CallasColorProfiles.tex}, +% The macro |\CallasMacOSpdfaPilotdir|, defined in the file \texttt{CallasColorProfiles.tex}, % specifies the directory where this Custom profile is located, when installed under MacOS. % One needs to |\input CallasColorProfiles.tex| \emph{before} loading the |pdfx| package. -% Macros for other directories are also defined in this file. +% Macros for other directories are also defined in this file. % % \subsection{Notes on the internal representation of metadata} -% +% % Within the PDF file, metadata is deposited in two places: some data % goes into the native PDF |/Info| dictionary, and some data goes into % an XMP packet stored separately within the file. XMP is Adobe's -% Extensible Metadata Platform~\cite{XMP-spec,XMP-ISO}, and is an XML-based format. +% Extensible Metadata Platform~\cite{XMP-spec,XMP-ISO}, and is an XML-based format. % See \href{http://www.adobe.com/devnet/xmp/}{Adobe XMP Development Center} -% for more exhaustive information about XMP. +% for more exhaustive information about XMP. % An XMP Toolkit SDK which supports the GNU/Linux, Macintosh and Windows operating % systems is also available under modified BSD licence. % % Some of the metadata, such as the author, title, and keywords, can be -% stored \emph{both} in the XMP packet and in the |/Info| dictionary. -% For the resulting file to be standards-compliant, the two copies of the data +% stored \emph{both} in the XMP packet and in the |/Info| dictionary. +% For the resulting file to be standards-compliant, the two copies of the data % must be identical. This is taken care of automatically by the |pdfx| package, % except when |\sep| is used to handle multiple entries, as discussed above -% in \S\ref{sssec-info}. In such cases the string is not included within the |/Info| +% in \S\ref{sssec-info}. In such cases the string is not included within the |/Info| % dictionary. Note that this is in accordance with the PDF 2.0 specification~\cite{PDF20}, % which deprecates use of the |/Info| dictionary for such metadata. -% -% In principle, users can resort to alternate ways to create an XMP file -% for inclusion in PDF. In this case, one should create a customised template +% +% In principle, users can resort to alternate ways to create an XMP file +% for inclusion in PDF. In this case, one should create a customised template % file |pdfa.xmp| or |pdfx.xmp| or |pdfe.xmp| (etc., depending on the PDF flavor) -% containing the pre-defined data. This can be done by modifying the ones supplied -% with the |pdfx| package. However, this is an error-prone process and is -% \emph{not} recommended for most users. +% containing the pre-defined data. This can be done by modifying the ones supplied +% with the |pdfx| package. However, this is an error-prone process and is +% \emph{not} recommended for most users. % If there is a particular field of metadata that you need and that is not currently % supported, please contact the package authors. % % |pdfx| makes use of the |xmpincl| package to include XMP data into % the PDF. The documentation of |xmpincl| package may help interested % users to understand the process of XMP data inclusion. -% +% % \subsection{Tutorials and technical notes} % % A tutorial with step-by-step instructions for generating PDF/A files @@ -1120,7 +1175,7 @@ % \url{http://support.river-valley.com/wiki/index.php?title=Generating_PDF/A_compliant_PDFs_from_pdftex}. % Be aware that this is based on use of an earlier version of the |pdfx| package, % so some of the advice may have been superseded. -% +% % % \section[Installing]{Installing} % The |pdfx.dtx| package is available on CTAN as usual, via @@ -1131,24 +1186,24 @@ % For those wishing to do a manual installation, here are some notes. % The file |pdfx.dtx| is a composite document of program code and % documentation in \LaTeX{} format, in the tradition of \emph{literate -% programming}. After having installed the package, +% programming}. After having installed the package, % to get the documentation that you are reading now, -% run (\textsc{pdf})\LaTeX{} on the file |pdfx.dtx|. +% run (\textsc{pdf})\LaTeX{} on the file |pdfx.dtx|. % The resulting PDF should be valid as PDF/A-2u. % Or better, use the included |Makefile|, which will also regenerate the index. % % To install the package, first extract the program code; i.e., the -% file |pdfx.sty|, by running \LaTeX{} or \TeX{} on the file |pdfx.ins|. +% file |pdfx.sty|, by running \LaTeX{} or \TeX{} on the file |pdfx.ins|. % Create a directory named |pdfx| under |$TEXMF/tex/latex| and copy the files -% |pdfx.sty|, |8bit.def|, |glyphtounicode-cmr.tex|, |glyphtounicode-ntx.tex| as well +% |pdfx.sty|, |8bit.def|, |glyphtounicode-cmr.tex|, |glyphtounicode-ntx.tex| as well % as the other |*.tex|, |l8u*-penc.def| and |*.xmp| files, into it. Then update % \TeX's file database using the appropriate command for your distribution % and operating system (such as |texhash| or |mktexlsr|, or similar). -% +% % \subsection{Limitations and dependencies} -% -% The |pdfx.sty| package works with \pdftex\ and also Lua\TeX\ and Xe\TeX\ -% with some minor limitations. +% +% The |pdfx.sty| package works with \pdftex\ and also Lua\TeX\ and Xe\TeX\ +% with some minor limitations. % It further depends on the following other packages. % \begin{enumerate} % \item |xmpincl| for insertion of metadata into PDF. @@ -1159,28 +1214,28 @@ % hyperlinking, bookmarks, etc. % \item |xcolor| for ensuring consistent use of the color model % appropriate the PDF variant, within text and hyperlinks (when allowed). -% \item |glyphtounicode.tex| (not Xe\LaTeX) maps glyph names +% \item |glyphtounicode.tex| (not Xe\LaTeX) maps glyph names % to corresponding Unicode code-points. % \item |ifluatex| allowing coding specific to Lua\LaTeX. % \item |ifxetex| allowing coding specific to Xe\LaTeX. -% \item |luatex85| or |pdftexcmds| (Lua\TeX\ only) for access +% \item |luatex85| or |pdftexcmds| (Lua\TeX\ only) for access % to primitive commands using \pdftex\ macro names. -% \item |stringenc| used to help generate proper bookmarks with transliterated input; +% \item |stringenc| used to help generate proper bookmarks with transliterated input; % e.g., with |\textLGR| or |\textARM| --- see Section~\ref{sssec-arm}. % \end{enumerate} % Other files and packages are loaded as sub-packages or as -% configuration files for these. Since some of these packages -% may be loaded by existing documents we provide here advice on +% configuration files for these. Since some of these packages +% may be loaded by existing documents we provide here advice on % how to deal with potential loading and option conflicts. % % Firstly, it is best if |pdfx| is the first package loaded; e.g., -% directly after the |\documentclass| line. This is not a strict requirement, +% directly after the |\documentclass| line. This is not a strict requirement, % but it is worthwhile to deal with the metadata at the top of your \LaTeX\ source, % allowing correct options to be loaded to cope with validation aspects. % % Secondly, replace |\usepackage[<options>]{hyperref}| with |\hypersetup{<options>}|. -% This deals with most loading issues with the |hyperref| package. -% Note that PDF/X is a format intended for printing. +% This deals with most loading issues with the |hyperref| package. +% Note that PDF/X is a format intended for printing. % It forbids inclusion of hyperlinks and other actions, including via bookmarks. % To produce a validating PDF/X document, |pdfx| overrides internal macros % while keeping colors associated with link anchors. @@ -1191,53 +1246,53 @@ % Furthermore, options to set metadata components (such as |pdfauthor|, % |pdftitle|, |pdfsubject|, |pdfkeywords|, etc.) are disabled, since % |pdfx| has already taken care of this information. -% +% % Thirdly, conflicts with other packages may be dealt with by simply % changing |\usepackage| to |\RequirePackage| within the document's -% preamble. But this may not be possible when the |\usepackage| +% preamble. But this may not be possible when the |\usepackage| % or |\RequirePackage| command occurs within another package, or with -% a specific set of options, thereby causing processing to stop. -% Few packages have a command analogous to |\hypersetup|. +% a specific set of options, thereby causing processing to stop. +% Few packages have a command analogous to |\hypersetup|. % Instead |\PassOptionsToPackage{<options>}{<package>}| can help. % For |<options>| specify the ones associated with the loading yet to come. % This can give a smooth processing run, but you'll need to check whether % the results from those options have actually taken effect. -% Some examples of this can be seen later, in Figures~\ref{koi8-code} +% Some examples of this can be seen later, in Figures~\ref{koi8-code} % and \ref{tldoc-pol}. % % \subsubsection{Limitations using Xe\LaTeX}\label{sssec-xetex} % -% To process a file using Xe\LaTeX, to produce a document that can +% To process a file using Xe\LaTeX, to produce a document that can % validate to a particular PDF standard, one need to use a command % to run the \TeX\ engine, as follows. % \begin{decl}[] % |xelatex -shell-escape -output-driver="xdvipdfmx -z 0" <filename>.tex | % \end{decl} % The |-shell-escape| option allows a command-line task to be run, -% which writes the creation-date \& time of the running job into -% a small file on disk. This data, written in a specific format, is then +% which writes the creation-date \& time of the running job into +% a small file on disk. This data, written in a specific format, is then % read by the job for inclusion into several metadata fields. % This emulates the result of \pdftex's |\pdfcreationdate| primitive. % As there are security implications in allowing arbitrary commands to be run, -% this need for |-shell-escape| must be viewed as imposing a limitation on the +% this need for |-shell-escape| must be viewed as imposing a limitation on the % work-flows in which this can be safely used. % -% The |-output-driver="xdvipdfmx -z 0"| suppresses compression, which +% The |-output-driver="xdvipdfmx -z 0"| suppresses compression, which % is not allowed for the XMP metadata packet. Without this, the resulting PDF -% may fail to pass validation tests. +% may fail to pass validation tests. % % Xe\TeX\ is designed for processing UTF-8 input only. When presented -% with \LaTeX\ source using a legacy encoding, such as |latin2| or |koi8-r|, -% the input is accepted and a PDF produced. Yet there will be garbage +% with \LaTeX\ source using a legacy encoding, such as |latin2| or |koi8-r|, +% the input is accepted and a PDF produced. Yet there will be garbage % characters corresponding to each character entered from the upper range -% (128--255). This is evident in the PDF content and bookmarks; +% (128--255). This is evident in the PDF content and bookmarks; % yet |pdfx| produces the correct XMP metadata packet. % So while the techniques explained later in Section~\ref{ssec-multi} are % valid, the PDF itself does not contain correct content. % % Not all fonts, in particular Open-Type fonts (OTF), naturally come with % mappings of the glyphs to Unicode code points. This is a requirement -% with PDF/A, PDF/E and PDF/UA standards. +% with PDF/A, PDF/E and PDF/UA standards. % Use of such fonts can result in validation errors, such as: % \begin{itemize} % \item @@ -1245,7 +1300,7 @@ % \item % Type 2 CID font: CIDToGID map is invalid or missing. % \end{itemize} -% +% % If one has access to Adobe's |Acrobat Pro| software, then its |Preflight| % utility can rewrite the uncompressed output from Xe\LaTeX\ into a valid % PDF standard, using compression of the contents but not of the XMP packet. @@ -1256,7 +1311,7 @@ % % Lua\LaTeX\ can handle the OTF font issues mentioned for Xe\LaTeX, % so can produce valid PDF/A documents where Xe\LaTeX\ fails. -% However, since Lua\TeX\ expects all input source to be UTF8-encoded, +% However, since Lua\TeX\ expects all input source to be UTF8-encoded, % it cannot work at all with documents using older legacy encodings. % Instead one gets error messages such as: %\begin{decl} @@ -1299,15 +1354,15 @@ % \item |l8uheb-penc.def| --- input macro declarations for Hebrew alphabet. % \item |l8ulat-penc.def| --- input macro declarations for Latin 1--9 encodings. % \item |l8umath-penc.def| --- input macro declarations for mathematical symbols. -% \item |glyphtounicode-cmr.tex|, |glyphtounicode-ntx.tex| --- maps glyph names +% \item |glyphtounicode-cmr.tex|, |glyphtounicode-ntx.tex| --- maps glyph names % to corresponding Unicode for Computer Modern and other \TeX-specific fonts. % \item |AdobeColorProfiles.tex| --- macros for inclusion of Adobe-supplied color profiles. % \item |AdobeExternalProfiles.tex| --- macros for use of external color profiles. % \item |CallasColorProfiles.tex| --- macros for profiles included with Callas pdfaPilot software. % \end{itemize} -% +% % \subsubsection{Documentation \& Examples} -% +% % \begin{itemize} % \item |README| --- usual top-level information. % \item |manifest.txt| --- file list. @@ -1315,9 +1370,9 @@ % \item |sample.tex|, |sample.xmpdata| --- a sample file with sample metadata. % \item |small2e-pdfx.tex| --- sample file with included metadata. % \end{itemize} -% +% % \subsubsection{Sources} -% +% % \begin{itemize} % \item |src/pdfx.dtx| --- composite package and documentation. % \item |src/pdfx.ins| --- installer batch file. @@ -1326,10 +1381,10 @@ % \item |src/Makefile| --- a Makefile for building the documentation. % \item |src/MANIFEST| --- list of files in this directory. % \item |src/text89.def| --- used with Figure\,\ref{ex-arm} in the documentation. -% \item |src/{arm-start,koi8-example,koi8-example2,latin2-example}.tex| +% \item |src/{arm-start,koi8-example,koi8-example2,latin2-example}.tex| % --- used in the documentation with figures showing example coding. % \item |src/{TL-POL-meta,TL-RU-LICRs,TL-RU-metadata,TL-RU-toc,Armenian-example-UTF8,|\\ -% |armtex-meta,usage-meta,math-assign5}.png| --- screenshot images showing multilingual +% |armtex-meta,usage-meta,math-assign5}.png| --- screenshot images showing multilingual % and other metadata. % \end{itemize} % @@ -1337,9 +1392,9 @@ % % The package is released under the \LaTeX{} Project Public % Licence. Bug reports, suggestions, feature requests, etc., may be -% sent to the original authors at +% sent to the original authors at % \href{mailto:cvr@river-valley.org}{\ttfamily cvr@river-valley.org} -% and/or +% and/or % \href{mailto:thanh@river-valley.org}{\ttfamily thanh@river-valley.org}, % or to the more recent contributors at % \href{mailto:ross.moore@mq.edu.au}{\ttfamily ross.moore@mq.edu.au} @@ -1348,9 +1403,9 @@ % % % \section[Multilingual and Technical Considerations]{Multilingual and Technical Considerations}\label{sec-meta} -% -% \TeX\ and \LaTeX\ have an on-going practice of including metadata within -% the source files and package documentation. Usually this is done as comments +% +% \TeX\ and \LaTeX\ have an on-going practice of including metadata within +% the source files and package documentation. Usually this is done as comments % at the beginning of the file; such as the following from the English % language version of the 2015 \TeX\ Live documentation\footnote{% % found at |/usr/local/texlive/2016/texmf-dist/doc/texlive/texlive-en/|.}. @@ -1360,10 +1415,10 @@ % |Michel Goossens, now maintained by Karl Berry and others.|\\ % |Public domain.| % \end{decl} -% This provides information, ideally suited for copyright metadata -% fields, as in Section~\ref{sssec-copy}, as well as for |\Subject| -% and |\CoverDate| from Section~\ref{sssec-publ}. -% +% This provides information, ideally suited for copyright metadata +% fields, as in Section~\ref{sssec-copy}, as well as for |\Subject| +% and |\CoverDate| from Section~\ref{sssec-publ}. +% % Also near the top of the file one finds front-matter content % \begin{decl}[] % |\title{%|\\ @@ -1374,7 +1429,7 @@ % | }|\\ % |\date{May 2015}| % \end{decl} -% which supplies metadata information for the commands |\Title|, |\Author|, +% which supplies metadata information for the commands |\Title|, |\Author|, % |\CoverDisplayDate| also from Section~\ref{sssec-publ}, and |\CopyrightURL|. % % Most of the hundreds of thousands, if not millions of documents prepared @@ -1384,14 +1439,14 @@ % requirement, for PDFs to satisfy a standard that requires inclusion % of metadata. This is especially so for government agencies and institutions % receiving government funding, in several countries around the world. -% +% % It is an aim of the |pdfx| to simplify the process of capturing and -% including metadata within \LaTeX-produced PDFs, from both the author's -% view and that of archivists. The extra features introduced with version -% 1.5.8 take a large step in that direction. +% including metadata within \LaTeX-produced PDFs, from both the author's +% view and that of archivists. The extra features introduced with version +% 1.5.8 take a large step in that direction. % This includes the ability, described in the next subsection, to reliably % include data presented in different text encodings, rather than being -% restricted to UTF-8 only. It is a role of the software to make the +% restricted to UTF-8 only. It is a role of the software to make the % conversion, rather than rely on some 3rd party for a translation. % % @@ -1400,40 +1455,40 @@ % A cursory search of the documentation (|.../texmf-dist/doc|) subtree % of the forthcoming \TeX\,Live 2016 release reveals more than 730 different % |.tex| or |.dtx| document sources which specify an input encoding, -% via the |\usepackage[...]{inputenc}| command. Roughly 380 (a bit more -% than half) declare UTF-8 as the input encoding. -% Of the remainder there are $\approx 20$ other encodings specified, -% covering a range of languages for at least part of their content. +% via the |\usepackage[...]{inputenc}| command. Roughly 380 (a bit more +% than half) declare UTF-8 as the input encoding. +% Of the remainder there are $\approx 20$ other encodings specified, +% covering a range of languages for at least part of their content. % At some point in time, these documents may be required to have accurate -% accompanying metadata, as part of conformance to a designated PDF -% (or other) standard. There are libraries and archives that already must +% accompanying metadata, as part of conformance to a designated PDF +% (or other) standard. There are libraries and archives that already must % meet such standards. % -% We have shown above, in Section~\ref{ssec-metadata}, how the |.xmpdata| -% file can be inserted into the document source, which then ensures that +% We have shown above, in Section~\ref{ssec-metadata}, how the |.xmpdata| +% file can be inserted into the document source, which then ensures that % metadata is reliably transferred along with the source itself. % This seems a good strategy, but are there any problems with it, % especially in a multi-lingual context? -% -% Modern editing software can require an encoding to be associated -% with each file. This is what allows the correct characters to be shown, -% from what is otherwise just a sequence of 8-bit bytes. The flip-side -% is that arbitrary editing is not permitted. Add some UTF-8 data into -% a file that is encoded as Latin-2 then try to save it. You may be asked +% +% Modern editing software can require an encoding to be associated +% with each file. This is what allows the correct characters to be shown, +% from what is otherwise just a sequence of 8-bit bytes. The flip-side +% is that arbitrary editing is not permitted. Add some UTF-8 data into +% a file that is encoded as Latin-2 then try to save it. You may be asked % to specify a new encoding, or the application may even crash out entirely. -% Maybe this happens \emph{accidentally}. It is not hard for a curly quote -% (`) or endash (--) to be included; many editors have settings which can +% Maybe this happens \emph{accidentally}. It is not hard for a curly quote +% (`) or endash (--) to be included; many editors have settings which can % do this with normal ascii input. Turn \emph{off} such settings. % % The approach that we advocate is that when editing to add metadata, -% best is to: +% best is to: % \begin{enumerate} -% \item -% use the \emph{same encoding} as is specified for the file itself, +% \item +% use the \emph{same encoding} as is specified for the file itself, % if known (as is usually the case); -% \item -% even if 1. is not possible, use Copy/Paste \emph{within} the document source -% (e.g., for authors' names, addresses, affiliations, etc.) and from comments, +% \item +% even if 1. is not possible, use Copy/Paste \emph{within} the document source +% (e.g., for authors' names, addresses, affiliations, etc.) and from comments, % as in Section~\ref{sec-meta} above; % \item % avoid typing new characters, especially quotes and dashes, and be extra @@ -1470,7 +1525,7 @@ % as could be produced for the Russian language version of the \TeX\ Live documentation, % from coding as shown in Figure\,\ref{koi8-code}. % The source file itself is actually encoded for KOI8-R, as indicated by the presence -% of the code line |\usepackage[koi8-r]{inputenc}|, +% of the code line |\usepackage[koi8-r]{inputenc}|, % but is deliberately shown here encoded as |T1|~\cite[p.\,449]{LC2}. % This difference is immaterial for checking the validity of the metadata. % For example, the stream of upper (accents, etc.) characters within @@ -1480,17 +1535,17 @@ % in the document, and from early subsection titles. % % It is the `parser' command/macro |\textKOI{ ... }| that indicates that the upper range -% characters (having byte codes 128--255) are to be treated as KOI8-R characters, +% characters (having byte codes 128--255) are to be treated as KOI8-R characters, % rather than as part of UTF-8 byte sequences. It works by examining each byte in sequence, -% and returning the appropriate UTF-8 2-byte sequence for the required cyrillic character. -% This happens during the processing of data from |\jobname.xmpdata| for fleshing-out +% and returning the appropriate UTF-8 2-byte sequence for the required cyrillic character. +% This happens during the processing of data from |\jobname.xmpdata| for fleshing-out % the XMP metadata packet to be included within the final PDF/A document. % % The `parser' macros defined for various encodings, are given in Figure\,\ref{parsers}. -% In Section\,\ref{ssec-xmplang} the package options are given +% In Section\,\ref{ssec-xmplang} the package options are given % for loading the appropriate support for desired languages or alphabets. % Support for other encodings can be added, if there proves to be a need. -% +% %\begin{figure}[ht] % \centering % \begin{tabular}{lll}\hline @@ -1519,13 +1574,13 @@ % \caption{How to see LICRs in the \texttt{.log} window.}\label{koi8-LICR} % \end{figure} % -% With encoded characters marked in this way with a `parser' macro, +% With encoded characters marked in this way with a `parser' macro, % it is actually possible to mix UTF-8 metadata with other bytes; % provided, of course, you have an editor that allows such a file % to be created and saved. On the other hand, if you are unhappy with mixing % content having different encodings, then there is another way, based upon -% \LaTeX's LICR macros~\cite[\S\,7.11]{LC2} for representing accented -% and non-latin characters. +% \LaTeX's LICR macros~\cite[\S\,7.11]{LC2} for representing accented +% and non-latin characters. % These are normally hidden away (`I $=$ Internal') but in fact can be seen % within auxiliary files, such as |.aux| and |.toc|, |.lof| and |.lot|. % This is how \LaTeX\ stores the knowledge of such characters for use in @@ -1548,20 +1603,20 @@ % \caption{How to get desired LICRs into the \texttt{.toc} file.}\label{koi8-toc} % \end{figure} % -% Figure~\ref{koi8-LICR} shows how to see this. +% Figure~\ref{koi8-LICR} shows how to see this. % The document source in the lower portion clearly shows the cyrillic % input, whereas the |.log| messages in a command-line window above % reveal the LICR representation. A command |\showLICRs| is available % with |pdfx.sty| version 1.5.8, specifically to allow this. -% Now the LICR representation can be copied directly from the |.log| file, +% Now the LICR representation can be copied directly from the |.log| file, % modulo slight difficulties due to the way long lines are broken. % As this representation is entirely with ASCII characters, it should not % cause any conflict with any UTF-8 metadata that you want within the same file. % The |.xmpdata| file might now look as in Figure~\ref{koi8-code2}. % Although very verbose, this should be resistant to any corruption due to -% character encodings, and produces the same result within the PDF, +% character encodings, and produces the same result within the PDF, % as in Figure~\ref{koi8-meta}. -% +% % Alternatively one can exploit the |.toc| file, using \LaTeX's command % |\addtocontents|, as shown in Figure~\ref{koi8-toc}. % After processing the file, you can copy the LICR representations out @@ -1570,24 +1625,24 @@ % % Of course once you have harvested the metadata in this format, remove % or comment-out those extra |\showLICRs| to get uninterrupted processing. -% Similarly comment-out the extra |\addtocontents| lines, else the real +% Similarly comment-out the extra |\addtocontents| lines, else the real % Table-of-Contents will become corrupted with unwanted entries. % A couple more \LaTeX\ processing runs should restore the PDF to the % way you want it. % % \subsubsection[Metadata with Polish]{Metadata with Polish}\label{sssec-pol} -% -% The next example has upper-range bytes intended to represent Latin-2 encoded -% characters, as used in Polish. -% With the \LaTeX\ source starting as in Figure~\ref{tldoc-pol}, +% +% The next example has upper-range bytes intended to represent Latin-2 encoded +% characters, as used in Polish. +% With the \LaTeX\ source starting as in Figure~\ref{tldoc-pol}, % the resulting metadata is shown in Figure~\ref{tlmeta-pol}. -% +% %\begin{figure}[htb] % \centering % \includegraphics[scale=.45]{TL-POL-meta} %\caption{Metadata generated from the coding shown in Figure~\ref{tldoc-pol} -% for the Polish version of \TeX\ Live 2015 documentation, showing Latin-2 encoded -% characters. The document is valid for PDF/A-2, after having been processed with +% for the Polish version of \TeX\ Live 2015 documentation, showing Latin-2 encoded +% characters. The document is valid for PDF/A-2, after having been processed with % pdf-\LaTeX.}\label{tlmeta-pol} %\end{figure} % @@ -1597,13 +1652,13 @@ % \input{latin2-example} %\end{decl} % }% -%\caption{Start of the \LaTeX\ source for the Polish version of \TeX\ Live -% documentation. Although Latin-2 encoded, the bytes are shown here using +%\caption{Start of the \LaTeX\ source for the Polish version of \TeX\ Live +% documentation. Although Latin-2 encoded, the bytes are shown here using % \LaTeX's \texttt{T1} encoding \cite[p.\,449]{LC2}.}\label{tldoc-pol} %\end{figure} % % Here the `parser macro' is |\textLII|, which can be seen in Figure~\ref{tldoc-pol} -% to surround either complete metadata entries, or just those parts containing +% to surround either complete metadata entries, or just those parts containing % polish accented (or other) characters in entries that also contain english words. % The macro |\textLF| provides a line-feed character for the UTF-8 output. % @@ -1619,38 +1674,38 @@ % Let's understand better how this example was created. There are three files involved. %\begin{itemize} % \item |pdfx.dtx|, the source for this documentation, open in an editor with -% encoding declared as UTF-8; +% encoding declared as UTF-8; % \item |texlive-pl.tex| the Polish documentation for \TeX\ Live, open in the % same editor with Latin-2 encoding; % \item |latin2-example.tex| which starts life as an empty file on disk. %\end{itemize} % \noindent -% This latter file must be opened in the editor, with encoding declared as +% This latter file must be opened in the editor, with encoding declared as % Latin-2 (ISO-8859-2). % Next the preamble is copied from |texlive-pl.tex| and pasted into |latin2-example.tex| % which is then saved to disk. Further editing is done to |latin2-example.tex| to % add verbatim markers (\texttt{$\vert$...$\vert$}) and adjust line lengths for display -% within Figure~\ref{tldoc-pol}. This file's contents is included as part of the -% documentation via |\input{latin2-example}| within an environment that handles +% within Figure~\ref{tldoc-pol}. This file's contents is included as part of the +% documentation via |\input{latin2-example}| within an environment that handles % presentation aspects, and (since 2018) declares |\UseRawInputEncoding|. % % What \emph{cannot} be done is to paste the preamble content directly into |pdfx.dtx|. -% Consider what would then happen, using `t{\l}umaczy' (`translators', on line 10 -% following `UWAGA'). This word shows correctly in the Latin-2 encoded files. -% It was typeset here using |\l| for the `\l' letter, having Unicode code-point -% |Ux0142| (so UTF-8 byte pair |"C5|\,|"82|). -% However, it occurs at slot |"B3| within Latin-2 encoding. -% In the |T1| font encoding \cite[p.\,449]{LC2} the character glyph name -% for slot |"B3| is |/scedilla|, which is what shows in Figure~\ref{tldoc-pol}. -% When the `\l' is pasted directly into a UTF-8 file and shown verbatim, -% the result is the pair of glyphs |"C5| (|/Aring|) and |"82| (|/Cacute|); +% Consider what would then happen, using `t{\l}umaczy' (`translators', on line 10 +% following `UWAGA'). This word shows correctly in the Latin-2 encoded files. +% It was typeset here using |\l| for the `\l' letter, having Unicode code-point +% |Ux0142| (so UTF-8 byte pair |"C5|\,|"82|). +% However, it occurs at slot |"B3| within Latin-2 encoding. +% In the |T1| font encoding \cite[p.\,449]{LC2} the character glyph name +% for slot |"B3| is |/scedilla|, which is what shows in Figure~\ref{tldoc-pol}. +% When the `\l' is pasted directly into a UTF-8 file and shown verbatim, +% the result is the pair of glyphs |"C5| (|/Aring|) and |"82| (|/Cacute|); % \emph{viz.} {\UseRawInputEncoding |tłumaczy|}. % % As with Figure~\ref{koi8-code} it is not important that the correct characters % are shown here, but that the metadata in |\jobname.xmpdata| corresponds to what % is used on the titlepage of the PDF; e.g., the contents of |\Title| and |\title|, % |\Author| and |\author|, etc. -% +% % % \subsubsection[Metadata with Greek]{Metadata with Greek}\label{sssec-grk} % @@ -1674,7 +1729,7 @@ %|% ... |\\ %| |\\ %|\providecommand{\pdfxopts}{a-2u,LGRxmp,LATxmp}|\\ -%|\begin{filecontents*}{\jobname.xmpdata}|\\ +%|\begin{filecontents}[force]{\jobname.xmpdata}|\\ %|\Title{Writing Greek with the "greek" option of the "babel" package}|\\ %{\color{verbcolor}\texttt{\string\Author\{Apostolos Syropoulos\string\sep\ G\"unter Milde\}}}\\ %|\Subject{This document describes the use of the Latin transliteration for Greek that is |\\ @@ -1690,11 +1745,11 @@ %| \textaristerikeraia\textAlpha\textSampi\textQoppa\textZeta\textdexiakeraia}}|\\ %|\CoverDate{1997-10-15}|\\ %|\CoverDisplayDate{October 15, 1997}|\\ -%|\Copyright{This file is part of the Babel system.\textLF This file may be distributed and/or|\\ +%|\Copyright{This file is part of the Babel system.\textLF This file may be distributed and/or|\\ %| modified under the conditions of the LaTeX Project Public License, either version 1.3 |\\ %| of this license or (at your option) any later version.}|\\ %|\CopyrightURL{http://www.latex-project.org/lppl.txt}|\\ -%|\end{filecontents*}|\\ +%|\end{filecontents}|\\ %|%|\\ %|\documentclass[11pt]{article}|\\ %|\usepackage[\pdfxopts]{pdfx}[2016/04/13]|\\ @@ -1725,70 +1780,70 @@ % % Prior to proper support for UTF-8 input, a method for preparing document source % for the modern Greek language (and also for polytonic Greek), involved the use -% of LGR encoded fonts. Such a font has Greek (instead of Latin) letters in the +% of LGR encoded fonts. Such a font has Greek (instead of Latin) letters in the % slots for |a-zA-Z|, see~\cite[\S9.4.2]{LC2}. Thus ordinary ASCII letters are used % to produce the Greek characters; the mapping of ASCII to Greek is referred to as -% a `transliteration' scheme. It serves as \emph{both} an input encoding, and as -% a font encoding. Accents and diacritic marks are provided through ligatures -% built-in to the fonts. Various documents can be found on the web\footnote{e.g., +% a `transliteration' scheme. It serves as \emph{both} an input encoding, and as +% a font encoding. Accents and diacritic marks are provided through ligatures +% built-in to the fonts. Various documents can be found on the web\footnote{e.g., % \url{http://milde.users.sourceforge.net/LGR/}} and % within \TeX\ Live distributions\footnote{% -% TeXLive: \textcolor{urlcolor}{\texttt{.../2016/texmf-dist/doc/generic/babel-greek/}}}. +% TeXLive: \textcolor{urlcolor}{\texttt{.../2016/texmf-dist/doc/generic/babel-greek/}}}. % % Indeed the current maintainer G\"unther Milde states % ``The LGR transliteration does not work for PDF metadata''. % This is because there is no translation of LGR input into \LaTeX\ LICRs, % as happens with say |\usepackage[utf8]{inputenc}| for UTF-8 input, -% or when upper 8-bit characters are present using |\usepackage[iso-8859-7]{inputenc}|. -% With these, LICRs such as |\textAlpha|, |\textOmicron|, \dots, |\textomega| +% or when upper 8-bit characters are present using |\usepackage[iso-8859-7]{inputenc}|. +% With these, LICRs such as |\textAlpha|, |\textOmicron|, \dots, |\textomega| % are produced, which result in the correct characters for metadata and bookmarks, % perhaps employing Unicode `combining' characters for accented letters. % Using |pdfx| the UTF-8 characters can be put directly into the |.xmpdata| file; % LICRs are interpreted provided the |grkxmp| loading option has been specified. -% -% Using the methods of |pdfx| the metadata difficulty is remedied, as can be seen in -% Figure~\ref{greek-meta} using coding as shown in Figure~\ref{greek-code}. This requires -% the |LGRxmp| option and |\textLGR| `parser' macro. The original document source, +% +% Using the methods of |pdfx| the metadata difficulty is remedied, as can be seen in +% Figure~\ref{greek-meta} using coding as shown in Figure~\ref{greek-code}. This requires +% the |LGRxmp| option and |\textLGR| `parser' macro. The original document source, % called |usage.tex|, can be found in the directory specified in the footnote below. % As this document is essentially an English description of how to use LGR for Greek, -% we have used the `Keywords' field to provide examples of such usage. -% Since a macro |\textgreek| can be used for greek portions within such documents, +% we have used the `Keywords' field to provide examples of such usage. +% Since a macro |\textgreek| can be used for greek portions within such documents, % this macro name is aliased to |\textLGR| within the context where metadata is processed. -% Furthermore, parsing using |\textLGR| generates correct pre-composed characters +% Furthermore, parsing using |\textLGR| generates correct pre-composed characters % for letters with accents or diacritics. Bookmarks can also be generated from % LGR input, using a technique described in Section~\ref{sssec-arm}. % % \bigskip\noindent % The features available with different loading options are summarised here. % \begin{itemize} -% \item +% \item % no option: all metadata in |.xmpdata| file is in UTF-8 (incl. ASCII) % \item -% |grkxmp|: LICRs can be present; e.g. |\textAlpha|, |\textOmega|, etc. +% |grkxmp|: LICRs can be present; e.g. |\textAlpha|, |\textOmega|, etc. % \item % |LGRxmp|: supports LGR-encoded input and |ISO-8859-7| upper range characters, -% using the |\textLGR| `parser' macro. +% using the |\textLGR| `parser' macro. % \end{itemize} -% With |LGRxmp| specified, the features of |grkxmp| are also available; so any +% With |LGRxmp| specified, the features of |grkxmp| are also available; so any % lower-listed option allows data to be mixed with that for higher-listed ones. % % % The final piece to get validation for PDF/A from LGR input, is to specify -% a Unicode point for the `|v|' used only in the strong `|sv|' ligature to obtain -% a non-final `sigma' typeset in isolation. +% a Unicode point for the `|v|' used only in the strong `|sv|' ligature to obtain +% a non-final `sigma' typeset in isolation. %\begin{decl}[] % |\pdfglyphtounicode{internalchar2}{200D}| %\end{decl} % This gives an interpretation as `zero-width joiner'. % There are two instances of this within |usage.tex|. Copy/Paste works as desired. -% Using \pdftex\ the above command is done automatically. -% Drivers, such as Xe\LaTeX\ lacking an implementation of |\pdfglyphtounicode|, +% Using \pdftex\ the above command is done automatically. +% Drivers, such as Xe\LaTeX\ lacking an implementation of |\pdfglyphtounicode|, % can fail to produce a valid PDF due to this rather minor deficiency. -% +% % Greek numerals, using |\greeknumeral| or |\Greeknumeral| cannot work directly within % a |.xmpdata| file. However if such is desired, the following technique allows -% correct LICRs to be found for use in the metadata. -% At any convenient place within the \LaTeX\ source; e.g., near where the required +% correct LICRs to be found for use in the metadata. +% At any convenient place within the \LaTeX\ source; e.g., near where the required % number is used, insert coding such as: % \begin{decl}[] % |{\pdfxGreeknumeralsHack \textgreek{\edef\num{\greeknumeral{1997}}\show\num}}%| @@ -1820,7 +1875,7 @@ % % \def\ArmTeX{Arm\kern -0.15em\TeX}% % \subsubsection[Metadata with Armenian]{Metadata with Armenian}\label{sssec-arm} -% +% % \begin{figure}[!htbp] % \centering % \includegraphics[scale=.42]{armtex-meta} @@ -1840,20 +1895,20 @@ % \caption{Enriched \LaTeX\ source for the Armenian version of the \ArmTeX\ manual, % with added metadata demonstrating the \ArmTeX\ transliteration scheme for \texttt{OT6} encoding. % Also shown is coding used to produce bookmarks from the transliteration.}\label{arm-code} -% \end{figure} -% +% \end{figure} +% % The \ArmTeX\ package\footnote{documentation: % % TeXLive: \textcolor{urlcolor}{\texttt{.../2016/texmf-dist/doc/generic/armenian/}}} -% provides the method to typeset Armenian, with input being specified in various ways -% including a transliteration scheme from ASCII input. This transliteration is directed +% provides the method to typeset Armenian, with input being specified in various ways +% including a transliteration scheme from ASCII input. This transliteration is directed % at the use of the |OT6| encoding, developed for this purpose. % Each way is supported by |pdfx.sty| with appropriate loading options, similar -% to the support for Greek~(see Section~\ref{sssec-grk}). +% to the support for Greek~(see Section~\ref{sssec-grk}). % \begin{itemize} -% \item -% no option: all metadata in |.xmpdata| file is in UTF-8 (incl. ASCII) % \item -% |armxmp|: using LICR-like macro names; e.g. |\armAyb|, |\armsha|, |\armfe| etc. +% no option: all metadata in |.xmpdata| file is in UTF-8 (incl. ASCII) +% \item +% |armxmp|: using LICR-like macro names; e.g. |\armAyb|, |\armsha|, |\armfe| etc. % \item % |AR8xmp|: using the \ArmTeX\ (|OT6|) transliteration scheme or with upper-range % characters in |ArmSCII8| encoding, using the `parser' macro |\textARM|. @@ -1866,9 +1921,9 @@ % implemented in the |OT6|-encoded font, or careful parsing of the input into % LICR-like macros. % \LaTeX\ source\footnote{TeXLive: % -% \textcolor{urlcolor}{\texttt{.../2016/texmf-dist/doc/generic/armenian/examples/latex/}}} -% for the \ArmTeX\ documentation is available in both English and Armenian. -% Figure~\ref{arm-meta} shows the result of enriching the Armenian version with relevant +% \textcolor{urlcolor}{\texttt{.../2016/texmf-dist/doc/generic/armenian/examples/latex/}}} +% for the \ArmTeX\ documentation is available in both English and Armenian. +% Figure~\ref{arm-meta} shows the result of enriching the Armenian version with relevant % metadata, using coding as shown in Figure~\ref{arm-code}. % % As in earlier examples, that metadata has come from the extensive comments at the head @@ -1883,18 +1938,18 @@ % process, as follows. % \begin{enumerate} % \item -% conversion of transliterated source into UTF-8. +% conversion of transliterated source into UTF-8. % This is done as the |.xmpdata| file is processed, using |\pdfxEnableCommands| -% to make global definitions; e.g, +% to make global definitions; e.g, %\begin{decl}[] -% |\xdef\sectAtitle{\textARM{Nerac'uthyun}}| +% |\xdef\sectAtitle{\textARM{Nerac'uthyun}}| %\end{decl} % capturing the section title in the form supplied in the \LaTeX\ source. -% This can be seen in Figure~\ref{arm-code}, near the end of the |{filecontents*}| +% This can be seen in Figure~\ref{arm-code}, near the end of the |{filecontents}| % environment, and at the bottom where the |\section| command would occur. % \item % conversion of the UTF-8 representation into |UTF16-be|, suitable for bookmark -% strings within the PDF file. With \pdftex\ thishis is done using +% strings within the PDF file. With \pdftex\ this is done using % |\StringEncodingConvert| from Heiko Oberdiek's |stringenc.sty| package. % Lua\LaTeX\ and Xe\LaTeX\ can use the UTF-8 representation directly. % \item @@ -1909,8 +1964,8 @@ % \end{decl} % Now |\pdfxBookmark| first checks that the macro passed as the 2nd argument % actually exists. If it does not, an error message is given and upon continuation -% would just do |\section{Nerac'uthyun}| as normal. -% When it does exist, then step 2 is done (by \pdftex) storing the result as |\pdfx@temp|. +% would just do |\section{Nerac'uthyun}| as normal. +% When it does exist, then step 2 is done (by \pdftex) storing the result as |\pdfx@temp|. % With Lua\TeX\ and Xe\TeX, |\pdfx@temp| stores a copy of the UTF-8 data. % Then the commands needing to be executed are essentially %\begin{decl}[] @@ -1921,9 +1976,9 @@ % so that the correct section heading is displayed on the page, % but when |\sectAtitle| is processed to create a bookmark it is replaced % by the pre-prepared contents of |\pdfx@temp|. -% There are some technicalities\footnote{In fact a small change is made -% to how \textcolor{verbcolor}{\texttt{\string\@@writetorep}} is used.} -% to make this work cleanly, +% There are some technicalities\footnote{In fact a small change is made +% to how \textcolor{verbcolor}{\texttt{\string\@@writetorep}} is used.} +% to make this work cleanly, % as just doing these commands would interfere with other uses of |\pdfstringdef|. % In case a long sectioning command has an optional argument, or a $*$-variant % is needed, then include it this way. @@ -1933,32 +1988,32 @@ % % % \subsubsection[Other Languages]{Other Languages}\label{sssec-other} -% +% % There is support for Metadata using characters from other languages, -% with corresponding loading options, as follows. +% with corresponding loading options, as follows. % \begin{itemize} -% \item |arbxmp| : Arabic; +% \item |arbxmp| : Arabic; % via LICRs |\textarabicalef|, |\textarabicqaf|,\\ |\textarabicaleflowerhamza|, etc. -% \item |devxmp| : Devanagari; +% \item |devxmp| : Devanagari; % via LICRs |\textdevanagaria|, |\textdevanagarivocalicr|,\\ |\textdevanagaricandrabindu|, etc. % \item |hebxmp| : Hebrew; % via LICRs |\hebalef|, |\hebsamekh|, |\hebfinalpe| and accent marks |\segol|, |\qubuts|, etc. -% \item |vnmxmp| : Vietnamese; +% \item |vnmxmp| : Vietnamese; % via LICRs |\ABREVE|, |\OCIRCUMFLEX|, |\uhorn| etc. and the combinations of multiple accents % applied as usual via |\'|, |\`|, |\^|, etc. % \end{itemize} % The LICRs include support mapping accented letters to precomposed glyphs, falling back on % `combining characters' only in unusual situations. Special input conventions or methods, -% such as transliteration schemes, are \emph{not yet} supported. -% Indeed, these options are largely untested, so any difficulties encountered should +% such as transliteration schemes, are \emph{not yet} supported. +% Indeed, these options are largely untested, so any difficulties encountered should % be reported to the package authors. Requests to support extra input methods or other % language blocks should also be directed to the authors, along with pointers to where -% the desired input methods are fully described. +% the desired input methods are fully described. % Sample `real-world' documents would be greatly appreciated. % % % \subsection[L8U pseudo-encoding]{L8U pseudo-encoding}\label{ssec-L8U} -% +% % To understand how |pdfx| handles the translation into UTF-8 of input that is not already % in that format, we'll briefly discuss \LaTeX's font-encoding mechanism, which is the % basis for LICR macros~\cite[\S\,7.11]{LC2}. As an example, consider the macro |\textgamma| @@ -1973,32 +2028,32 @@ % |ucs/data/uni-3.def:\uc@dclc{947}{default}{\textgamma}%| % \end{decl} % Here the |\uc@dclc| commands associate UTF-8 input of |Ux0263| (IPA small letter gamma) -% and |Ux03B3| (Greek small letter gamma) internally with |\textgamma|, +% and |Ux03B3| (Greek small letter gamma) internally with |\textgamma|, % whereas the others deal with output formats\footnote{Whereas {\color{verbcolor}\texttt{ucs.sty}} -% handles UTF-8 input, mapping it to LICRs, with {\color{verbcolor}\texttt{pdfx.sty}} +% handles UTF-8 input, mapping it to LICRs, with {\color{verbcolor}\texttt{pdfx.sty}} % we need the reverse mapping into UTF-8, not just from LICRs but also from legacy -% 8-bit encodings and transliteration schemes.}. -% In four of these examples there is a number, which refers to a position in an `encoding vector' +% 8-bit encodings and transliteration schemes.}. +% In four of these examples there is a number, which refers to a position in an `encoding vector' % for the particular font used to place the character onto the printable page. % For example |LGR| refers to greek fonts, encoded as explained in Section~\ref{sssec-grk}. % IPA phonetics use the |T3| encoding, so |\textgamma| refers to a character % from a different Unicode block. % % With two of these cases there is no specific font. -% For example, |PU| is used to create bookmark strings, -% and other PDF string inclusions, using |\pdfstringdef| from the |hyperref| package. -% With |greek-euenc.def| designed for Xe\TeX\ and Lua\TeX, the encoding can be variable, -% with the output bytes being those for the UTF-8 encoding of $\gamma$, namely |^^ce^^b3|, -% shown here as the |T1|-encoded pair |γ|. -% The term `pseudo-encoding' has been coined by the \LaTeX\ team. -% Although there is no actual font to determine the encoding, to an author there is essentially -% no difference in how corresponding macros can be used to get a character placed into -% an appropriate structure within the PDF. +% For example, |PU| is used to create bookmark strings, +% and other PDF string inclusions, using |\pdfstringdef| from the |hyperref| package. +% With |greek-euenc.def| designed for Xe\TeX\ and Lua\TeX, the encoding can be variable, +% with the output bytes being those for the UTF-8 encoding of $\gamma$, namely |^^ce^^b3|, +% shown here as the |T1|-encoded pair |γ|. +% The term `pseudo-encoding' has been coined by the \LaTeX\ team. +% Although there is no actual font to determine the encoding, to an author there is essentially +% no difference in how corresponding macros can be used to get a character placed into +% an appropriate structure within the PDF. % % Thus there are 4 output forms for this character, % and we've not even considered how $\gamma$ is used in mathematics! % To handle these concurrently, one has internally-defined control-sequence names -% \begin{decl}[] +% \begin{decl}[] % |\LGR\textgamma=\char"67| \qquad where $6\times 16 + 7 = 103$\\ % |\T3\textgamma=\char"47| \qquad where $4\times 16 + 7 = 71$\\ % |\PU\textgamma=\long macro:->\83\263|\\ @@ -2006,12 +2061,12 @@ % \end{decl} % where the 2nd `\textbackslash' is part of the name\footnote{% % obtained using {\color{verbcolor}% -% \texttt{\string\csname\space LGR\string\string\string\textgamma\string\endcsname}}.}. +% \texttt{\string\csname\space LGR\string\string\string\textgamma\string\endcsname}}.}. % The latter macro is explained below. % To use the specific version of the macro, \LaTeX\ maintains a `font-encoding' % parameter, set using |\fontencoding{...}| local to the surrounding environment grouping. % -% To the above declarations of |\textgamma|, to deal with conversion to UTF-8, +% To the above declarations of |\textgamma|, to deal with conversion to UTF-8, % the |pdfx| package adds the following declarations when the |LGRxmp| option is used. % \begin{decl}[] % |pdfx/l8ugrk.def:\DeclareTextCommand{\textgamma}{L8U}{γ}|\\ @@ -2019,11 +2074,11 @@ % |pdfx/l8ugrk.def:\DeclareTextCompositeCommand{\textLGRenc}{L8U}{g}{γ} |\\ % |pdfx/l8ugrk.def:\DeclareTextCompositeCommand{\textLGRenc}{L8U}{^^e3}{γ}| % \end{decl} -% The pseudo-encoding name |L8U| indicates \textbf{L}ocal conversion into UTF-\textbf{8} \textbf{U}nicode, -% as required for metadata, using |pdfx.sty|. Currently this pseudo-encoding is used in one place only; +% The pseudo-encoding name |L8U| indicates \textbf{L}ocal conversion into UTF-\textbf{8} \textbf{U}nicode, +% as required for metadata, using |pdfx.sty|. Currently this pseudo-encoding is used in one place only; % during the interpretation of information supplied through the |\jobname.xmpdata| file. % This happens as part of the |pdfx| package, \emph{before} it uses |xmpincl.sty|. -% Such specificity justifies being called a `Local' encoding. +% Such specificity justifies being called a `Local' encoding. % However, other tasks may emerge requiring on-the-fly conversion to UTF-8. % In this case all the functionality of this pseudo-encoding could be shifted into a separate package, % and the name changed to reflect this more general usage. @@ -2031,7 +2086,7 @@ % is possibly a sufficient reason to have a separate package. Another possibility is to % generate on-the-fly creation of UTF-8 strings, to be sent to Xe\TeX\ or Lua\TeX\ running % as a slave process to generate images of string using OTF fonts, which \pdftex\ currently -% cannot handle. The result would then be imported back into the running job as an image. +% cannot handle. The result would then be imported back into the running job as an image. % The authors invite suggestions of how this |L8U| pseudo-encoding functionality can be put to % good use. % @@ -2041,7 +2096,7 @@ % |\DeclareTextComposite{\`}{T1}{A}{192}| %\end{decl} % to get the pre-composed `\`A', rather than a composite built from \`{} and `A'. -% The last parameter is an index into a font; however the |\DeclareTextCompositeCommand| +% The last parameter is an index into a font; however the |\DeclareTextCompositeCommand| % variant allows arbitrary coding as that final parameter, so can be the bytes for the % UTF-8 representation of a character. % In the above code lines, macros are defined as follows @@ -2067,18 +2122,18 @@ % | ... \textLGRenc{#1}\textgreekLGR@i #2\@empty | \quad if |#2| has more tokens\\ % |\textgreekLGR@i #1->\textgreekLGR@ii #1| %\end{decl} -% Thus |\textLGRenc| is called on each token in the argument of |\textLGR|. +% Thus |\textLGRenc| is called on each token in the argument of |\textLGR|. % Now |\textLGRenc|, which is applicable only when |L8U| pseudo-encoding is in effect, % has a default expansion of just passing the character through unchanged; \emph{viz.} %\begin{decl}[] % |\DeclareTextCommand{\textLGRenc}{L8U}[1]{#1}| %\end{decl} % but by using |\DeclareTextCompositeCommand{\textLGRenc}{L8U}{...}{...}|, -% alternate expansions apply with specific arguments, as shown above. +% alternate expansions apply with specific arguments, as shown above. % In particular, that final argument can include coding that `looks ahead' to find the next % character. This is used, for example, with diacritics in Greek, multi-letter sequences % for Armenian letters, and other special cases related to ligatures and punctuation symbols. -% To illustrate this Figure~\ref{ex-arm} (below) follows the conversion of a specific word, +% To illustrate this Figure~\ref{ex-arm} (below) follows the conversion of a specific word, % given in the transliteration for Armenian~(see Section~\ref{sssec-arm}). % This conversion occurs using only \TeX's macro-expansion ability. % Some details relevant to this example are explained there. @@ -2117,26 +2172,26 @@ %\end{decl} % The macro |\armen@en| (named for \textbf{e}mpty or \textbf{n}ext), % looks ahead to see if the 5th-next argument token is |\@empty|, -% signifying that there is nothing left of the original input. -% (A closed bracing |{...}| counts as a single argument.) If |\@empty| the tokens in +% signifying that there is nothing left of the original input. +% (A closed bracing |{...}| counts as a single argument.) If |\@empty| the tokens in % the 2nd bracing are substituted, otherwise those in the 3rd bracing. -% Similarly |\armen@nc| (named for \textbf{n}ext \textbf{c}haracter) +% Similarly |\armen@nc| (named for \textbf{n}ext \textbf{c}haracter) % looks to see whether that 5th argument token matches with the character in the % 1st bracing. If so, the 2nd bracing's tokens are substituted, else those of the 3rd bracing. -% This is how to cope with `Sh' or `SH', implemented as ligatures in an |OT6| encoded font, -% denoting a different letter from a single `S'. The macro |\armuh| is used here +% This is how to cope with `Sh' or `SH', implemented as ligatures in an |OT6| encoded font, +% denoting a different letter from a single `S'. The macro |\armuh| is used here % to \emph{prevent} a ligature from |ev| that would otherwise occur. -% One writes |e\armuh v| to get the separate letters. As the space becomes an active token, -% we need |\textarmgobblespace| to restart parsing appropriately. -% Of course |\textarmenARM@i| behaves like |\textgreekLGR@i| -% as explained earlier, with a test for |\@empty| as the 2nd token. +% One writes |e\armuh v| to get the separate letters. As the space becomes an active token, +% we need |\textarmgobblespace| to restart parsing appropriately. +% Of course |\textarmenARM@i| behaves like |\textgreekLGR@i| +% as explained earlier, with a test for |\@empty| as the 2nd token. % At the end, any remaining |\@empty| expand into nothing. % % \caption{Partial tracing of the conversion of an Armenian word, indicated by the red oval % in Figure~\ref{arm-meta}, from {\color{verbcolor}\texttt{OT6}} transliterated form into UTF-8 bytes. -% In each line, \TeX\ expansion occurs at the position of the left-most `\textbackslash'. -% The resulting bytes are shown here in {\color{verbcolor}\texttt{T1}} encoding, -% as in previous examples, with {\color{verbcolor}\texttt{?}} indicating an invisible character +% In each line, \TeX\ expansion occurs at the position of the left-most `\textbackslash'. +% The resulting bytes are shown here in {\color{verbcolor}\texttt{T1}} encoding, +% as in previous examples, with {\color{verbcolor}\texttt{?}} indicating an invisible character % in the byte range {\color{verbcolor}\texttt{Ox80}--\texttt{Ox9f}}. % See Figure\,\ref{src-arm} for how this source appears with UTF-8 encoding. % }\label{ex-arm} @@ -2147,8 +2202,8 @@ % to an LICR called |\textarmuh|. Since |\armuh| is already defined, not as an LICR, % it cannot be declared to be one without creating problems. % Instead, within the environment grouping where |L8U| pseudo-encoding is specified, -% one uses |\let\armuh\textarmuh| within a `rebinding' macro command -% |\LIIXUmaparmenianletters|\footnote{The start of the macro name is derived from pseudo-Roman +% one uses |\let\armuh\textarmuh| within a `rebinding' macro command +% |\LIIXUmaparmenianletters|\footnote{The start of the macro name is derived from pseudo-Roman % numerals: IX = 9, IIX = 8} % to get LICR functionality from user-commands. %\begin{decl}[] @@ -2161,7 +2216,7 @@ % | \def\armbf{}%|\\ % | ... }| %\end{decl} -% As well as rebinding each command for a letter, the font style-switching commands +% As well as rebinding each command for a letter, the font style-switching commands % are aliased to do nothing, as these are not relevant to creating UTF-8 output. % Being localised by the |L8U| grouping, this causes no problem elsewhere within the document. % These are similar to macros |\psdaliasnames| and |\psdmapshortnames| from |hyperref.sty|, @@ -2169,7 +2224,7 @@ % % \begin{figure}[htb] % \includegraphics[scale=.625]{Armenian-example-UTF8.png} -% \caption{Image of part of the source coding for Figure~\ref{ex-arm}, +% \caption{Image of part of the source coding for Figure~\ref{ex-arm}, % viewed as UTF-8 encoded, within editing software.}\label{src-arm} % \end{figure} % @@ -2186,10 +2241,10 @@ % \item |\LIIXUmaplatinchars| and |\LIIXUcancelfontswitches| with |LATxmp| % \item |\LIIXUmapmathletterlikes| always defined % \item |\LIIXUmapmathspaces| always defined -% \item |\LIIXUmapmath...| with |mathxmp| --- see Section~\ref{ssec-math} below. +% \item |\LIIXUmapmath...| with |mathxmp| --- see Section~\ref{ssec-math} below. %\end{itemize} % It may well be that more macro names can be added to some of these commands, -% to allow macro usage within the metadata. +% to allow macro usage within the metadata. % Suggestions for such additions should be sent to the |pdfx| package authors, along % with example documents. Similarly support for more languages can be requested. % @@ -2199,9 +2254,9 @@ % Macro commands for many mathematical symbols can be used directly in metadata without extra % support; e.g., basic arithmetic operations, letter-like symbols, spacing commands. % Super- and subscripted letters and numerals can use |\textsuperscript| and |\textsubscript| -% when there is an appropriate Unicode character (digits, comma, $+$/$-$/$=$, parentheses, +% when there is an appropriate Unicode character (digits, comma, $+$/$-$/$=$, parentheses, % many letters but not all). -% +% % When the |mathxmp| loading option is specified, many more symbols become available, % using `rebinding' macros. These are necessary, as the macros for mathematical symbols % are generally \emph{not} defined as LICRs, but use |\mathchar|. Thus new LICRs are needed, @@ -2243,8 +2298,8 @@ % where |\liixu@mathreorder| uses some \TeX\ pattern-matching to allow the |\textmathrmstring| % parser macro to work on the argument to |\mathrm| before allowing |\textmathnormal| parsing % to continue afterwards. We refer to this as `nested parsing'. -% -% Similarly `nested parsing' can be used with superscripts and subscripts using |^{...}| and |_{...}| +% +% Similarly `nested parsing' can be used with superscripts and subscripts using |^{...}| and |_{...}| % and to specify linebreaks, and even super-/subscripts within styles; viz. %\begin{decl}[] % |\Declar...CompositeCommand{\textmathnormal}{L8U}{^}{\liixu@mathreorder\textsuperstring}|\\ @@ -2259,7 +2314,7 @@ % is required to uncover cases which may require special handling. % An ultimate aim is to be able to just copy the \LaTeX\ source for the `Abstract' of a technical % paper into the |\Subject{...}| field of the |.xmpdata| file, with a large expectation that -% it will `just work', or need only trivial edits to make it so. +% it will `just work', or need only trivial edits to make it so. % % % \subsection[Metadata in a Production Workflow]{Metadata in a Production Workflow}\label{ssec-wflow} @@ -2273,8 +2328,8 @@ % \noindent % At Macquarie University, the Mathematics Department produces personalised topmatter % or coversheets for student assignments and tutorial papers using \LaTeX, incorporating -% information that has been stored in a database. This is done by writing extra definitions -% at the top of a copy of the \LaTeX\ source as prepared by the lecturers. +% information that has been stored in a database. This is done by writing extra definitions +% at the top of a copy of the \LaTeX\ source as prepared by the lecturers. % For example information analogous to the following %\begin{decl}[] % |\def\thestudentname{\utext{Moore} Ross}|\\ @@ -2286,7 +2341,7 @@ % |\def\theduedate{09/05 2016}|\\ % |...| %\end{decl} -% is prepended to the file shown in Figure~\ref{math-wflow}, +% is prepended to the file shown in Figure~\ref{math-wflow}, % for each student downloading their personalised assignment paper. % The \LaTeX\ source makes use of this information, including recording some of it % within the Metadata. @@ -2301,7 +2356,7 @@ % |\def\assigntopics{orbits, stabilisers, groups of matrices}|\\ % |\providecommand{\pdfxopts}{a-1b}|\\ % |%% XMP metadata for PDF/A conformance|\\ -% |\begin{filecontents*}{\jobname.xmpdata}|\\ +% |\begin{filecontents}[force]{\jobname.xmpdata}|\\ % |\Title{\theunitcode\ \theoffering: Assignment \theassignmentnumber}|\\ % |\Author{\assignLecturer}|\\ % |\Copyright{Macquarie University, Mathematics Department}|\\ @@ -2310,7 +2365,7 @@ % |\Keywords{\assigntopics}|\\ % |\Creator{pdfTeX + pdfx.sty with \pdfxopts\space option}|\\ % |\pdfxEnableCommands{\def\utext#1{#1,}}|\\ -% |\end{filecontents*}|\\ +% |\end{filecontents}|\\ % ||\\ % |\documentclass[a4paper,11pt]{article}|\\ % |\RequirePackage{assignments}|\\ @@ -2332,7 +2387,7 @@ % Another way that jobs can be customised using essentially the same \LaTeX\ source, % is via the command used to initiate the job. For example the file |sample.tex|, % accompanying the |pdfx| distribution, can be used to test the loading options to create -% PDFs conforming to the various flavours of PDF/A, PDF/E and PDF/X. +% PDFs conforming to the various flavours of PDF/A, PDF/E and PDF/X. % Consider a shell script containing the following (Unix/Linux) commands. %\begin{decl}[] % |pdflatex "\def\pdfxopt{a-2b}\input sample.tex"|\\ @@ -2348,11 +2403,11 @@ % from the same \LaTeX\ source, named according to each particular variant. % A default |\providecommand{\pdfxopt}{a-1b}| at the start of |sample.tex| catches the case % of normal typesetting, doing nothing when |\pdfxopt| already has an expansion value. -% +% % \goodbreak % \subsection[Further Developments]{Further Developments}\label{ssec-further} % -% Prospects for further development of the |pdfx| package are as follows, +% Prospects for further development of the |pdfx| package are as follows, % listed not necessarily in order of perceived importance. % \begin{itemize} % \item @@ -2363,7 +2418,7 @@ % Conformance to multiple PDF standards; e.g. both PDF/A and PDF/E, % both PDF/A and PDF/X with RGB or CMYK color profile, other combinations. % \item -% Explore delaying the processing of metadata until |\begin{document}|, +% Explore delaying the processing of metadata until |\begin{document}|, % thereby allowing some fields to be set automatically from other information % supplied within the document preamble. % \item @@ -2384,7 +2439,6 @@ % Support emerging standards based on PDF 2.0~\cite{PDF20}. % \end{itemize} % -% % \section[Bibliography]{Bibliography}% % {\let\newpage\relax % \begin{thebibliography}{999} @@ -2396,28 +2450,35 @@ % % \bibitem{XMP-spec}Adobe Systems Inc.; % XMP Specification, Adding Intelligence to Media. September 2005. -% Also available as ISO 16684-1:2012\,\cite{XMP-ISO}.\\ +% Also available as ISO 16684-1:2012\,\cite{XMP-ISO}. %\\ % \url{http://www.adobe.com/devnet/xmp/}. % % \bibitem{PDFUA1} ANSI\,/\,AIIM\,/\,ISO\,14289-1:2012; % Document management applications --- Electronic document file format enhancement for accessibility % --- Part 1: Use of ISO\,32000-1\,(PDF/UA-1); -% Technical Committee ISO/TC\,171/SC\,2 (July 2012). -% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=54564}.\\ -% Revised as ISO\,14289-1:2014 (December 2014): -% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=64599}.\\ -% Available from ANSI at \url{https://webstore.ansi.org/Standards/ISO/ISO142892014}. +% Technical Committee ISO/TC\,171/SC\,2 (July 2012 -- withdrawn). %\\ +% Revised as ISO\,14289-1:2014 (Dec. 2014): +% \url{https://www.iso.org/standard/64599.html}.\\ +% Available from ANSI at \url{https://webstore.ansi.org/standards/iso/iso142892014}. % -% \bibitem{PDFUABSI} BS,/\,ISO\,14289-1:2014; Document Management Applications. -% Electronic Document File Format Enhancement For Accessibility. Use Of ISO 32000-1 (PDF/UA-1) (British Standard) -% \url{https://webstore.ansi.org/Standards/BSI/BSISO142892014}. +% \bibitem{PDFUA2} ISO\,14289-2:2024; +% Document management applications --- Electronic document file format enhancement for accessibility +% --- Part 2: Use of ISO\,32000-2\,(PDF/UA-2);\\ +% Technical Committee ISO/TC\,171/SC\,2 WG9 (March 2024). +% \href{https://pdfa.org/iso-14289-2-pdfua-2/}% +% {\UrlFont https://pdfa.org/iso-\penalty-20 14289-2-pdfua-2/} +% +% \bibitem{PDFUABSI} BS,/\,ISO\,14289-1:2014; Document Management Applications. +% Electronic Document File Format Enhancement For Accessibility. +% Use Of ISO 32000-1 (PDF/UA-1) (British Standard) +% \url{https://webstore.ansi.org/standards/bsi/bsiso142892014}. % -% \bibitem{pdfaPilot} Callas Software Gmbh.; +% \bibitem{pdfaPilot} Callas Software Gmbh.; % \texttt{pdfaPilot}, plug-in or desktop software for PDF/A versions. % \url{https://www.callassoftware.com/en/products/pdfapilot}. % % \bibitem{DC} -% Dublin Core Metadata Element Set, Version 1.1, October 2010\\ +% Dublin Core Metadata Element Set, Version 1.1, October 2010\\ % \url{http://dublincore.org/documents/dces/}. % % \bibitem{BCP47}IETF; Best Current Practice \#47: Tags for Identifying Languages. @@ -2425,115 +2486,157 @@ % \url{https://tools.ietf.org/pdf/bcp47.pdf}. % % \bibitem{PDFX}ISO\,15930-1:2001; -% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 1: +% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 1: % Complete exchange using CMYK data (PDF/X-1 and PDF/X-1a). % Technical Committee ISO/TC\,130 (December 2001). -% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=29061}. +% \url{https://www.iso.org/standard/29061.html}. % % \bibitem{PDFX3}ISO\,15930-3:2002; -% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 3: +% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 3: % Complete exchange suitable for colour-managed workflows (PDF/X-3). % Technical Committee ISO/TC\,130 (September 2002). -% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=34941}. +% \url{https://www.iso.org/standard/34941.html}. % % \bibitem{PDFX1a}ISO\,15930-4:2003; -% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 4: +% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 4: % Complete exchange of CMYK and spot colour printing data using PDF 1.4 (PDF/X-1a). % Technical Committee ISO/TC\,130 (December 2003). -% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=39938}. +% \url{https://www.iso.org/standard/39938.html}. % % \bibitem{PDFX3a}ISO\,15930-6:2003; -% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 6: +% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 6: % Complete exchange of printing data suitable for colour-managed workflows using PDF 1.4 (PDF/X-3). % Technical Committee ISO/TC\,130 (December 2003). -% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=39940}. +% \url{https://www.iso.org/standard/39940.html}. % % \bibitem{PDFX4}ISO\,15930-7:2010; -% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 7: +% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 7: % Complete exchange of printing data (PDF/X-4) and partial exchange of printing data with external profile reference (PDF/X-4p) using PDF 1.6. % Technical Committee ISO/TC\,130 (July 2010). -% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=55843}. +% \url{https://www.iso.org/standard/55843.html}. % % \bibitem{PDFX5}ISO\,15930-8:2010; -% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 8: -% Partial exchange of printing data using PDF 1.6 (PDF/X-5). \hfil -% Technical Committee ISO/TC\,130 (July 2010). \hfil -% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=55844}. +% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 8: +% Partial exchange of printing data using PDF 1.6 (PDF/X-5). +% Technical Committee ISO/TC\,130 (July 2010). +% \url{https://www.iso.org/standard/55844.html}. % Revision via Corrigendum: ISO\,15930-8:2010/Cor\,1:2011 (August 2011); -% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=60210}. +% \url{https://www.iso.org/standard/60210.html}. +% +% \bibitem{PDFX6}ISO\,15930-9:2020; +% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 9: +% Complete exchange of printing data (PDF/X-6) and partial exchange of printing data +% with external profile reference (PDF/X-6p and PDF/X-6n) using PDF 2.0 +% Technical Committee ISO/TC\,130 (November 2020). +% \url{https://www.iso.org/standard/77103.html}. +% % % \bibitem{PDFVT}ISO\,16612-2:2010; -% Graphic technology\,---\,Variable data exchange\,---\,Part 2:\hfil -% Using PDF/X-4 \penalty-5000 and PDF/X-5 (PDF/VT-1 and PDF/VT-2). -% Technical Committee ISO/TC\,130 (December 2005). \hfil -% \href{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=38013}% -% {{\small\tt http://www.iso.org/iso/home/store/catalogue\_tc/catalogue\_detail.htm?\penalty-200csnumber=38013}}. +% Graphic technology\,---\,Variable data exchange---Part\,2: +% Using PDF/X-4\penalty-5000\ and PDF/X-5 (PDF/VT-1 and PDF/VT-2). +% Technical Committee ISO/TC\,130 (December 2005). +% \url{https://www.iso.org/standard/38013.html}.% +% +% +% \bibitem{PDFVT3}ISO\,16612-3:2020; +% Graphic technology\,---\,Variable data exchange---Part\,3: +% Using PDF/X-6\penalty-5000\ (PDF/VT-3). +% Technical Committee ISO/TC\,130 (Edition1, 2020). +% \url{https://www.iso.org/standard/75218.html}.% % % \bibitem{XMP-ISO}ISO\,16684-1:2012; -% Graphic technology --- Extensible metadata platform (XMP) specification --- Part 1: +% Graphic technology --- Extensible metadata platform (XMP) specification --- Part 1: % Data model, serialization and core properties. -% Technical Committee ISO/TC\,130 (February 2012). -% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=57421}. +% Technical Committee ISO/TC\,130 (February 2012 -- withdrawn). +% Revised as ISO\,16684-1:2019; (Edition 2, 2019). +% \url{https://www.iso.org/standard/75163.html}. % -% \bibitem{PDFA}ISO\,19005-1:2005; +% \bibitem{PDFA}ISO\,19005-1:2005; % Document Management --- Electronic document file format for long term preservation % --- Part 1: Use of PDF\,1.4\,(PDF/A-1); % Technical Committee ISO/TC\,171/SC\,2 (Sept. 2005). -% Revisions via Corrigenda: ISO\,19005-1:2005/Cor\,1:2007 (March 2007); -% ISO\,19005-1:2005/Cor\,2:2011 (Dec. 2011). \\ -% \url{http://www.iso.org/iso/catalogue_detail?csnumber=38920}. +% Revisions via Corrigenda: ISO\,19005-1:2005/Cor\,1:2007 (March 2007); +% ISO\,19005-1:2005/Cor\,2:2011 (Dec. 2011). +% \url{https://www.iso.org/standard/38920.html}. % % \bibitem{PDFA2}ISO\,19005-2:2011; % Document Management --- Electronic document file format for long term preservation % --- Part 2: Use of ISO\,32000-1\,(PDF/A-2); \hfill -% Technical Committee ISO/\penalty-200 TC\,171/SC\,2 (June 2011).\\ -% \url{http://www.iso.org/iso/catalogue_detail?csnumber=50655}. +% Technical Committee ISO/\penalty-200 TC\,171/SC\,2 (June 2011). +% \url{https://www.iso.org/standard/50655.html}. % % \bibitem{PDFA3}ISO\,19005-3:2012; % Document Management --- Electronic document file format for long term preservation % --- Part 3: Use of ISO\,32000-1 with support for embedded files (PDF/A-3); -% Technical Committee ISO/TC\,171/SC\,2 (October 2012).\\ -% \url{http://www.iso.org/iso/catalogue_detail?csnumber=57229}. +% Technical Committee ISO/TC\,171/SC\,2 (October 2012). +% \url{https://www.iso.org/standard/57229.html}. +% +% \bibitem{PDFA4}ISO\,19005-4:2020; +% Document Management --- Electronic document file format for long term preservation +% --- Part 4: Use of ISO\,32000-2 (PDF/A-4); +% Technical Committee ISO/TC\,171/SC\,2 (Edition 1, 2020). +% \url{https://www.iso.org/standard/71832.html}. +% +% \bibitem{PDFDecl} PDF Declarations. A use of ISO\,32000. +% PDF Association, Berlin, Germany (2019). +% \url{https://pdfa.org/resource/pdf-declarations/} % % \bibitem{PDFE}ISO\,24517-1:2008; -% Document Management --- Engineering document format using PDF --- Part 1: +% Document Management --- Engineering document format using PDF --- Part 1: % Use of PDF 1.6 (PDF/E-1); % Technical Committee ISO/TC\,171/SC\,2 (May 2008).\\ -% \url{http://www.iso.org/iso/catalogue_detail?csnumber=42274}. +% \url{https://www.iso.org/standard/42274.html}. % % \bibitem{ISO32000}ISO\,32000-1:2008; % Document management\,---\,Portable document format\,(PDF\,1.7); -% Technical Committee ISO/TC\,171/SC\,2 (July 2008). +% Technical Committee ISO/TC\,171/SC\,2 (July 2008). % Also available as \cite{PDF17}.\\ -% \url{http://www.iso.org/iso/catalogue_detail?csnumber=51502}. +% \url{https://www.iso.org/standard/51502.html}. % % \bibitem{PDF20}ISO\,32000-2:2017; % Document management --- Portable document format --- Part~2: PDF\,2.0; -% Technical Committee ISO/TC\,171/SC\,2 Document file formats, EDMS systems -% and authenticity of information. (July 2017)\\ -% \url{https://www.iso.org/standard/63534.html}. +% Technical Committee ISO/TC\,171/SC\,2 Document file formats, EDMS systems +% and authenticity of information. (July 2017 --- withdrawn) +% Revised as ISO\,32000-2:2020; (Edition 2, 2020) +% \url{https://www.iso.org/standard/75839.html}.\\ +% Sponsored access available since 5 April 2023, from +% \href{https://www.pdfa-inc.org/product/iso-32000-2-pdf-2-0-bundle-sponsored-access/}{PDF Association}. % % \bibitem{LC2} F.\,Mittelbach, M.\,Goossens with J.\,Braams, D.\,Carlisle, C.\,Rowley; % The \LaTeX\ Companion --- 2nd edition. Addison--Wesley (now Pearson Education Inc.), 2004. % ISBN 0-201-36299-6 (paperback). % -% \bibitem{TN0009}PDF/A Competence Centre; -% TechNote 0009: XMP Extension Schemas in PDF/A-1. (March 2008) +% \bibitem{PDF-LaTeX} \LaTeX\ Project Working Group, PDF Association. +% \url{https://pdfa.org/community/latex-project-lwg/} +% +% \bibitem{LaTeXPDF} \LaTeX\ Tagged PDF\,---\,A blueprint for a large project. +% Frank Mittelbach, Chris Rowley; TUGboat, Volume 41 (2020), No 3. +% \url{https://tug.org/TUGboat/tb41-3/tb129mitt-tagpdf.pdf}. +% Project website \url{https://www.latex-project.org/}; +% \href{https://www.latex-project.org/publications/2020-FMi-TUB-tb129mitt-tagpdf.pdf}{Preprint}. +% +% \bibitem{TN0009}PDF/A Competence Centre;\, +% TechNote\,0009: XMP Extension Schemas in PDF/A-1.\penalty-2000\ (March 2008) \ \ % \href{https://www.pdfa.org/publication/technical-note-tn-0009-xmp-extension-schemas-in-pdfa-1/}% -% {\small\tt https://www.pdfa.org/publication/technical-note-tn-0009-xmp-extension\penalty-200 -schemas-in-pdfa-1/}. +% {\UrlFont https://www.pdfa.org/publication/technical-note-tn-0009-xmp-\penalty-20 extension-schemas-in-pdfa-1/}. % % \bibitem{PDF-UA} -% PDF/UA Technical Implementation Guide: Understanding ISO\,14289-1 (PDF/UA-1). \penalty-200 -% AIIM Global Community of Information Professionals. \hfil +% PDF/UA Technical Implementation Guide: Understanding ISO\,14289-1\penalty-2000\ (PDF/UA-1). +% AIIM Global Community of Information Professionals. % \href{http://www.aiim.org/Research-and-Publications/standards/committees/PDFUA/Technical-Implementation-Guide}% -% {\small\tt http://www.aiim.org/Re\penalty-200 search-and-Publications/standards/committees/PDFUA/Technical-Implementation\penalty-200 -Guide}. +% {\UrlFont http://\penalty-20 www.aiim.org/Research-and-Publications/standards/committees/PDFUA/Technical\penalty-200 -Implementation-Guide}. +% +% \bibitem{WTPDF} Well-Tagged PDF (WTPDF); +% Using Tagged PDF for Accessibility and Reuse in PDF 2.0. +% PDF Association; PDF Reuse TWG \& PDF/UA TWG. Version 1.0.0, February 2024. +% \url{https://pdfa.org/wtpdf/} % -% \bibitem{colorp} N.\,Preining; +% \bibitem{colorp} N.\,Preining; % \texttt{colorprofiles} \textemdash\ Collection of free ICC profiles. -% \TeX\ and \LaTeX\ package (by R.\,Moore), distributed with \TeX{}Live. (November 2018)\\ +% \TeX\ and \LaTeX\ package (by R.\,Moore), distributed with \TeX{}Live. (Nov. 2018) % \url{https://ctan.org/pkg/colorprofiles}. % -% \bibitem{PRISM}PRISM; Publishing Requirements for Industry Standard Metadata. +% \bibitem{PRISM}PRISM; Publishing Requirements for Industry Standard Metadata. % PRISM Metadata Initiative; Idealliance Working Group. % \url{http://www.idealliance.org/specifications/prism-metadata-initiative/prism} % @@ -2541,16 +2644,24 @@ % Generation of PDF/X- and PDF/A-compliant PDFs with \pdftex --- \texttt{pdfx.sty}. % TUGboat Vol.\,36, No.\,2; TUG 2015 Conference Proceedings. \TeX\ Users Group, 2015; pp.\,136--142. % -% \bibitem{veraPDF} veraPDF. Industry Supported PDF/A Validation. -% Software, dual-licensed under the GNU General Public License v3 or later (GPLv3+) +% \bibitem{tagpdf} |tagpdf| -- Tools for experimenting with tagging using pdf\LaTeX\ and Lua\LaTeX. +% Ulrike Fischer. Available via CTAN repository. +% \url{https://ctan.org/pkg/tagpdf}. +% +% \bibitem{tpdf} |tpdf|; Ross Moore. Unpublished. +% \LaTeX\ package and macro suite for producing `real-world' standards-conforming PDF documents. +% Examples available at \url{http://maths.mq.edu.au/~ross/TaggedPDF/}. +% +% \bibitem{veraPDF} veraPDF. Industry Supported PDF/A Validation. +% Software, dual-licensed under the GNU General Public License v3 or later (GPLv3+) % and Mozilla Public License v2 or later (MPLv2+). \url{https://verapdf.org}. % Wiki: \url{https://github.com/veraPDF/veraPDF-validation-profiles/wiki} % -% \bibitem{RDF} World Wide Web Consortium (W3C); +% \bibitem{RDF} World Wide Web Consortium (W3C); % Resource Description Format: RDF 1.1 XML Syntax. W3C Recommendation. (February 2014) % \url{https://www.w3.org/TR/rdf-syntax-grammar/}. -% -% \bibitem{wikiPDF}Wikipedia; +% +% \bibitem{wikiPDF}Wikipedia; % PDF/A: \url{https://en.wikipedia.org/wiki/PDF/A}\newline % PDF/E: \url{https://en.wikipedia.org/wiki/PDF/E}\newline % PDF/VT: \url{https://en.wikipedia.org/wiki/PDF/VT}\newline @@ -2560,7 +2671,7 @@ % \end{thebibliography} % }\goodbreak % \section[Implementation]{Implementation} -% +% % \iffalse %<*package> % \fi \hfuzz=2.5pt% @@ -2575,7 +2686,7 @@ }{}% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{pdfx} - [2019/02/27 v1.6.3 PDF/X and PDF/A support (CVR/HTH/RRM/PS)] + [2024/06/24 v1.6.5f PDF/X and PDF/A support (CVR/HTH/RRM/PS)] \newif\ifpdfx@noBOM \pdfx@noBOMfalse % use a BOM in the XMP packet \newif\ifpdfx@x \pdfx@xfalse % PDF/X mode @@ -2594,13 +2705,28 @@ \def\xmp@ReleaseDate{2005} % 2001 for PDF/X-1, 2005 for PDF/A-1, % 2010 for PDF/A-2, 2012 for PDF/A-3. +%% with Beamer pgf will have written Resource objects already +\newif\ifpdfx@luacheck@needed +\@ifpackageloaded{pgfcore}{\pdfx@luacheck@neededtrue}{} +%% thanks to Ryutaroh Matsumoto for reporting this issue + \newcount\pdfx@minorversion +\newcount\pdfx@majorversion +\expandafter\ifx\csname pdfmajorversion\endcsname\relax +%% RRM: 20240614 LuaLaTeX may not have this defined + \newcount\pdfmajorversion + \pdfmajorversion=1\relax +\fi \expandafter\ifx\csname pdfminorversion\endcsname\relax -\else - \global\pdfx@minorversion=\the\pdfminorversion +%% RRM: 20240614 this could be set in luatex85 package + \newcount\pdfminorversion + \pdfminorversion=3\relax \fi +%% options can change these from the defaults +\global\pdfx@majorversion=\the\pdfmajorversion +\global\pdfx@minorversion=\the\pdfminorversion -\def\pdfx@ErrorWarning#1#2#3#4{% +\def\pdfx@ErrorWarning #1#2#3#4{% \ifpdfx@noerr \PackageWarning{pdfx}{#1.^^J #2#3.^^J}% \else \PackageError{pdfx}{#1}{#2#4.^^J Use option 'noerr' to avoid this message.^^J}% @@ -2781,6 +2907,9 @@ \DeclareOption{pdf15}{\global\pdfx@minorversion=5 }% 2005 Acrobat 6 \DeclareOption{pdf16}{\global\pdfx@minorversion=6 }% 2006 Acrobat 7 (ISBN 0-321-30474-8) \DeclareOption{pdf17}{\global\pdfx@minorversion=7 }% 2008 ISO 32000-1:2008 +\DeclareOption{pdf20}{% 2020 ISO 32000-2:2020 + \global\pdfx@majorversion=2 \relax + \global\pdfx@minorversion=0 }% %% inhibits writing the XMP byte-order marker \DeclareOption{noBOM}{\pdfx@noBOMtrue} @@ -2845,6 +2974,13 @@ \ExecuteOptions{noBOM,a-1b} \ProcessOptions +\RequirePackage{ifluatex} +\ifpdfx@luacheck@needed + \ifluatex + \RequirePackage{luatex85} + \fi +\fi + \ifpdfx@ua\ifpdfx@x\else \expandafter\if\xmp@Conformance A\else \pdfx@ErrorWarning{PDF/UA requires 'Tagged PDF' for any structure.^^J @@ -2857,19 +2993,23 @@ \expandafter\ifx\csname pdflastobj\endcsname\relax \else - \ifnum\pdflastobj >\z@ % pdftex has already written objects + \ifnum\pdflastobj >\z@ % pdf/luatex has already written objects + % e.g. by pgfcore , called from Beamer or other class \ifnum\pdfx@minorversion=\pdfminorversion\else \PackageError{pdfx}% {^^J(pdfx) Cannot change the \string\pdfminorversion^^J% - (pdfx) PDF version remains at 1.\the\pdfminorversion.^^J% - (pdfx) Use \string\pdfminorversion=\the\pdfx@minorversion\space + (pdfx) PDF version remains at \the\pdfmajorversion.\the\pdfminorversion.^^J% + (pdfx) Use \string\pdfmajorversion=\the\pdfx@majorversion\space^^J% + and \string\pdfminorversion=\the\pdfx@minorversion\space before \string\documentclass}% {(pdfx) Another package or document-class has written objects into the PDF.^^J% - (pdfx) Hit return to continue with PDF version 1.\the\pdfminorversion.% - }% + (pdfx) Hit return to continue with PDF version % + \the\pdfmajorversion.\the\pdfminorversion.}% + \global\pdfx@majorversion=\the\pdfmajorversion \global\pdfx@minorversion=\the\pdfminorversion \fi \else + \global\pdfmajorversion\pdfx@majorversion \global\pdfminorversion\pdfx@minorversion \fi \fi @@ -2877,6 +3017,7 @@ \expandafter\ifx\csname thepdfminorversion\endcsname\relax \expandafter\ifx\csname pdfminorversion\endcsname\relax \else + \xdef\thepdfmajorversion{\the\pdfmajorversion} \xdef\thepdfminorversion{\the\pdfminorversion} \fi\fi @@ -2885,16 +3026,21 @@ \def\pdf@minorversion@xetex=#1{\gdef\thepdfminorversion{#1}}% \let\pdfminorversion\pdf@minorversion@xetex \else - \ifnum\pdfminorversion < 4\relax - \ifpdfx@x - % more testing needed with PDF/X - \else - \pdfminorversion=4\relax % assumed for PDF/A ; options may change this for PDF/X - \gdef\thepdfminorversion{4}% - \fi + \ifnum\pdfmajorversion > 1\relax + \pdfminorversion=3\relax + %% else some JPG graphics with DCT encoding will fail \else - \ifnum\pdfminorversion<\thepdfminorversion\relax - \global\pdfminorversion=\thepdfminorversion\relax + \ifnum\pdfminorversion < 4\relax + \ifpdfx@x + % more testing needed with PDF/X + \else + \pdfminorversion=4\relax % assumed for PDF/A ; options may change this for PDF/X + \gdef\thepdfminorversion{4}% + \fi + \else + \ifnum\pdfminorversion<\thepdfminorversion\relax + \global\pdfminorversion=\thepdfminorversion\relax + \fi \fi \fi \fi @@ -2902,7 +3048,8 @@ \pdfresetpageorigin=0 \fi -\expandafter\ifx\csname pdfomitcharset\endcsname\relax\else +\expandafter\ifx\csname pdfomitcharset\endcsname\relax +\else \ifpdfx@omitcharset \pdfomitcharset = 1 % %% do not create /Charset listings of font glyphs; @@ -2940,8 +3087,10 @@ \RequirePackage{iftex} \RequirePackage{ifpdf} +%\expandafter\show\csname ifpdf\endcsname %% Support for pdfTeX primitives when using XeTeX: \RequirePackage{ifxetex} +%\expandafter\show\csname ifpdf\endcsname \ifxetex \def\pdfx@pages@xetex#1{\special{pdf:put @pages <<#1>>}} \def\pdfx@pageattr@xetex#1{\special{pdf:put @thispage <<#1>>}} @@ -2971,7 +3120,10 @@ }% \RequirePackage{pdftexcmds}% \let\pdfx@mdfivesum\pdf@mdfivesum - \let\pdfescapestring\pdf@escapestring +% \let\pdfescapestring\pdf@escapestring + \long\def\pdf@escapestring@byte #1{% + \directlua {oberdiek.pdftexcmds.escapestring("\luaescapestring {#1}", "byte")}}% + %\let\pdf@escapestring\pdf@escapestring@byte \else \ifxetex \expandafter\ifx\csname mdfivesum\endcsname\relax @@ -3021,6 +3173,13 @@ \pdfgeninterwordspace=0 \relax \fi \begingroup + \expandafter\ifx\csname stockwidth\endcsname\relax\else + \ifdim\stockwidth=\z@ %% 20240528 + \else + %% 20231023 support for memoir's stockwidth/height + \let\paperwidth\stockwidth + \let\paperheight\stockheight + \fi \fi \dimen0=0.996264009963\paperwidth\relax \edef\pdfx@mwidth{\strip@pt\dimen0}% \advance\dimen0 -25\p@ @@ -3049,7 +3208,7 @@ \expandafter\immediate\pdfx@pageattr@xetex{\pdfx@everypage@xetex}}% \EveryShipout{% \expandafter\immediate\pdfx@pageattr@xetex{\pdfx@everypage@xetex}}% - \else + \else \EveryShipout{% \expandafter\ifx\expandafter\relax\the\pdfpageattr\relax \immediate\pdfpageattr\expandafter{\the\pdfpagesattr}% @@ -3068,7 +3227,8 @@ \else \ifnum\thepdfminorversion >3 \relax \expandafter\ifx\csname pdfsuppresswarningdupmap\endcsname\relax - \expandafter\ifx\csname pdfmapline\endcsname\relax\else + \expandafter\ifx\csname pdfmapline\endcsname\relax + \else \pdfmapline{+dummy-space <dummy-space.pfb} \fi \else @@ -3098,16 +3258,46 @@ \@namedef{M@L8U}{}% %% adjust to LaTeX's 2018 change to the default encoding +\def\pdfx@utfencodingname{utf8}% +\def\pdfx@RawInputEncoding{% +% \begingroup +% \@tempcnta=0 +% % print out the catcodes of chars < 32 +% \loop +% \typeout{\the\@tempcnta: \expandafter\the\catcode\@tempcnta}% +% \advance\@tempcnta\@ne +% \ifnum\@tempcnta<32 +% \repeat +% \endgroup + \UseRawInputEncoding +} \expandafter\ifx\csname inputencodingname\endcsname\relax \else \def\pdfx@restoreencoding#1{% - \@tempcnta=128 + \@tempcnta=1\relax + \loop +% \catcode\@tempcnta=13\relax + \advance\@tempcnta\@ne + \ifnum\@tempcnta<8\relax + \repeat + \catcode11=13 \relax + \@tempcnta=14\relax + \loop +% \catcode\@tempcnta=13\relax + \advance\@tempcnta\@ne + \ifnum\@tempcnta<31 \relax + \repeat + \@tempcnta=128\relax \loop - \catcode\@tempcnta=13 +% \catcode\@tempcnta=13\relax \advance\@tempcnta\@ne \ifnum\@tempcnta<256 \repeat - \inputencoding{#1}% +% {\tracingall +% \ifx\inputencodingname\pdfx@utfencodingname\else + \let\inputencodingname\relax %% kill previous +% \fi + \inputencoding{#1}%}% \let\LastDeclaredEncoding\pdfx@LastDeclaredEncoding \let\DeclareFontEncoding@\pdfx@DeclareFontEncoding@ \let\DeclareUnicodeCharacter\pdfx@DeclareUnicodeCharacter @@ -3116,7 +3306,18 @@ \let\pdfx@inputencodingname\inputencodingname \global\let\pdfx@DeclareUnicodeCharacter\DeclareUnicodeCharacter \global\let\pdfx@DeclareFontEncoding@\DeclareFontEncoding@ - \UseRawInputEncoding +% \@tempcnta=0 +% \loop +% \typeout{\the\@tempcnta: \expandafter\the\catcode\@tempcnta}% +%% \expandafter\showthe\catcode\@tempcnta +% \advance\@tempcnta\@ne +% \ifnum\@tempcnta<32 +% \repeat +%\show\UseRawInputEncoding +%% if the encoding is utf8 then don't change it here – wrong! +% \ifx\inputencodingname\pdfx@utfencodingname\else +% \expandafter\expandafter + \expandafter\pdfx@RawInputEncoding %\fi \fi \InputIfFileExists{\pdfx@encodingfile}{}{} \expandafter\ifx\csname pdfx@inputencodingname\endcsname\relax @@ -3243,6 +3444,10 @@ \ifx\relax#1\relax\else\gdef\xmp@lang@Identifier{#1}\fi \def\afterxmp@parse{\let\Identifier\pdfx@extraIdentifier}% \xmp@parse{\global\let\xmp@Identifier\@this}} +\newcommand{\pdfx@Nickname}[1][]{% + \ifx\relax#1\relax\else\gdef\xmp@lang@Nickname{#1}\fi +% \def\afterxmp@parse{\let\Identifier\pdfx@extraNickname}% + \xmp@parse{\global\let\xmp@Nickname\@this}} \newcommand{\pdfx@Thumbnails}{% \def\afterxmp@parse{\let\Thumbnails\pdfx@extraThumbnails}% \xmp@parse{\global\let\xmp@Thumbnails\@this}} @@ -3443,6 +3648,28 @@ \xmp@parse{\global\let\xmp@extraIdentifier\@this}% }% +%% Nickname only supports a single usage, for PDF/X +%\newcommand{\pdfx@extraNickname}[1][]{% +% \ifx\relax#1\relax +% \expandafter\expandafter\expandafter\gdef +% \expandafter\expandafter\expandafter\xmp@Nickname +% \expandafter\expandafter\expandafter{% +% \expandafter\xmp@Nickname\pdfx@insert@sep}% +% \else +% \expandafter\expandafter\expandafter\gdef +% \expandafter\expandafter\expandafter\xmp@Nickname +% \expandafter\expandafter\expandafter{% +% \expandafter\xmp@Nickname\pdfx@insert@sep[#1]}% +% \fi +% \def\afterxmp@parse{% +% \expandafter\expandafter\expandafter\gdef +% \expandafter\expandafter\expandafter\xmp@Nickname +% \expandafter\expandafter\expandafter{% +% \expandafter\xmp@Nickname\xmp@extraNickname}% +% }% +% \xmp@parse{\global\let\xmp@extraNickname\@this}% +% }% + \newcommand{\pdfx@extraThumbnails}[1][]{% \ifx\relax#1\relax \expandafter\expandafter\expandafter\gdef @@ -3737,7 +3964,7 @@ %\let\sep\pdfx@sep %% Note: '\ ', \&, \copyright are already predefined by hyperref. %% allow LICRs to expand into PDF strings - \def\cf@encoding{PU}% + \def\cf@encoding{PU}% \def\9##1{\ifcase##1\string\0\or\string\1\or\string\2\or\string\3\fi}% \def\8{\string\00}% \def\0{\string\0}\def\1{\string\1}\def\2{\string\2}\def\3{\string\3}% @@ -3798,6 +4025,9 @@ %%---------------------------------------------------------------------- %% Alternative way to get the CreationDate using Lua for XeTeX \ifdefined\pdfcreationdate\else + \ifdefined\creationdate %% added to XeTeX in 2019 + \let\pdfcreationdate\creationdate + \else \begingroup %% ensure correct catcodes, not done by \dospecials \catcode`\:=12 \catcode`\.=12 \begin{filecontents*}{creationdate.lua} @@ -3833,7 +4063,7 @@ \def\noexpand\pdfcreationdate{\string D:20181028075445+10'00'}}% \x \fi -\fi +\fi \fi %%---------------------------------------------------------------------- \def\pdfx@findUUID#1{\edef\pdfx@tmpstring{\pdfx@mdfivesum{#1}} @@ -4004,7 +4234,7 @@ \fi\fi }% \fi\fi -\hypersetup{pdfencoding=auto}% unicode +%\hypersetup{pdfencoding=auto}% 2019-12-08 No; this writes 8-bit bookmarks. \expandafter\ifx\csname KV@Hyp@psdextra\endcsname\relax\else \hypersetup{psdextra} \fi @@ -4370,7 +4600,7 @@ %% ---------------------------------------------------------------------- \begingroup - \catcode`\_ 12 \catcode`\" 12 \catcode`\' 12 + \catcode`\_ 12 \catcode`\" 12 \catcode`\' 12 \catcode`\< 12 \catcode`\> 12 \catcode`\/ 12 \catcode`\[ 12 \catcode`\] 12 \edef\@pctchar{\expandafter\@gobble\string\%} \edef\@bchar{\expandafter\@gobble\string\\} @@ -4733,22 +4963,24 @@ \fi }% end of \catcode + %% ---------------------------------------------------------------------- %% \pdfx@topdfstring\toka\tokb: Convert the string in \tokb to a format %% appropriate for PDF /Info strings, i.e., PDFDoc encoding or UTF-16 %% encoding, and store the result in \toka As a special case, if \tokb %% is \@empty, set \toka to \@empty. -\def\pdfx@topdfstring#1#2{% - \ifx#2\@empty +\RequirePackage{stringenc}% prevent it loading later inside a group +\def\pdfx@topdfstring #1#2{% + \ifx #2\@empty \global\let#1\empty \else \begingroup \ifluatex\else\ifxetex\else \inputencoding{utf8}% \fi\fi - \hypersetup{pdfencoding=auto}% - \pdfstringdef#1{#2}% + \@ifl@t@r\fmtversion{2022/06/01}{}{\hypersetup{pdfencoding=auto}}% + \pdfstringdef #1{#2}% \endgroup \fi } @@ -4858,7 +5090,7 @@ \RequirePackage{stringenc}% \begingroup \catcode`\| 0 - \catcode `\\ 12 + \catcode `\\ 12 |gdef |pdfx@parsebackslash#1{% |begingroup |def |pdfx@parsemacro{#1}% @@ -4873,7 +5105,7 @@ |edef |pdfx@parseout{|pdfx@parseout \\}% |def |next{|pdfx@doparsebackslash#2|pdfx@endparse}% |fi |next - } + } |endgroup \def\pdfx@parseend{% \edef\next{\endgroup\def\expandafter\noexpand\pdfx@parsemacro{\pdfx@parseout}}% @@ -5018,7 +5250,7 @@ \spacefactor\accent@spacefactor } %% same for named accents in math-mode -\def\pdfx@mathaccentV#1#2#3#4#5{% +\def\pdfx@mathaccentV #1#2#3#4#5{% #5{\mathsurround=\z@\relax \everymath{}% \mathchoice @@ -5027,12 +5259,74 @@ {\setbox\z@\hbox{$\scriptstyle #5$}\kern-\wd\z@}% {\setbox\z@\hbox{$\scriptscriptstyle #5$}\kern-\wd\z@}% }% +% \pdfx@AMS@mathaccentV{#1}{#2}{#3}{#4}{#5}% \AMS@mathaccentV{#1}{#2}{#3}{#4}{\phantom{#5}}% } + +%%% the original AMS coding: +%%\mathaccentV=macro: #1#2#3#4#5->\ifmmode +%% \gdef \macc@tmp {\macc@depth \@ne }% +%% \setbox \z@ \hbox {\let\mathaccentV \macc@test +%% \let \use@mathgroup \@gobbletwo +%% \let \select@group \@gobblethree \frozen@everymath {}$#5$}\macc@tmp +%% \ifnum \macc@depth =\@ne +%% \global \let \macc@nucleus \@empty +%% \mathaccent "\accentclass@ +%% \else \@xp \macc@nested +%% \fi #2#3#4{#5}\macc@nucleus +%% \else +%% \@xp \nonmatherr@ \csname #1\endcsname \fi . + +\def\pdfx@AMS@mathaccentV #1#2#3#4#5{% + \ifmmode + \gdef \macc@tmp {\macc@depth \@ne }% + \setbox \z@ \hbox {\let\mathaccentV \macc@test + \let \use@mathgroup \@gobbletwo + \let \select@group \@gobblethree \frozen@everymath {}$\phantom{#5}$}\macc@tmp + \ifnum \macc@depth =\@ne + \global \let \macc@nucleus \@empty + \mathaccent "\accentclass@ + \else \@xp \macc@nested + \fi #2#3#4{#5}\macc@nucleus + \else + \@xp \nonmatherr@ \csname #1\endcsname + \fi +} + + +%% code supplied by Yuwsuke Kieda, 7 May 2019 : +%% https://gist.github.com/yuw/a31936370647d0044eeb4e47f3ae913f +%% +\@ifpackageloaded{amsmath}{% + \def\pdfx@macc@a #1#2{% + \begingroup + \let\macc@style#1\relax + \def\macc@palette ##1{##1\macc@style}% + \advance\macc@depth\m@ne + \ifnum\macc@depth=\z@ + \gdef\macc@nucleus{\phantom{#2}}%% <<< here + \setbox\z@\hbox{$#1#2\@empty{}\macc@skewchar$}% + \setbox\tw@\hbox{$#1#2\@empty\macc@skewchar$}% + \dimen@\tw@\wd\tw@ \advance\dimen@-\tw@\wd\z@ + \xdef\macc@kerna{\the\dimen@\relax}% + \setbox4\hbox{$#1#2\acc@check\@empty$}% + \global\setbox\@ne\hbox to\wd4{}% + \ht\@ne\ht4 \dp\@ne\dp4 + \xdef\macc@kernb{\the\wd4\relax}% + \mathaccent\macc@code{\box\@ne\kern\macc@kerna}% + \else + \mathaccent\macc@code{\let\macc@adjust\@empty #1#2\@empty}% + \macc@adjust + \fi + \endgroup + }}\relax +% \AtBeginDocument{% \@ifpackageloaded{amsmath}{% \let\AMS@mathaccentV\mathaccentV - \let\mathaccentV\pdfx@mathaccentV}% +% \let\mathaccentV\pdfx@mathaccentV +% \let\macc@a\pdfx@macc@a + }% }% %% How to support XeTeX here ? @@ -5284,10 +5578,25 @@ %% it should be loaded outside the grouping, else biblatex may barf %% \RequirePackage{ifthen} -\begingroup + +%% 2024-04-05: from July 2024 LaTeX will not allow packages to load +%% within a grouping, so reorganise a bit. +%% %% override the \ifpdf check of xmpincl package, inside the grouping - \pdftrue - \RequirePackage{xmpincl} +%% after saving its current value: +\let\pdfx@ifpdf\ifpdf +\pdftrue +%% now load the packages, then enter the grouping: +\RequirePackage{xmpincl} +%% +\begingroup +%%% 20240405 revert the value of \ifpdf ... +\pdfx@ifpdf +\else + %% 20240624 ... outside the grouping + \aftergroup\pdffalse +\fi + %% combine coding from xmpincl and hyperxml to support XeTeX \def\pdfx@xmpincl@xetex#1{% \IfFileExists{#1.xmp}{% @@ -5343,6 +5652,13 @@ %%---------------------------------------------------------------------- \begingroup +%% 20210706 we need a pointer to unexpandable \par + \expandafter\ifx\csname tex_par:D\endcsname \relax + \let\pdfx@par\par + \else +%% using LaTeX 2021-06 or later + \expandafter\let\expandafter\pdfx@par\csname tex_par:D\endcsname + \fi \ifpdfx@x \ifpdfx@vt \def\xmp@template{pdfvt}% @@ -5396,9 +5712,11 @@ %% beware 128 space characters -- for padding end of XMP packet \gdef\paddingline{ }% \typeout{Using XMP template file: \xmp@template.xmp}% + %% 20210706 ensure \par is unexpandable + \let\par\pdfx@par \includexmp{\xmp@template}% \endgroup - +%%% %% %% revert active characters to previous encoding %% @@ -5462,13 +5780,27 @@ %% %% controls the color model and conversions with xcolor package %% +\def\pdfx@selectcolormodel@doing #1{%% Warning + \PackageWarning{pdfx}{Setting all color commands to #1,^^J% + consistent with the Color Model for PDF/% + \ifpdfx@x X \else \ifpdfx@e E \else A \fi\fi}% + }%% 20240528 inhibit any changes +\def\pdfx@selectcolormodel@done #1{%% Warning + \PackageWarning{pdfx}{Color Model already set for PDF/% + \ifpdfx@x X\else \ifpdfx@e E\else A\fi\fi,^^Jcannot change to #1 }% + }%% 20240528 inhibit any changes +%% \ifpdfx@cmyk % % this will have been done already for PDF/X % \PassOptionsToPackage{cmyk,hyperref}{xcolor} - \def\pdfx@handlexcolor{\def\@@mod{cmyk}\selectcolormodel{cmyk}% - \convertcolorsUtrue\convertcolorsDtrue} + \def\pdfx@handlexcolor{\def\@@mod{cmyk}% + \pdfx@selectcolormodel@doing{cmyk}% + \selectcolormodel{cmyk}% + \convertcolorsUtrue\convertcolorsDtrue + \let\selectcolormodel\pdfx@selectcolormodel@done + } \ifpdfx@x \else %% \AtBeginDocument{% @@ -5491,8 +5823,12 @@ \fi \else \PassOptionsToPackage{rgb,hyperref}{xcolor} - \def\pdfx@handlexcolor{\def\@@mod{rgb}\selectcolormodel{rgb}% - \convertcolorsUtrue\convertcolorsDtrue} + \def\pdfx@handlexcolor{\def\@@mod{rgb}% + \pdfx@selectcolormodel@doing{rgb}% + \selectcolormodel{rgb}% + \convertcolorsUtrue\convertcolorsDtrue + \let\selectcolormodel\pdfx@selectcolormodel@done + } \fi \@ifpackageloaded{xcolor}{\pdfx@handlexcolor \ifpdfx@cmyk\else\color{black}\fi}{% @@ -5628,7 +5964,9 @@ %</package> % \fi % \Finale -% \let\newpage\relax % \PrintIndex +% \let\realGlossaryParms\GlossaryParms \let\realsubitem\subitem +% \long\def\GlossaryParms{\realGlossaryParms \def\hdpindex ##1##2{}% +% \long\def\subitem ##1:\ ##2\pfill{\par\hangindent 30pt\hspace*{15pt}##2\hfil}}% % \PrintChanges % \endinput diff --git a/macros/latex/contrib/pdfx/src/pdfx.ins b/macros/latex/contrib/pdfx/src/pdfx.ins index afd943fbb5..88defbfee8 100644 --- a/macros/latex/contrib/pdfx/src/pdfx.ins +++ b/macros/latex/contrib/pdfx/src/pdfx.ins @@ -4,9 +4,9 @@ \preamble - Copyright (c) 2019, CV Radhakrishnan <cvr@river-valley.org>, + Copyright (c) 2019-2024, CV Radhakrishnan <cvr@river-valley.org>, Han The Thanh <thanh@river-valley.org>, - Ross Moore <ross.moore@mq.edu.au>, + Ross Moore <ozross@icloud.com> - primary contact, Peter Selinger <selinger@mathstat.dal.ca> This file may be distributed and/or modified under the conditions diff --git a/macros/latex/contrib/pdfx/src/pdfx.xmpdata b/macros/latex/contrib/pdfx/src/pdfx.xmpdata deleted file mode 100644 index 66eb644635..0000000000 --- a/macros/latex/contrib/pdfx/src/pdfx.xmpdata +++ /dev/null @@ -1,33 +0,0 @@ -\Title{Generation of PDF/X- and PDF/A-compliant PDFs with pdfTeX \textemdash\ pdfx.sty} -\Author{\CVR\sep \Thanh\sep Ross Moore\sep Peter Selinger} -\Subject{This package supports generation of PDF/X-, PDF/A- and PDF/E-compliant documents, in most of their variants, using pdfLaTeX, LuaLaTeX and XeLaTeX.} -\Keywords{PDF/X-, PDF/A- and PDF/E-compliance\sep Multilingual Metadata\sep installation\sep \TeX Live \thisyear} -\PublicationType{manual} -\Contributor{Norbert Preining: 'colorprofiles' package} -\Copyright{Public domain.} -\Copyrighted{False} -\CopyrightURL{http://tug.org/texlive/} -\CoverDisplayDate{March \thisyear} -\CoverDate{\thisyear-03-10} -\CreatorTool{LaTeX + pdfx.sty with option \pdfxopt, from TeX Live \thisyear} -\Date{2017-05-18\sep 2017-06-23\sep 2018-11-29\sep 2018-12-22\sep 2019-02-08\sep 2019-03-10} -\Advisory{An earlier version of this documentation was published as: TUGboat 36, No.2, pp.136\textendash 142 (2015)} -\Advisory{v1.6: Added XMP support for PDF/UA-1. Added more Metadata fields and Language support.} -\Advisory{v1.6: Default RGB and CMYK profiles now require the colorprofiles.sty package.} -\Relation{Requires the colorprofiles package for RGB and CMYK default profiles.} -\Advisory{v1.6: Access more profiles, incl. to pdfaPilot's color profile folders.} -\Advisory{v1.6: Revised glyphtounicode.sty to use variation selectors.} -\Advisory{v1.6: altered maps to PUA codepoints.} -\Advisory{v1.6: added more glyphs via glyphtounicode-ntx.tex } -\Advisory{v1.6: Support for 8-bit Hebrew encodings, some Arabic and Devanagari.} -\Advisory{v1.6: Updated documentation, incl. for LaTeX changes.} -\Advisory{v1.6.1: Fixed issue with ifthen package; improved Metadata with LuaTeX and XeTeX.} -\Advisory{v.1.6.1: Flexibility with page boxes for PDF/X.} -\Advisory{v.1.6.2: Fixed passing of options to xcolor, and some glyphtounicode values.} -\Advisory{v.1.6.2: Fixed encoding issue. Extra warning when colorprofiles.tex is missing.} -\Advisory{v.1.6.3: Properly fixed encoding issue; supports \string\pdfomitcharset\ primitive.} -\Advisory{v.1.6.3: Reference to veraPDF validation software; additions to glyphtounicode-ntx.tex.} -\Advisory{v.1.6.3: Patched \string\mathaccentV\ to output accents after the base character.} -\pdfxEnableCommands{% - \def\CVR{C.V. Radhakrishnan}\def\Thanh{H\`an Th\eee Thanh}% - \def\eee{^^c3^^aa^^cc^^81 }} diff --git a/macros/latex/contrib/thuthesis/CHANGELOG.md b/macros/latex/contrib/thuthesis/CHANGELOG.md index fb293105fc..b038a8a762 100644 --- a/macros/latex/contrib/thuthesis/CHANGELOG.md +++ b/macros/latex/contrib/thuthesis/CHANGELOG.md @@ -6,6 +6,17 @@ ## [Unreleased] +## [v7.5.2] - 2024-07-01 + +### Added + +- 增加选项 `eqn-paren-style` 控制公式编号的括号样式([#959](https://github.com/tuna/thuthesis/pull/959))。 + +### Fixed + +- 解决本科生的多篇“书面翻译对应的原文索引”([#956](https://github.com/tuna/thuthesis/issues/956))。 +- 修复 GitHub 发布的 Release 压缩包缺少部分文件的问题([#965](https://github.com/tuna/thuthesis/issues/965))。 + ## [v7.5.1] - 2024-05-20 ### Changed @@ -988,7 +999,8 @@ -[Unreleased]: https://github.com/tuna/thuthesis/compare/v7.5.1...HEAD +[Unreleased]: https://github.com/tuna/thuthesis/compare/v7.5.2...HEAD +[v7.5.2]: https://github.com/tuna/thuthesis/compare/v7.5.1...v7.5.2 [v7.5.1]: https://github.com/tuna/thuthesis/compare/v7.5.0...v7.5.1 [v7.5.0]: https://github.com/tuna/thuthesis/compare/v7.4.0...v7.5.0 [v7.4.0]: https://github.com/tuna/thuthesis/compare/v7.3.2...v7.4.0 diff --git a/macros/latex/contrib/thuthesis/thuthesis-example.pdf b/macros/latex/contrib/thuthesis/thuthesis-example.pdf Binary files differindex 2c48ce2ef5..36ed8efd75 100644 --- a/macros/latex/contrib/thuthesis/thuthesis-example.pdf +++ b/macros/latex/contrib/thuthesis/thuthesis-example.pdf diff --git a/macros/latex/contrib/thuthesis/thuthesis.dtx b/macros/latex/contrib/thuthesis/thuthesis.dtx index ea4ac03f22..e6f3e46ad8 100644 --- a/macros/latex/contrib/thuthesis/thuthesis.dtx +++ b/macros/latex/contrib/thuthesis/thuthesis.dtx @@ -14,7 +14,7 @@ % % \iffalse %<*driver> -\ProvidesFile{thuthesis.dtx}[2024/05/20 7.5.1 Tsinghua University Thesis Template] +\ProvidesFile{thuthesis.dtx}[2024/07/01 7.5.2 Tsinghua University Thesis Template] \documentclass{ltxdoc} \usepackage{dtx-style} @@ -251,7 +251,7 @@ % $ bibtex thuthesis-example.aux # 生成 bbl 文件 % $ bibtex thuthesis-example-appendix-a.aux # 附录 A 的的参考文献 % $ bibtex thuthesis-example-appendix-b.aux # 附录 B 的的参考文献…… -% $ bibtex thuthesis-example-index.aux # 本科生的书面翻译对应的原文索引 +% $ bibtex thuthesis-example-index-1.aux # 本科生的书面翻译对应的原文索引 % $ xelatex thuthesis-example.tex # 解决引用 % $ xelatex thuthesis-example.tex # 生成论文 PDF % @@ -813,7 +813,7 @@ % } % \end{latex} % -% 用户也可以逐项修改数学样式。 +% 用户也可以逐项修改数学样式,包括: % \newcommand\dif{\mathop{}\!\mathrm{d}} % \begin{enumerate} % \item \DescribeOption{uppercase-greek} @@ -885,12 +885,16 @@ % 模板作了处理,用户可以直接使用这些宏包的命令,如 \cs{bm}、\cs{mathscr}、 % \cs{uppi}。 % -% 另外,模板还为 `math-font` 提供了传统的 Type 1 字体 \option{newtx}。 +% 另外,模板还为 |math-font| 提供了传统的 Type 1 字体 \option{newtx}。 % 该选项会调用 \pkg{newtxmath} 宏包。 % 但是,如果西文字体已经使用了 OpenType 的 Times New Roman, % 混用 Type 1 字体可能会导致问题,尤其是使用 \pkg{siunitx} 宏包时。 % 该选项还处于测试阶段,需要谨慎使用。 % +% \DescribeOption{eqn-paren-style} +% 控制中文论文中,数学公式编号两边的括号样式。可选项包括:\option{full}(全角,默认) / \option{half}(半角)。 +% 在语言为英语(|language = english|)时,此选项无效,仅使用半角括号。 +% % \subsubsection{定理环境} % \label{sec:theorem} % \thuthesis{} 定义了常用的数学环境: @@ -1269,7 +1273,7 @@ % \begin{macrocode} %<cls>\NeedsTeXFormat{LaTeX2e}[2017/04/15] %<cls>\ProvidesClass{thuthesis} -%<cls>[2024/05/20 7.5.1 Tsinghua University Thesis Template] +%<cls>[2024/07/01 7.5.2 Tsinghua University Thesis Template] % \end{macrocode} % % 报错 @@ -1330,7 +1334,7 @@ %<*cls> \hyphenation{Thu-Thesis} \def\thuthesis{ThuThesis} -\def\version{7.5.1} +\def\version{7.5.2} \RequirePackage{kvdefinekeys} \RequirePackage{kvsetkeys} \RequirePackage{kvoptions} @@ -1658,6 +1662,17 @@ }, default = print, }, +% \end{macrocode} +% +% 数学公式编号的括号使用全角还是半角。 +% \begin{macrocode} + eqn-paren-style = { + name = eqn@paren@style, + choices = { + full, + half, + } + }, } \newif\ifthu@degree@graduate \newcommand\thu@set@graduate{% @@ -3511,10 +3526,23 @@ % 中文模板的公式编号使用中文括号。需要修改 \pkg{amsmath} 的 \cs{tagform@}。 % 这里中文的 \cs{unskip} 是为了“|式~\eqref|”这样的写法不产生额外的空格。 % \begin{macrocode} +\newcommand\thu@eqn@left@paren{(} +\newcommand\thu@eqn@right@paren{)} +\newcommand\thu@set@eqn@paren@style{% + \ifthu@eqn@paren@style@full + \renewcommand\thu@eqn@left@paren{(}% + \renewcommand\thu@eqn@right@paren{)}% + \else + \renewcommand\thu@eqn@left@paren{(}% + \renewcommand\thu@eqn@right@paren{)}% + \fi +} +\thu@set@eqn@paren@style +\thu@option@hook{eqn-paren-style}{\thu@set@eqn@paren@style} \newcommand\thu@put@parentheses[1]{% \ifthu@language@chinese \unskip - (#1)% + \thu@eqn@left@paren#1\thu@eqn@right@paren \else (#1)% \fi @@ -6347,9 +6375,11 @@ % \begin{macrocode} \newenvironment{translation-index}{}{} \AtEndOfPackageFile*{bibunits}{ + \newcounter{thu@translation@index}% \renewenvironment{translation-index}{% + \global\advance\c@thu@translation@index\@ne \begin{bibunit}% - \renewcommand\@bibunitname{\jobname-index}% + \renewcommand\@bibunitname{\jobname-index-\arabic{thu@translation@index}}% \renewcommand\bibname{书面翻译对应的原文索引}% \thu@set@survey@bibheading }{% diff --git a/macros/latex/contrib/thuthesis/thuthesis.pdf b/macros/latex/contrib/thuthesis/thuthesis.pdf Binary files differindex daa32de045..4979b94dc4 100644 --- a/macros/latex/contrib/thuthesis/thuthesis.pdf +++ b/macros/latex/contrib/thuthesis/thuthesis.pdf |