我在 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
的原因。其他系统库也被禁用,这些库都在pdftex
kpsewhich
gentoo 的 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
如果您愿意的话,请在。
#!/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-newest
和pdflatex-newest
可运行。对于本地安装(~/texmf
和~/bin
),请查看这个答案并调整我使用的代码这里。