一桁数字は全角が・・・

久しぶりにブログの更新・・・

Jedit Mac専用エディタの話
今回は私が使っている文字打ち専用のエディターの話です。
30年ほど前から、パソコンで、ただ文字を打ち込むので、何も考えないで文章に集中できる軽くて操作しやすいエディターが一番、そして豊富な機能です。
検索や置換、である形式を→ですます形式に一括変換したり、漢字をひらがなに変換したり、そんな機能を持ったエディターです。
Macを使っているのでJeditというエディターアプリを使っています。
半角スペース、全角スペース、タブなどのコントロール記号も表示してくれます。
又、ショートカットも豊富で、一時削除や次行スクロールなどは矢印キーを使わずに出来ます。アンドウ・リドゥなども無制限。
そして、スクリプトやソフトのソースも拡張子で判断してくれ自動色分けしてくれるので間違いが少なくてすみます。

変換機能では字種ごとに全角を半角に、また反対に変換してくれます。
正規表現を使っての変換置換もできるので、組み版前のテキストの成形にはもってこいのエディタです。

ワープロソフトや編集ソフトで文字打ちしている方は是非一度使ってみる価値はあります。

話は変わって・・・
文字打ちの規則で、数字の半角、全角は、昔は一桁数字は全角で、二桁以上は半角で入力するのが常識でした。
でも今はそんなことはお構いなし、すべて半角で打ってくるクライアントがいます。我々、印刷を携わっている側では、そのまま組み版すると、何となく体裁が悪く、文字が詰まって見えてしまいます。
一桁数字を全角にわざわざ修正して組み版しています。



特に名簿などの数字は1桁目が全角なら、きれいに見えます。

しかし・・・
あいにくJeditなどのエディターにはすべての数字を半角にする機能はあっても、一桁数字を全角にする機能はありません。
仕方なく、一つ一つ手作業になってしまします。

世の中、同じ苦労をしている人がいるもので、スクリプトで変換しています。
組み版ソフト上での変換でした。
私は、組み版前のテキスト整形での作業が主なので、スクリプトを使わず文字扱いの優れたPerl言語を使ってみました。

上の写真左はそのままイラレに流し込んだもの、右はいけた数字を全角数字に変換させたものです。


-------------------------------------------------------------------
ソースの公開をします。(少し古い)
下記ソースの後に、数字で囲まれたハイフンは全角ハイフンに変換するスクリプトも作製しました。現在そちらを主に使用してます。
ご希望者はメール下さい。

なお、下記ソースについては
参考にしたり、改変したり、自由にお使い下さい。
但し、自己責任でお願いします

開発環境
MacOSX12

This is perl 5, version 18, subversion 2 (v5.18.2) built for darwin-thread-multi-2level

下記行から

#!/usr/bin/perl

#######################################
#iketa-zen
#1桁の数字を全角に変更します。
############################### program by yuzo-itoh

use utf8;
use File::Basename;
use Jcode;
use Encode;
binmode STDOUT, ":utf8"; #必要

##### Start #####

#コマンドラインから
#1keta-zen in.txt txtのファイルを指示してあげると同じディレクトリにoutを作成する

#コマンドチェック
my $argv;

if(@ARGV == 0) { &prt_usage(); exit;}
if($ARGV[0] eq "help" || $ARGV[0] eq "HELP") { &prt_usage(); exit;}
if(!($ARGV[0] =~ /.txt$/i)) { &prt_usage(); exit;}

print ("\n*** START of 1keta-zen ***\n");

my $inPath = $ARGV[0];#ファイル名だけを取り出す
my($basename, $dirname, $ext) = fileparse($inPath, qr/\.[^\.]*$/);
my $outPath=$dirname . $basename."-out.txt";

if(!(open (IN, "<$inPath")))  {&err("** 入力ファイルが見つからなかった。 $inPath\n");}
if(!(open (OUT,">$outPath"))) {&err("** 出力ファイルが作れなかった。 $outPath\n");}

my @name_list=;
my $ct=0;

foreach my $str(@name_list){
$ct++;
$str = Encode::decode('utf8', $str);     # utf8フラグ ON
$str =~ s/\r\n//g;
$str =~ s/\r//g; #UNIX
$str =~ s/\n//g; #

my $cv_str=&cv_suuji($str);

print OUT encode('utf-8', $cv_str."\n");
}
close(IN);
close(OUT);

print("\n*** END of 1keta-zen (gyousuu=$ct) ***\n");


exit;

#数字文字列を渡す、1文字の場合全角で返す。2文字以上は半角で返す
sub cv_suuji{
my $str=$_[0];
my $dist_str="";

$str =~ tr/0-9/0-9/; #use utf-8するとtrできる

while($str =~ m/\d+/){ #マッチしたら
if(length($&) == 1){ #マッチした文字が1文字なら
my $wk_str=$&; #
$wk_str =~ tr/0-9/0-9/; #全角にする
$dist_str .= $`; #マッチ文字の前を保存
$dist_str .= $wk_str; #全角文字を保存
}
else{ #1文字でなければ
$dist_str .= $`; #マッチ前の文字を保存
$dist_str .= $&; #マッチ文字をそのまま保存
}
$str = $'; #マッチ後の文字列を検索文字に
} #すべての文字を検索終了
$dist_str .= $str; #検索文字の残りを保存
return $dist_str; #保存した文字列を返す
}

sub prt_usage{
my $doc =<< "DOC";
一桁の数字を全角に変換します。
一桁以上は半角にします。

1keta-zen

●使い方
 ターミナルを起動して
  1keta-zen 入力ファイル.txt とすると作成されて同ディレクトリに作られます

DOC

print "\n";
print "******************************************************\n";
print "  usage 1keta-zen inFile.txt \n";
print "******************************************************\n";
print $doc;
}

sub err{
my ($msg) =@_;
print "\n *ERROR* $msg";
exit;

}

以上です



感謝の心を込めて・・・ 伊東祐三(山梨県 樋口印刷内) JR1GDY Good HAM Life jr1gdy

コメント

このブログの人気の投稿

少なくなった印刷物を何とかしたい

本物の価値とスキャナ

Net返信はがき Reply Web System