고무를 사용하여 git 커밋 정보 생성(LaTeX, Debian에 적용 가능)

고무를 사용하여 git 커밋 정보 생성(LaTeX, Debian에 적용 가능)

나는 사용하고있다지우개Debian/Sid/Linux에서 ( pdflatex호출을 통해) LaTeX 문서를 처리하기 위한 프로그램(Python, Lauchpad) rubber -d(문서는 일부 H2020 유럽 R&D 제안서입니다). 나는 이 패키지의 버전 1.4-2를 가지고 있습니다 rubber.

LaTeX 문서 및 해당 디렉토리의 버전 사용자식.

생성된 PDF 파일에 해당 ID를 표시할 수 있도록 현재 git 커밋 ID를 제공하는 LaTeX 명령이 필요합니다.

터미널에서 다음 쉘 명령을 실행할 때:

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아무 것도 변경되지 않습니다.

아니면 데비안에서 정보(커밋 ID)를 생성하는 데 사용할 수 있는 LaTeX 패키지를 알고 계십니까 git?

또한 질문발사대&정족수

관련 정보