从源 .tex 文件中删除 LaTeX 注释和/或未使用的宏后,检查布局(.pdf 或 .dvi)是否发生了变化

从源 .tex 文件中删除 LaTeX 注释和/或未使用的宏后,检查布局(.pdf 或 .dvi)是否发生了变化

编辑。我的问题可以改写为:“我怎样才能检查,命令行,如果不同的来源产生准确 布局一样.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)
    )
  )

可以看出:

  1. 我首先draft通过命令行传递选项来编译我的源代码,然后在/tmp/目录中保存/移动我的输出。
  2. 然后我“评论”(使用%)并从源文件中删除“评论”环境.tex
  3. 最后我编译了我的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可能是解决方案。

相关内容