我正在使用橡皮程序(Python,来自 Lauchpad)在 Debian/Sid/Linux 上处理 LaTeX 文档(通过pdflatex
调用rubber -d
)(该文档是一些 H2020 欧洲研发提案)。我有该软件包的 1.4-2 版本rubber
。
LaTeX 文档及其目录的版本使用git。
我想要一个 LaTeX 命令,它给出当前的 git commit id,以便能够在生成的 PDF 文件中显示该 id。
当我在终端中运行以下 shell 命令时:
printf '\\newcommand{\\cgitcommitid}{%s}\n' $(git log --format=oneline --abbrev=16 --abbrev-commit -q | cut '-d ' -f1 | head -1)
它给了我预期的输出:
\newcommand{\cgitcommitid}{99ad2f058a5c06d8}
所以我想在某些情况下生成它cgit-gitcommitid.tex
生成的文件。
我有以下cgit-rubber-rules.ini
文件:
; This is our extra rules cgit-rubber-rules.ini file for Rubber
; Rubber is a LaTeX driver in Python
; see https://launchpad.net/rubber
;; SVG figures produced by InkScape (see http://inkscape.org/ for more)
;; convert to PDF
[cgit-inkscape-svg-to-pdf]
target = (.*)\.pdf
source = \1.svg
cost = 4
rule = shell
command = inkscape --without-gui --export-pdf=$target $source
;; convert to EPS
[cgit-inkscape-svg-to-eps]
target = (.*)\.eps
source = \1.svg
cost = 4
rule = shell
command = inkscape --without-gui --export-eps=$target $source
[cgit-gitcommitid-make]
target = cgit-gitcommitid\.tex
;source = \.git
cost = 3
rule = shell
command = printf '\\newcommand{\\cgitcommitid}{%s}\n' $(git log --format=oneline --abbrev=16 --abbrev-commit -q | cut '-d ' -f1 | head -1) > cgit-gitcommitid.tex
我的cgitprop.tex
主要 LaTeX 文件有:
% file cgitprop.tex
\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{array}
\usepackage{geometry}
\usepackage[pdftex]{graphicx}
\usepackage[usenames,dvipsnames,svgnames]{xcolor}
\usepackage{svg}
\usepackage{ifpdf}
\usepackage{wasysym}
\usepackage{multirow}
\usepackage{hyperref}
\usepackage{float}
\usepackage{eurosym}
\usepackage{longtable}
\usepackage{fancyhdr}
\usepackage{relsize}
\usepackage{textcomp}
\usepackage{alltt}
\usepackage{marginnote}
% rubber: module pdftex
% rubber: module graphics
% rubber: rules cgit-rubber-rules.ini
% rubber: clean cgit-gitcommitid.tex
% rubber: make cgit-gitcommitid.tex with cgit-gitcommitid-make from .git
% rubber: watch cgit-gitcommitid.tex
\input{cgit-gitcommitid}
但是当我运行 rubber -v -v -d cgitprop
该cgit-gitcommitid.tex
文件时不是生成:
rubber -v -v -d cgitprop
This is Rubber version 1.4.
[latex] directive: module pdftex
[latex] built-in module pdftex registered
[latex] parsing /ssdhome/basile/CGIT2017FET/cgitprop.tex
[latex] script module article registered
[latex] built-in module graphicx registered
[latex] directive: produce cgitprop.out cgitprop.brf
[latex] directive: watch cgitprop.out
[latex] script module hyperref registered
[latex] directive: module pdftex
[latex] directive: module graphics
[latex] built-in module graphics registered
[latex] directive: rules cgit-rubber-rules.ini
[latex] directive: clean cgit-gitcommitid.tex
[latex] directive: make cgit-gitcommitid.tex with cgit-gitcommitid-make from .git
[latex] directive: watch cgit-gitcommitid.tex
然后
[leaf] 'cgit-gitcommitid.tex' does not exist
我究竟做错了什么?为什么没有cgit-gitcommitid.tex
正确生成?在我的文件中取消注释该;source = \.git
行 - 通过删除初始分号 -cgit-rubber-rules.ini
不会改变任何内容。
或者你知道 Debian 上有任何可用的 LaTeX 软件包来生成git
信息 - 提交 id - 吗?