EPS boundary box
Уже 5 лет мучаюсь с картинками в LaTeX. Которые в Matlab сгенерированы. Всегда приходиться подгонять итеративно.
Но вот понадобилось это сделать с сотней картинок. Пришлось разобраться - за пару часиков. Матлаб генерирует дебильные eps-ы - с неправильным bounding box-ом. Латех их потом неправильно в текст вставляет (много пустого места вокруг). Причём я смотрю по файлам, 2007 Матлаб генерировал нормальный eps-3, а уже 2009 - дерьмовый eps-2, причём с неправильным хедером.
Решение - пофиксить bounding box через epstool. Но эта утилита не хавает eps с неправильным хедером. Пришлось налабать программу быстренько (Немерле):
Utility.GetFiles(@"c:\folder-with-eps\",
true, false).Filter(_.EndsWith("eps")).Iter(fi
le => {
def text = File.ReadAllText(file); def header = "%!PS-Adobe-2.0"; def alreadyGood = "EPSF-"; // assert (text.StartsWith(header));
when (text.StartsWith(header) && !text.Substring(0, 300).Contains(alreadyGood)) {
def temp = "temp.eps"; File.WriteAllText(temp, text.Replace(header, "%!PS-Adobe-2.0 EPSF-2.0"));
File.Delete(file); RunShell(@"c:\Mathematics\epstool-3.08\b
in\epstool.exe", $"--copy --bbox $temp $file"); File.Delete(temp); }
});
Ну, профит типа. Ссылки помогшие:
http://online.redwoods.cc.ca.us/instruct/darnold/staffdev/Tips/tip10.pdfhttp://maverickranter.blogspot.nl/2009/11/fixing-eps-bounding-box-automatically.htmlhttp://www.instructables.com/id/How-to-Convert-PowerPoint-to-EPS-files/step4/Adjust-the-Size-of-your-EPS-file-Bounding-Box-Hac/http://pages.cs.wisc.edu/~ghost/gsview/epstool.htmhttp://www.ctan.org/tex-archive/support/ghostscript/ghostgumhttp://tex.stackexchange.com/questions/22792/why-does-my-eps-header-have-produced-by-xpdf-pdftops-3-02pl4http://www.mathworks.de/matlabcentral/fileexchange/18207 %
http://nibot-lab.livejournal.com/73290.html %