使用 texify 向 LaTeX 文件添加命令

使用 texify 向 LaTeX 文件添加命令

我正在使用的程序会将 LaTeX 表格输出到 LaTeX 文件中(outreg2来自 Stata 的命令),我使用 texify 运行该程序以制作表格的 pdf。我裁剪这些表格(使用 pdfcrop)并将它们嵌入到其他地方。但是,pdf 包含页码,这阻止 pdfcrop 直接裁剪表格周围。我需要一种在裁剪之前自动删除页码的方法。我想将命令插入\pagenumbers{gobble}LaTeX 代码中以自动删除页码。

我相信

texify --pdf --texinfo="\pagenumbering{gobble}" filename.tex

应该可以工作。但不行。没有弹出任何异常,但页码仍然存在。我找不到任何文档来展示--texinfo在运行 LaTeX 文件创建 pdf 之前使用该选项将 LaTeX 代码拼接到文件中的示例。

我应该如何正确使用 texify 命令?或者 \pagenumbering{gobble}在运行 texify 之前还有其他方法可以进行拼接吗?

答案1

这篇文章包含统计软件标签中提到了Stata 用户编写的命令outreg2 (可在运行中获取ssc install outreg2)。因此,我提供了两个基于 Stata 的解决方案。

解决方案 1。

outreg2命令输出可使用适当软件编译的 LaTeX 代码。原始发帖者提到

我想在 LaTeX 代码中插入命令\pagenumbers{gobble}以自动删除页码。

如果这就是所需要的,那么我将在下面展示一个用于filefilter实现该目的的完整示例。

clear all
set more off

* Example data, estimation and LaTeX code
sysuse auto

local filepath "/path/to/myfile.tex"

regress mpg foreign weight
outreg2 using "`filepath'", tex replace

* Introduce required text
filefilter "`filepath'" "`filepath'.2", ///
    from("\BSbegin{document}") ///
    to("\BSpagenumbering{gobble}\n\BSbegin{document}") replace

copy "`filepath'.2" "`filepath'", replace
erase "`filepath'.2"

该命令filefilter只是寻找

\begin{document} 

在生成的.tex文件中并将其替换为

\pagenumbers{gobble}
\begin{document}

运行help filefilter以了解详情。

解决方案 2。

使用tex(frag)outreg2命令的选项。这将输出一个 片段,可以使用 LaTeX命令tex将其包含在某些模板文件中。.tex\input{}

因此使用

outreg2 using "`filepath'", tex(frag) replace

并创建一个模板.tex文件

\documentclass[]{article}
\setlength{\pdfpagewidth}{8.5in} \setlength{\pdfpageheight}{11in}
\pagenumbering{gobble}
\begin{document}

\input{file-created-with-outreg2}

\end{document}

这样,您甚至可以创建多个tex片段并将它们全部包含在模板.tex文件中。

运行help outreg2以了解详情。

答案2

Roberto 专门针对 OP 的情况进行了回答。我想尝试给出一个更一般的答案:

(对于没有耐心的读者:解决方案位于本答案的下部。)

首先让我们创建一个小的测试文件 –testfile.tex

\documentclass{article}
\begin{document}
content
\end{document}

正如原帖所指出的,

texify --pdf --texinfo="\pagestyle{empty}" testfile.tex

不会产生任何错误,但页码仍然可见(我更喜欢\pagestyle…)。由于 Texify 带有选项--pdf内部调用 PDFLaTeX,让我们看看会发生什么

pdflatex testfile.tex "\pagestyle{empty}"

答案(并不那么)令人惊讶:结果相同——没有错误,但也没有成功。但对于 (PDF(La))TeX,另一种方法是众所周知的:

pdflatex "\pagestyle{empty}\input{testfile.tex}"

虽然,哎呀,没有变化。但是这个有效:

pdflatex "\AtBeginDocument{\pagestyle{empty}}\input{testfile.tex}" (*)

如果我们现在尝试将其适应 Texify,我们将

texify --pdf --texinfo="\AtBeginDocument{\pagestyle{empty}}\input{testfile.tex}"

得到错误texify: Missing file argument.所以我尝试了

texify --pdf --texinfo="\AtBeginDocument{\pagestyle{empty}}\input{testfile.tex}" testfile.tex

(是的,该文件被调用了两次)。令人惊讶的是没有错误,但仍然没有成功。但还有另一个可能的参数(参见http://docs.miktex.org/manual/texify.html--tex-option,通过这个替换,--texinfo我发现……

解决方案

如果一个简单的 PDFLaTeX 调用如下(*)确实不够,人们想调用 Texify,这个命令提示符调用有效:

texify --pdf --tex-option="\AtBeginDocument{\pagestyle{empty}}\input{testfile.tex}" testfile.tex

再说一遍:是的,这里故意调用了两次该文件。

因为这很长,所以可以将其放入批处理文件中,然后稍后调用它。

test.bat

@echo 关闭

texify --pdf --tex-option="\AtBeginDocument{\pagestyle{empty}}\input{%1}" %1

现在在命令提示符中必须执行:

test.bat testfile.tex

至少在这里,这种方式效果很好。


顺便说一句:感谢 Werner,因为他\AtBeginDocument…他的评论对于重复的问题。

相关内容