很多时候,我看了一份有趣的 LaTeX 排版文档,但我没有源代码来检查样式。其中一个例子是:http://philosophy.unimelb.edu.au/ajl/2011/2011_5.pdf
我知道网上有免费字体识别服务。它们可能对简单的文本有用,但对于数学等文本,识别正确的字体就变得非常困难。
所以,我的问题是,当只能访问最终的 PDF 时,可以用什么来帮助重现特定的样式?
答案1
对于字体,您可以使用pdffonts
:
$ pdffonts charismanie.pdf 名称 类型 emb sub uni 对象 ID ------------------------------------ ----------------- --- --- --- --------- BQFNPY+TimesNewRomanPS-ItalicMT CID TrueType 是 是 是 59 0 UQUJMH+Centennial-Roman CID TrueType 是 是 是 60 0 NSOUSR+LinLibertine 类型 1 是 是 否 137 0 NSOUSR+LinLibertine 类型 1 是 是 否 138 0 PTKESR+LinLibertineI 1 型 是 是 否 143 0 TYFIDZ+CMSY10 1型 是 是 否 144 0 MHUAJQ+LinLibertineB 类型 1 是 是 否 145 0 [无] 第 3 类 是 否 否 146 0 QTAYVE+LinBiolinumB 1 型 是 是 否 161 0 CXJGOW+CMR12 类型 1 是 是 否 207 0 PTKESR+LinLibertineI 1 型 是 是 否 285 0 PFIFSH+fourier-orns 1 型 是 是 否 465 0
编辑:pipitas 提供了一个很好的答案,其中包含-f
和-l
选项pdffonts
。为了更自动化地执行他的建议以在 PDF 中列出字体,这里有一个小脚本:
#!/bin/bash
# Parse options
RANGE=0
while getopts ":ap:f:l:g:" option; do
case $option in
a)
RANGE=1
;;
p)
RANGE=1
STARTPAGE=$OPTARG
ENDPAGE=$STARTPAGE
;;
f)
RANGE=1
STARTPAGE=$OPTARG
;;
l)
RANGE=1
ENDPAGE=$OPTARG
;;
g)
GREP=1
KEYWORD=$OPTARG
;;
*)
echo "Unknown option $option"
exit 1
;;
esac
done
shift $(($OPTIND - 1))
PDF="$1"
if [ -z "$PDF" ]; then
echo "E: You must provide a PDF file"
exit 1
fi
PAGES=$(pdfinfo $PDF | awk '/^Pages:/ { print $2 }')
if [ $RANGE = 1 ]; then
for p in $(seq ${STARTPAGE:-1} ${ENDPAGE:-$PAGES}); do
echo "== Fonts on page $p/$PAGES =="
pdffonts -f $p -l $p $PDF
done
elif [ $GREP = 1 ]; then
FOUND=""
for p in $(seq ${STARTPAGE:-1} ${ENDPAGE:-$PAGES}); do
pdffonts -f $p -l $p $PDF | grep -q "^${KEYWORD} " && \
FOUND="$FOUND $p"
done
if [[ -n $FOUND ]]; then
echo "The font $KEYWORD was found on the following pages:$FOUND"
else
echo "The font $KEYWORD was not found"
fi
else
pdffonts $PDF
fi
这是一个 bash 脚本,用于 *nix 系统。这里,我将其保存为showfonts.sh
)。
它的作用如下:
- 没有任何选项,它只
pdffonts
在给定的 PDF 文件上执行; 选项
-a
(对于all
)执行pipitas建议的操作:它在每个页面上单独列出字体,例如:$ ./showfonts.sh -a charismanie.pdf
该
-p
选项(用于page
)列出了 PDF 特定页面上的字体,例如:$ ./showfonts.sh -p 15 charismanie.pdf
-f
和选项-l
(对于first
和last
)相当于 中的相同选项pdffonts
(因此-f 1
相当于-a
),例如:$ ./showfonts.sh -f 13 -l 16 charismanie.pdf
选项
-g
(对于grep
)可让您查找使用字体的页面,例如:$ ./showfonts.sh -g "LeagueGothic" charismanie.pdf
它还使用通配符来匹配具有相似名称的字体,例如:
$ ./showfonts.sh -g ".*Libertine.*" charismanie.pdf
该脚本现已在github上提交:https://github.com/raphink/listpdffonts
-g
编辑:该脚本现在支持Kurt Pfeifle 要求的字体子集。请参阅 Git 存储库。
答案2
对于字体。如果查看Adobe Reader, 右键点击,文档属性..., 然后字体。
答案3
@标记:
如果你想知道第 3 页的字体,请使用
pdffonts -f 3 -l 3 /路径/到/pdf
(f
是第一的,l
是最后的页面)。如果您想知道 10 页 PDF 中的哪一页上会出现哪种字体,请使用
对于 $(seq 1 10) 中的 p;执行 pdffonts -f ${p} -l ${p} /路径/到/pdf 完毕
以上示例适用于 *nix 操作系统。如果你使用的是 Windows,请尝试
对于(1,1,10)中的%p,执行pdffonts -f%p -l%p
答案4
这似乎是《澳大利亚逻辑学杂志》的内部样式。他们要求使用文章类提交标准 LaTeX 文档,并且样式文件不对外公开。