!config # Arara, the cool TeX automation tool # Copyright (c) 2023, Island of TeX # All rights reserved. # # This rule is part of arara. identifier: pdfcrop name: PDFCrop authors: - Island of TeX commands: - name: The cropping tool command: > @{ base = getBasename(reference.fileName); input = base.concat('.pdf'); return getCommand('pdfcrop', verbose, debug, engine, margins, clip, hires, ini, restricted, papersize, resolution, bbox, uncompress, options, input, output); } arguments: - identifier: output flag: > @{ return isEmpty(parameters.output, getBasename(reference.fileName). concat('-crop.pdf'), parameters.output); } default: '' - identifier: verbose flag: > @{ return isTrue(parameters.verbose, '--verbose', '--noverbose'); } - identifier: debug flag: > @{ return isTrue(parameters.debug, '--debug', '--nodebug'); } - identifier: engine flag: > @{ engines = [ 'pdftex', 'xetex', 'luatex' ]; if (engines.contains(parameters.engine)) { return '--'.concat(parameters.engine); } else { throwError('The provided engine is invalid.'); } } - identifier: margins flag: > @{ if (isList(parameters.margins)) { if (parameters.margins.size() != 4) { throwError('Margins require 4 elements.'); } else { ms = []; foreach (m : parameters.margins) ms.add(m.toString()); return [ '--margins', String.join(' ', ms) ]; } } else { throwError('I was expecting a list.'); } } - identifier: clip flag: > @{ return isTrue(parameters.clip, '--clip', '--noclip'); } - identifier: hires flag: > @{ return isTrue(parameters.hires, '--hires', '--nohires'); } - identifier: ini flag: > @{ return isTrue(parameters.ini, '--ini', '--noini'); } - identifier: restricted flag: > @{ return isTrue(parameters.restricted, '--restricted'); } - identifier: papersize flag: > @{ return [ '--papersize', parameters.papersize ]; } - identifier: resolution flag: > @{ return [ '--resolution', parameters.resolution ]; } - identifier: bbox flag: > @{ if (isList(parameters.bbox)) { if (parameters.bbox.size() != 4) { throwError('Bounding box require 4 elements.'); } else { ms = []; foreach (m : parameters.bbox) ms.add(m.toString()); return [ '--margins', String.join(' ', ms) ]; } } else { throwError('I was expecting a list.'); } } - identifier: uncompress flag: > @{ return isTrue(parameters.uncompress, '--uncompress'); } - identifier: options flag: > @{ if (isList(parameters.options)) { return parameters.options; } else { throwError('I was expecting a list of options.'); } }