Linux ip-172-26-7-228 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64
Your IP : 18.118.208.127
Current Path : /usr/bin/ |
| Current File : //usr/bin/tl-paper |
#!/usr/bin/perl
#
# tl-paper
#
# query and change paper settings using TLPaper
# this is independent from tlmgr
#
# Copyright 2011-2015 Norbert Preining
# This file is licensed under the GNU General Public License version 3
# or any later version.
#
BEGIN {
$^W = 1;
chomp ($mydir = `dirname $0`);
unshift (@INC, "/usr/share/texlive/tlpkg");
}
$^W = 1;
use strict;
use Cwd qw/abs_path/;
use Pod::Usage;
use Getopt::Long qw(:config no_autoabbrev permute);
use TeXLive::TLPaper;
# overwrite the default paper config settings
our %paper_config_name = (
"xdvi" => "XDvi-paper",
"pdftex" => "pdftexconfig.tex",
"dvips" => "config-paper.ps",
"dvipdfmx" => "dvipdfmx-paper.cfg",
"context" => "cont-sys-paper.tex",
);
binmode(STDOUT, ":utf8");
binmode(STDERR, ":utf8");
&main();
sub main {
# the script always runs in sys mode
chomp(my $texmfsysconfig = `kpsewhich -var-value=TEXMFSYSCONFIG`);
chomp(my $texmfsysvar = `kpsewhich -var-value=TEXMFSYSVAR`);
$ENV{"TEXMFCONFIG"} = $texmfsysconfig;
$ENV{"TEXMFVAR"} = $texmfsysvar;
my $action = shift @ARGV;
$action = "status" if !defined($action);
if ($action =~ m/^status$/i) { # "tl-paper status" shows the current settings
TeXLive::TLPaper::paper_all($texmfsysvar,undef);
} elsif ($action =~ m/^list$/i) { # "tl-paper list prg" lists options for prg
my $prg = shift @ARGV;
if (!$prg) {
# currently, pdftex has the most restricted set of paper sizes
$prg = "pdftex";
}
# the following actually also *reads* the configuration and returns
# a list where the first item is the one selected.
my $paperref = TeXLive::TLPaper::get_paper_list($prg);
my ($current_paper, @other_options) = @{$paperref};
for my $i ($current_paper, sort @other_options) {
print "$i\n";
}
# for simply getting the list of supported paper sizes without reading
# anything, one can use:
# my @paper_options = keys(%{${prg}_papersize});
} elsif ($action =~ m/^set$/i) { # "tl-paper set <prg|all> <paper>" sets paper
my $prg = shift @ARGV;
my $newpaper = shift @ARGV;
if ($prg !~ m/^(xdvi|pdftex|dvips|dvipdfmx|context|all)$/i) {
usage();
exit 1;
}
# set TEXMFVAR and TEXMFSYSVAR to TEXMFDIST (which is == TEXMFMAIN)
# so that we always find either the system provided config file
# as distributed in /usr/share/texlive/texmf-dist, or, if the
# admin decided to override that, a copy in TEXMFSYSCONFIG
# but *not* the one we have created at some point in history
# in TEXMF(SYS)VAR
chomp(my $texmfdist = `kpsewhich -var-value=TEXMFDIST`);
$ENV{"TEXMFVAR"} = $ENV{"TEXMFSYSVAR"} = $texmfdist;
if ($prg =~ m/^all$/i) {
if ($newpaper !~ /^(a4|letter)$/) {
# we cannot deal with that for now, only a4|letter supported for
# all programs
print "tl-paper: cannot change setting for all programs to $newpaper\n\n";
exit 1;
}
TeXLive::TLPaper::paper_all($texmfsysvar,$newpaper);
} else {
TeXLive::TLPaper::do_paper($prg,$texmfsysvar,$newpaper);
}
# we probably have changed the paper, so run the execute actions
# as announced by TLPaper, that is $::files_changed and
# $::regenerate_all_formats.
#
# but we do not do this here, but rely on the libpaper shell
# script to do the rest
} elsif ($action =~ m/^get$/i) { # "tl-paper get prg" gets paper setting for prg
my $prg = shift @ARGV;
if ($prg !~ m/^(xdvi|pdftex|dvips|dvipdfmx|context)$/i) {
usage();
exit 1;
}
my $paperref = TeXLive::TLPaper::get_paper_list($prg);
my ($current_paper, @other_options) = @{$paperref};
print "$current_paper\n" if defined($current_paper);
} else {
usage();
exit 1;
}
exit 0;
}
sub usage {
print STDERR "
tl-paper: inquire and set paper settings for various programs in the TeX World.
usage:
tl-paper list <program> lists available papers, current paper first
tl-paper status lists all current settings
tl-paper get <program> prints the current paper for <program>
tl-paper set <program> <newpaper> sets new paper for <program>
tl-paper set all <a4|letter> sets new paper for all programs
";
}
### Local Variables:
### perl-indent-level: 2
### tab-width: 2
### indent-tabs-mode: nil
### End:
# vim:set tabstop=2 expandtab: #
|