我正在用 LaTeX 写一篇学期论文,其中包含一些使用外部工具创建的图表。这些图表有位图和矢量格式。当然,理想情况下我想使用矢量版本,但这些版本相当大(每个版本高达 40 MiB),如果我包含这些版本而不是位图版本,那么论文的最终 PDF 将远远超过 100 MiB。
这本身不是问题。但是,我必须以纸质和电子形式(通过电子邮件)提交论文,而通过电子邮件发送如此大的文件可能会有问题。因此,我想知道是否有一种简单的(!)方法可以从同一个 TeX 文件生成两个版本的论文,一个用于打印(使用矢量图形),一个用于通过电子邮件发送(“网络版本”,使用位图图形)。TeX 文件已经准备好了,我只需要“拨动开关”即可生成任一版本,但我无法同时生成两个版本,并使用不同的名称。
我想避免使用 makefile 等;我的工作流程基于 Windows 上的 TeXstudio,因此纯 TeX(当然,LaTeX 也可以)是最好的。我看过\input
和\include
,但我想知道是否有任何技巧或最佳当前实践,理想情况下,我只需要运行xelatex termpaper.tex
左右即可获得termpaper-web.pdf
和termpaper-print.pdf
。
对于这个相对开放的问题,我深表歉意。提前致谢!
答案1
您可以尝试这样的方法。
\newcommand{\printversion}[1]{
\includegraphics[width=whatever]{#1.bmp}
}
\renewcommand{\printversion}[1]{
\includegraphics[width=whatever]{#1.pdf}
}
然后,无论您想将文件包含在哪里,您都可以调用\printversion{filename_without_extension}
它,它会打印其中之一。\renewcommand
如果您想使用 bmp,只需注释掉它,或者保留它以使用 pdf。
您需要将矢量图形从 SVG 转换为 PDF。如果您愿意付出所有努力,您可以安装 inkscape 并使用它\usepackage{SVG}
自动将 SVG 转换为 pdf,但设置过程有点麻烦。如果您只有少量图形,我建议您首先使用您制作 SVG 时使用的任何工具手动完成。
编辑:
寻找一个更漂亮的解决方案,你可以将其嵌套到 if 语句中,例如
\newif\ifvectors%name of conditional is 'vectors' appended to 'if'
\vectorsfalse%the conditional 'vectors' to 'false' or 'true'
\ifvectors
\def\printext{.pdf}
\else
\def\printext{.bmp}
\fi
\newcommand{\printversion}[1]{
\includegraphics[width=whatever]{#1\printext}
}