Copy link to clipboard
Copied
こんにちは
いつもお世話になっております
連続投稿すみません。
DTP業務で、日本語.fmデータ → XML → 翻訳ツール → XML → 英語.fmデータの工程で英文マニュアルを作成しています。
その際にTable困ったことがあって、ここに投稿させていただきました。
困りごとと言うのは添付ファイルのように日本語はテキスト数が少ないが、英文に翻訳されるとテキスト数が多くなり、Table内のテキストが行送りされてしまいます。
取引先に納品する際に、何百ページあるものをすべて目で確認して、行送りされている箇所があれば、表の列幅を広がて単語が行送りされないようにしています。(何十時間もかかっています)
そこでお聞きしたいのですが、行送りされたものを強調表示させる既存機能はないでしょうか
よろしくお願いします
Copy link to clipboard
Copied
Hi -. You can work with the tightness of word hyphenation in the paragraph designer. Have you changed the language settings to English in the translated text?
Copy link to clipboard
Copied
こんにちは。
ご返事ありがとうございます。
フォントの言語は「英語」になっています。
また、取引先のルールでハイフネーションは、禁止せれているので、単語で行送りされたものを一つ一つ探しているのが現状です。
列幅が狭く、スペースで区切れない単語が添付の黄色マーカーのようになるのだと理解しています。
スペースの無い行を探すスクリプトは実現できますでしょうか?
Copy link to clipboard
Copied
I widen the column width of the table...
By @geso10
If that is the solution, you can select a problem column and choose Table > Resize Columns > To the Width of Selected Cell's Contents. You only shared one example, but noted this happens quite a bit. @frameexpert has a script that can apply this to multiple tables at one time—see Table Cleaner here: https://www.frameexpert.com/store/index.html.
If this script doesn't do what you want, Rick may be able to write a custom script for you.
~Barb
Copy link to clipboard
Copied
こんにちは
いつもお世話になっています
ありがとうございます
ご紹介いただいたhttps://www.frameexpert.com/store/index.html.を確認させていただきましたが、少し用途が違うようです。
やっぱり、単語の行送りのみを強調表示するようなことは難しいのでしょうか
Copy link to clipboard
Copied
Hi @geso10:
Rick's (@frameexpert) targets the column widths and not the word break issue. Since you mentioned that you are looking for the word break problem and then widening the columns to fix it, I suggested the script.
However, I'm now questioning my suggestion because it will make the columns wide enough for the longest entry to fit on one line and not just wide enough to keep the word from breaking in the wrong place.
~Barb
Copy link to clipboard
Copied
こんにちは。
ご提案いただきありがとうございます。
行送りされている箇所を特定することに特化したものがないかご相談したかったです。
Copy link to clipboard
Copied
こんにちは
調べるドキュメントを開いた状態で次のスクリプトを実行してみてください。
単語が分割されたとみなせるセルを赤色にします。
実行直後は色が反映されないので、CTRL+Lでリフレッシュしてください。
それではよい週末を!
var docObj = app.ActiveDoc;
var flow = docObj.MainFlowInDoc;
var tblAnchors = flow.GetText (Constants.FTI_TblAnchor);
for (var i=0;i<tblAnchors.length;i++){
var tbl = tblAnchors[i].obj;
var row = tbl.FirstRowInTbl;
var cell = row.FirstCellInRow;
while (cell.ObjectValid()){
var flag = false;
var pgf = cell.FirstPgf;
while (pgf.ObjectValid()){
var textItems = pgf.GetText (Constants.FTI_String);
for (var j=0;j<textItems.length-1;j++){
// セル内の行末がスペースかスラッシュで終わっているか、正規表現でチェックする
//正規表現は行末に入ってもエラーとしない文字です。必要に応じて書き換えてください
var r = textItems[j].sdata.match (/[\s\/]$/);
if (r==null){
flag = true;
break;
}
}
if (pgf.Unique == cell.LastPgf.Unique){
break;
}
pgf = pgf.NextPgfInFlow;
}
if (flag){
//行末にスペースかスラッシュを含まない段落があるセルの色を赤にする
//色名は必要に応じて書き換えてください
cell.CellOverrideShading = docObj.GetNamedColor ("赤");
cell.CellUseOverrideShading = true;
cell.CellOverrideFill = Constants.FV_FILL_BLACK;
cell.CellUseOverrideFill = true;
}
cell = cell.NextCellInTbl;
}
}
Copy link to clipboard
Copied
yataniさん
こんにちは。
先日は、イラスト名常駐スクリプトありがとうございました。
今回は、半ば諦めていたところスクリプトをご提供いただきありがとうございます。
来週実施してみたいと思います。
重ねてになりますがありがとうございました。
Copy link to clipboard
Copied
yataniさん
本日、ご提供いただいたスクリプトを実行してみました。
ご提供いただいた分際で恐縮ですが、赤色の強調表示されませんでした。
知識がなくコードを解読することが中々できなくて、、、、スミマセン。
セル内に一つの段落があり、その段落が何行かに行送りされた中に、単語が泣き別れていた場合にその段落が赤色になる(ctrl+L)ってことスクリプトであっていますか?
すみませんがご確認のほどよろしくお願いします。
Copy link to clipboard
Copied
こちらで実行したサンプルは下記のようになります。
手順は
1. ドキュメントを開く
2. スクリプトを実行する
3. Ctrl+Lを押す
4. 赤くなったセルを確認する
となります。
差支えない内容のスクリーンショットを見せていただくことは可能でしょうか?
Copy link to clipboard
Copied
スクリプトの終了時にセルの色を何か所変更したかを表示するようにしました。
また、全体を処理内容ごとに分割して各行にコメントを入れました。
こちらのスクリプトを実行した後に、セルの変更箇所が0以上にもかかわらず「赤」色のセルが見つからない場合、ドキュメントに「赤」色が設定されていない可能性があります。(英語版を使用している場合など)その際はスクリプトの途中に「// セルの色を赤に設定」とコメントを入れている部分の「赤」を「Red」などに変更してお試しください。
var docObj = app.ActiveDoc; // アクティブなドキュメントを取得
var flow = docObj.MainFlowInDoc; // ドキュメントのメインフローを取得
var tblAnchors = flow.GetText(Constants.FTI_TblAnchor); // テーブルアンカーを取得
var redCellCount = 0; // 赤色にしたセルのカウント
// セルを処理する関数
function processCell(cell) {
var flag = false;
var pgf = cell.FirstPgf; // セル内の最初の段落を取得
// 段落を順に処理
while (pgf.ObjectValid()) {
var textItems = pgf.GetText(Constants.FTI_String); // 段落内のテキストアイテムを取得
for (var j = 0; j < textItems.length - 1; j++) {
var r = textItems[j].sdata.match(/[\s\/]$/); // 行末がスペースかスラッシュかを正規表現でチェック
if (r == null) {
flag = true; // 該当しない場合フラグを立てる
break;
}
}
if (pgf.Unique == cell.LastPgf.Unique) {
break; // 最後の段落に到達したらループを抜ける
}
pgf = pgf.NextPgfInFlow; // 次の段落へ移動
}
if (flag) {
colorCellRed(cell); // 条件を満たす場合、セルの色を赤にする
redCellCount++; // 赤色にしたセルのカウントを増加
}
}
// セルの色を赤にする関数
function colorCellRed(cell) {
cell.CellOverrideShading = docObj.GetNamedColor("赤"); // セルの色を赤に設定
cell.CellUseOverrideShading = true; // オーバーライドシェーディングを使用
cell.CellOverrideFill = Constants.FV_FILL_BLACK; // セルの塗りつぶし色を設定
cell.CellUseOverrideFill = true; // オーバーライド塗りつぶしを使用
}
// テーブルアンカーを順に処理
for (var i = 0; i < tblAnchors.length; i++) {
var tbl = tblAnchors[i].obj; // テーブルオブジェクトを取得
var row = tbl.FirstRowInTbl; // テーブルの最初の行を取得
var cell = row.FirstCellInRow; // 行の最初のセルを取得
// 各セルを順に処理
while (cell.ObjectValid()) {
processCell(cell); // セルを処理する関数を呼び出す
cell = cell.NextCellInTbl; // 次のセルへ移動
}
}
alert("Number of cells colored red: " + redCellCount); // 赤色にしたセルの数を表示
Copy link to clipboard
Copied
yataniさん
こんにちは。
カウンター付きスクリプトありがとうございます。
試したところカウントはされたんですが、セル色に変化が現れませんでした。
明日自分のFMの設定と照らし合わせながら色々確認していきたいと思っています。
また、ご報告させていただきます。
本当にありがとうございます。尊敬します。
Copy link to clipboard
Copied
yataniさん
お世話になっております。
カウンター付きスクリプトを試してみました。
セルが赤色にならなかったので色々試したみた結果をご報告いたします。
先ず、表テンプレの塗り仕様は添付の通りです。
一度、本文の塗りを「なし」から「100%」に変更して、カラーは適当に色を付けてスクリプトを実行してみました。
そしたら、単語が行送りされているセルが逆に白色になりました(原因がわかりません)
また、表内文章内に「AsteriskReference」「変数」が混ぜっている表セルも白色になりました。
以上が試してみた結果です。
ホント、ど素人丸出しで申し訳ありませんが現状こんな感じになりました。
上記の情報だけで、手順通りに実施してセル色が赤色にならない原因はわかりますでしょうか
スミマセンがお力添えをお願いいたします。
Copy link to clipboard
Copied
色が変わらないのは、おそらくドキュメントに「赤」色が設定されていないためだと思います。パレットの「カラー:」にリストアップされる色の中から任意のものを選び、スクリプトで”赤”としている部分をその色名に変更してみてください。(添付のスクリーンショットを参照してください。)
また、変数が混ざっている、途中で文字書式が変更されている、フォントが変更されている場合など、細かい仕様についてはこのスクリプトでは対応できませんので、そのような部分でセルの色が変わった場合は、お手数ですが手動で元にもどしていただけますでしょうか。よろしくお願いします。
Copy link to clipboard
Copied
yataniさん
お世話になっております。
手動で実施の件、承知しました。
確認作業が凄く楽になりました。
色々とありがとうございました。