Предотвратить Matlab от записи CreationDate в файл eps - PullRequest
4 голосов
/ 30 июня 2011

Я использую matlab для записи фигур в виде файлов eps для использования в LaTeX, используя:

print( '-depsc', 'filename.eps');

и я храню эти eps-файлы в контроле версий. Поскольку я генерирую сразу много фигур, но меняю только одну или две, часто единственное изменение в конкретном файле eps:

-%%CreationDate: 06/29/2011  17:52:57
+%%CreationDate: 06/30/2011  19:18:03

, которая не является ценной информацией. Есть ли способ остановить Matlab от записи CreationDate?

Грязные решения приветствуются ...

1 Ответ

4 голосов
/ 30 июня 2011

Одним из решений является полное удаление этой строки и использование файловой системы для отслеживания даты создания / изменения. Это можно сделать разными способами, используя обычные инструменты оболочки:

# sed
sed -i file.eps '/^%%CreationDate: /d'

или

# grep
grep -v '^%%CreationDate: ' file.eps > tmp && mv tmp file.eps

Если вы работаете на Windows, в MATLAB должен быть включен интерпретатор Perl:

# perl
perl -i -ne 'print if not /^%%CreationDate: /' file.eps

Внутри MATLAB вы можете сделать следующее для вызова однострочной Perl-программы:

%# construct command, arguments and input filename (with quotes to escape spaces)
cmd = ['"' fullfile(matlabroot, 'sys\perl\win32\bin\perl.exe') '"'];
args = ' -i.bak -ne "print if not /^%%CreationDate: /" ';
fname = ['"' fullfile(pwd,'file.eps') '"'];

%# execute command
system([cmd args fname])
...