编辑。我的问题可以改写为:“我怎样才能检查,命令行,如果不同的来源产生准确 布局一样.pdf
吗?
我正在改进emacs
我编写的一些脚本,以便从源 .tex 文件中删除注释和/或未使用的宏。
以下是我的代码示例:
(save-buffer)
(call-process-shell-command
(concat "latex \"\\let\\oldExecuteOptions\\ExecuteOptions\"\\\n"
"\"\\def\\ExecuteOptions#1{\\oldExecuteOptions{#1,draft}}\"\\\n"
"\"\\nonstopmode\\input{" (buffer-name) "}\";"
"mv " (file-name-sans-extension (buffer-name)) ".pdf /tmp/" ) nil nil)
;;; =========================================================================
;;; =========================== "COMMENT" AMBIENT ===========================
;;; =========================================================================
;;The "comment" ambient is defined in the "verbatim" e "comment packages"
(if (string-match-p "\\\\includecomment[\s\t\n]*{comment}" (buffer-string))
(read-string "SOME WARNING HERE...")
;; *ELSE*
(progn
(goto-char (point-min))
(while (search-forward-regexp "\\\\begin[\s\t\n]*{comment}" nil t)
(save-excursion
(let ((b (make-marker))
(e (make-marker)))
(set-marker b (match-beginning 0))
(search-forward-regexp "\\\\end[\s\t\n]*{comment}" nil t)
(set-marker e (point))
(goto-char b)
(unless (nth 4 (syntax-ppss))
(comment-region b e))
)))
(save-buffer)
(call-process-shell-command
(concat "latex \"\\let\\oldExecuteOptions\\ExecuteOptions\"\\\n"
"\"\\def\\ExecuteOptions#1{\\oldExecuteOptions{#1,draft}}\"\\\n"
"\"\\nonstopmode\\input{" (buffer-name) "}\"" ) nil nil)
)
)
可以看出:
- 我首先
draft
通过命令行传递选项来编译我的源代码,然后在/tmp/
目录中保存/移动我的输出。 - 然后我“评论”(使用
%
)并从源文件中删除“评论”环境.tex
。 - 最后我编译了我的
cleaned
源代码,再次使用draft
选项......
所以我首先有:
\documentclass[11pt]{article}
\pdfoutput=1
\usepackage{comment}
\usepackage{blindtext}
\pagestyle{empty}
\begin{document}
\blindtext
\begin{comment}
\blindtext
\end{comment}
\end{document}
进而
\documentclass[11pt]{article}
\pdfoutput=1
\usepackage{comment}
\usepackage{blindtext}
\pagestyle{empty}
\begin{document}
\blindtext
\end{document}
我的问题是:“我怎样才能检查命令行,布局是否已经改变?”。
我尝试通过命令行比较这两个 pdf:
cmp mydoc.pdf /tmp/mydoc.pdf
但它总是说文件不同。但我知道布局没有改变。
如果我尝试使用diffpdf
(GUI 程序),它会说“pdf 看起来相同”,但正如我所说,我需要一个命令行解决方案。我的意思是我需要在stdout
我的终端中获取比较结果,以便我可以在我的脚本中使用它(例如使用emacs
'shell-command-to-string
函数)。我不需要(也不想)在此阶段目视检查布局。
请让我知道我是否能够清楚地解释我的目的。
笔记。这是一个虚拟示例,但在某些情况下,检查某些更改是否会影响布局可能会很棘手。
我的考虑。经过多次尝试使用“文件内容”方法(我尝试了
faketime
命令方法(参见这里) 但它只适用于小型和简单的文件) 我确信我需要一种“布局方法”。 类似diffpdf
(带有--appearance
选项)的工具可以在中回显,这stdout
可能是解决方案。