修补后的 pdftex 版本无法看到 kpsewhich 看到的内容

修补后的 pdftex 版本无法看到 kpsewhich 看到的内容

我在 ArchLinux 上运行 TeX Live 版本 2013.30973-7。我想使用pdftex 的修补版本创建有效的 PDF/A-1b 文档。

我在编译后使用修补版本时遇到问题。我遵循说明。但是,我在尝试创建格式文件时卡在了这一步:

pdftex2 -ini -translate-file=cp227.tcx '*pdfetex.ini'
pdflatex2 -ini -translate-file=cp227.tcx '*pdflatex.ini'

第一个命令的输出(另一个命令同样如此):

This is pdfTeX, Version 3.1415926-1.40.11 (TeX Live 2010) (INITEX)
 restricted \write18 enabled.
entering extended mode
! I can't find file `pdfetex.ini'.
<*> pdftex.ini

这些文件确实存在于我的texmf-dist树中,并且可以通过以下方式找到kpsewhich

# kpsewhich 'pdfetex.ini'
/usr/share/texmf-dist/tex/plain/config/pdfetex.ini

我还尝试使用完整路径运行命令并将文件复制到工作目录中,但没有任何效果。使用完整路径时,它会抱怨下一个文件。有人能指出我遗漏了什么吗?


更新 1:根据源代码和说明,我曾经build-pdftex.sh配置和编译过pdftex。其中设置了一个有趣的标志,我认为这可能是编译后看不到系统所看到的内容--without-system-kpathsea的原因。其他系统库也被禁用,这些库都在pdftexkpsewhichgentoo 的 ebuild--with-system-kpathsea很不幸,当切换到--缺少kpathsea头文件时,编译会失败。

我还下载了 TeX Live 2013 源代码。TeX Live 有更新版本pdftex:最新的独立版本pdftex是 1.40.11(至少我没有找到其他版本)位于萨罗瓦,而 TeX Live 2013 有 1.40.14。pdftex 现在是在 TeX Live 中开发的吗?


更新 2:我设法从 TeX Live 2013 编译了 (修补和未修补的) pdftex 1.40.14,也使用了--with-system-kpathsea。但是,在任何情况下,运行编译后的 pdftex 时,都会发生同样的错误。


更新 3:pdftex 实际上是在superec.fr(看这里)。此外,当将二进制文件放入时/usr/bin,编译后的版本可以正常工作(请参阅这里)。对于本地安装,我仍然不确定如何正确地进行。

答案1

将正确编译的可执行文件放入/usr/bin,一切都按预期工作。由于我花了不少功夫才正确地编译它,我认为从当前来源获取最新指南会很有用pdftex。非常感谢特克斯直播tlbuild邮件列表。以下是指南:


如何pdftex/pdflatex从源代码构建和安装

1.)获取源代码使用rsync Tex Live (如果需要版本控制则更改):

rsync -a --delete --exclude=.svn tug.org::tldevsrc/Build/source source

2.) 修补 pdftexsource/texk/web2c/pdftexdir如果您愿意的话,请在。


3.) 构建源使用以下脚本(修改自12):

#!/bin/bash -ex
# build-pdftex.sh: script to build pdftex from a subset of TeX Live sources

topDir=$(cd $(dirname $0) && pwd)
pdftexDir=$topDir/source/texk/web2c/pdftexdir

if [ ! -d $pdftexDir ]; then
    echo "$pdftexDir not found"
    exit -1
fi
GENTOO_CFG_OPTS="\
    --disable-cxx-runtime-hack  \
    --disable-all-pkgs      \
    --disable-ptex        \
    --enable-pdftex       \
    --disable-native-texlive-build \
    --without-mf-x-toolkit    \
    --without-x         \
    --disable-shared      \
    --disable-largefile     \
    --with-system-xpdf      \
    --with-system-zlib      \
    --with-system-pnglib    \
    --disable-multiplatform   \
    --with-system-kpathsea    \
    --with-system-ptexenc"

CFG_OPTS="$GENTOO_CFG_OPTS"

buildDir=$(pwd)/build-pdftex
rm -rf $buildDir && mkdir $buildDir && cd $buildDir

export CONFIG_SHELL=/bin/bash
$topDir/source/configure $CFG_OPTS "$@" 2>&1 | tee configure.log

# try to find gnu make; we may need it
MAKE=make
if make -v 2>&1| grep "GNU Make" >/dev/null; then
    echo "Your make is a GNU-make; I will use that"
elif gmake -v >/dev/null 2>&1; then
    MAKE=gmake
    echo "You have a GNU-make installed as gmake; I will use that"
else
    echo "I can't find a GNU-make; I'll try to use make and hope that works."
    echo "If it doesn't, please install GNU-make."
fi

$MAKE | tee make.log
(cd $buildDir/texk/web2c; $MAKE pdftex) 2>&1 | tee -a make.log

4.) 将编译好的移动pdftex/usr/bin,并生成和安装所需的格式文件 以 su ( su -) 身份执行!

#!/bin/sh
# mv-compiled-pdftex.sh
SUFFIX="-newest"

sudo cp build-pdftex/texk/web2c/pdftex /usr/bin/pdftex${SUFFIX}
sudo cp build-pdftex/texk/web2c/pdftex /usr/bin/pdflatex${SUFFIX}

PDFTEXFMTDIR=$(dirname $(sudo kpsewhich -engine=pdftex pdflatex.fmt) )
echo "Putting format files to $PDFTEXFMTDIR" # check that this is the location you want!

pdftex${SUFFIX} -ini -translate-file=cp227.tcx '*pdfetex.ini'
pdflatex${SUFFIX} -ini -translate-file=cp227.tcx '*pdflatex.ini'

sudo mv -v pdfetex.fmt ${PDFTEXFMTDIR}/pdftex${SUFFIX}.fmt
sudo mv -v pdflatex.fmt ${PDFTEXFMTDIR}/pdflatex${SUFFIX}.fmt

sudo texhash

使用此脚本,您将获得可执行文件pdftex-newestpdflatex-newest可运行。对于本地安装(~/texmf~/bin),请查看这个答案并调整我使用的代码这里

相关内容