-
Notifications
You must be signed in to change notification settings - Fork 215
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[bug] 箇条書きで複数行の英単語が連結されてしまう #1312
Comments
これは日本語の文で、改行が空白に変換されて微妙な空白が入るのを撲滅するための仕様なんですよね…。回避策としては「1行に書く」「単語の末尾に空白を開ける」といったものがあります。 ちなみに、
を、
と書きたくなかった理由は何でしょうか? (Re:VIEW側で解決するには文字種で場合分けして空白を入れるか入れないか決めるとか? Unicode Technical Reportとかで連結してはいけない文字・連結するべき文字とか決まっていたりしないんだろうか…) |
単純にLaTeXだけの処理であれば、ul_item, ol_itemを
↓
でいけそうではあります(linesはここにくる時点ですでにstripされているはず)。 LaTeXビルダは本文のほうはもともとこういう形でしたね。 ただ、ほかのビルダではそのような判断は現状できないので、すべて単純に1段落を1行に結合しています。後続行の文字を見て連結するとしても、そこにインラインタグが入っていたときの処理など、悩ましい問題です。 |
この回避策がありなら、日本語の場合でも「改行が空白に変換されて微妙な空白を入れたくなければ1行に書いてください」と案内すればよくて、わざわざRe:VIEWが改行文字を取り除く必要はないのでは?
単に、英語の文章を書いただけですけど…。
表示結果: 英語の文章を書くのに理由が必要でしょうか。
改行文字を取り除きたいならpLaTeXと同様でいいと思いますが。少なくとも英文を書いたら単語が結合されるのは仕様としてどうかと思いました。 |
判断できないなら改行を取り除くべきではないのでは?
改行文字を取り除くなら、pLaTeXと同じでいいと思います。 そんなに悩むようなことなんですか、これ。 |
箇条書きではなく通常の本文であれば、改行文字は取り除かれないようです。 例:
LaTeX変換結果 \chapter{Re:VIEWサンプル}
\label{chap:mybook}
新しい御代の幕開けに心からお祝い申し上げます。
『令和』が日本の国に平和と繁栄をもたらす
祝福された時代となるよう祈念致しております。
Congratulations on the beginning of the
new era! We hope 令和 will be blessed
with peace and prosperity for everyone
in Japan. (Tim Cook) 改行によって微妙な空白が入るのを防ぐなら、本文もそうすべきですよね。 |
本題のほうはul/olで ワープロ的な書き方をしたとしても1行1段落というDTPソフトに適したテキストファイルにするというのが大元の趣旨なので、改行を取り除くことは必要な処理です。それは現状も変わっていないです。 ASCII範囲でよいかどうかは微妙(英字のみ? Unicode的にほかにアルファベット扱いのものがありそう?)なのと、先頭にインラインタグがあったときのその掘り下げがあるので、「そんなに悩むこと」です。調査しきれていませんが、TeXも実際には単にASCII範囲ではなく文字の分類を内部設定しているはずです。 LaTeXビルダでの「本文もそうすべき」は一貫性からは確かにそうすべきです(ほかのビルダはそうなっている)。が、それは求められていることではないでしょうし、将来的にTeX的な行結合のロジックを実装してそれでLaTeX以外のビルダの段落・箇条書きのほうの処理を担うようにする、ことを検討します。 |
わかる〜、という気持ちになったので、この仕様については先送りにしていたのですが、ちょっと前向きに対応してみようかと思いました。UTR読みこんでみます。 たぶん https://unicode.org/reports/tr29/#Word_Boundary_Rules の逆を考えればよいような気がする…。
確かに。じゃあ3.xでも修正してしまってよい? |
ちなみに、
と聞いたのは、何か特殊な事情があるならそれを回避できるようにしないと…と思っただけです。 |
英文が入ったときにつらいのはわかるので、実装ができるといいですね。 |
#1312 (comment) のtwitterのスレッドを見ましたが、どちらかというとwhite spaceの扱いよりは、line breakingとword separatorの扱いの仕様を元に考えた方がよいかも、と思いました。
そして、上記をなんとなく眺めた限りでは、とりあえず改行の前後がひらがな・カタカナ・漢字の場合(JapaneseとChinese)は改行を無視して、それ以外は改行を活かすかU+0020にする、くらいが妥当かなあ…という気がしています(modern Hangulにはword separatorがあるのでそこで改行しそう。あとKhmer、Lao、Thai辺りは困ったときに再考したい)。 |
テキストやIDGXMLのほうは改行を活かされても困る(1行1段落にすべき)ので、やはりスペースを追加するにはどうするか?という話になるような。 |
なるほど、その場合は機械的に改行をU+0020にする、とかではないでしょうか。 |
U+200Bにすることはないですね。あくまでU+0020を入れるか入れないか程度の処理に済ませたい…。
あとはSegment Break Transformation Rulesで定義されている「punctuation or a symbol (Unicode general category P* or S*)」もかな。
とか? |
だから、改行を取り除くことは英単語が勝手に結合されることより優先すべきことですかと聞いているんですけど?Yes/Noで答えられる質問ですよ。 #InDesignで処理するには英単語の結合が必要だなんて、初耳です。いやー知らなかった。
先に引用した美文書作成入門では、「行の最後が日本語文字なら改行を無視する」とあります。ASCII範囲も先頭のインラインタグも関係しません。関係しないことを持ち出して、なんでそんなに悩むのか分かりません。 せっかく参考となる文章を探して引用したのに、見てもらえてないようで残念です。
そんな調査いります? 話をおおげさにしすぎ。 |
「バグか否か」「どのように実装するか」の判断は開発陣がつけるものであり、”あなた”が判断するものではありません。今後もあなたの考える「解決方法」がそのように実装されることもなんら保証されません。
Yes。 ただそれを正したところで英単語で困るだけというのは理解しているので、全ビルダ共通の妥当な行結合の実装を考える、というだけです。 |
いやまあ、そこまで言いきらなくてもよいかと。 「英単語」というのは混乱しがちなので(英文にも絵文字が入ったりする時代なので)、ASCIIのprintableの範囲内については改行を落としても連結されないよう、全ビルダで対応する、という感じにしたいです。 |
https://github.com/takahashim/unicode-eaw |
ありがとうございます、拝見してました。コア機能になると思うのでgem経由取り込みにしたくないところですが、内包しちゃってもよさそうです?(ライセンス的に困る?) |
はい、内包するのは問題ないです。 |
箇条書きにおいて、複数行の英単語が連結されてしまう。
再現例:3行に分かれた箇条書き(3つの英単語)
LaTeXへの変換結果(Re:VIEW 3.1):
期待した変換結果(英単語が連結されない):
環境:Re:VIEW 3.1、Ruby 2.5、macOS Mojave (10.14.5)
The text was updated successfully, but these errors were encountered: