

最近RE:VIEWというツールを知って学習しているのですが、  
RE:VIEWでLINE風の会話を書きたいのですが、その記法がわかりません。  
どのような設定などが必要なのでしょうか？

使用している環境は、  
・Windows home  
・RE:VIEW 4.1.0


CC BY-SA 4.0
2020-03-09T10:42:14.657
63696
2020-03-09T14:37:00.767
2020-03-09T11:28:06.663
19110
31842
question
re-view
RE:VIEWでLINE風の会話を作りたい


> Re:VIEW is an easy-to-use digital publishing system for paper books and
> ebooks.

の[Re:VIEW](https://github.com/kmuto/review)のことで正しいでしょうか。何を学習されているかによって回答が変わりますが、単に「ツールとして使いたいがこれはできないのか」といった質問と仮定します。  
「LINE風の会話」として表現したいものがどういうものなのか掴みきれていませんが、「アイコンから吹き出しが出ている段が連続している」といった表現であると、他の方が作成されたCSS用の拡張を以前見たことがあります。  
<https://github.com/at-grandpa/review-and-css-
typesetting/blob/master/articles/review-ext.rb>  
これはat_grandpaさんが公開されている、HTMLとして出力する場合のHTMLとCSSの拡張ですね。Re:VIEWはRuby言語で書かれているので、機能を追加する場合もRubyで書くことになります。at_grandpaさんのブログ記事に使い方は一応載っています。  
<http://at-grandpa.hatenablog.jp/entry/2019/01/20/183940>  
このHTMLからPDFを作りたいといった方向で学習を進める場合「CSS組版」などのキーワードで検索をすると良いのではないでしょうか。

もしあまり時間的に余裕がなく、テキストで表現することにこだわりがない場合、ドローイングツールなどでSVGや高解像度画像として出力して貼り付けてしまうのも、ツールとの1つの付き合い方といえるでしょう。

以下、もう少し一般的にRe:VIEWやその周辺を学習する話です。  
簡易的、規則的なマークアップをHTMLやLaTeXといった複雑なマークアップへ変換することが主な責務となります。つまり、コミュニティや他の方がすでに用意したものでない場合、次のことをする必要があります。

  1. Re:VIEWのマークアップを拡張する（言語としてはRubyの文法は知っている必要があります）。
  2. HTMLやEPUBであればSVGやCSS、LaTeXであればTikZといった、2次元的な表現を行える言語で1.の変換後どうなるかを書く。

質問の課題の考え方としては、「画像を配置するブロック、文章を配置するブロックを横に並べ、それに装飾を行う」というのが基本的な構造になるでしょう。  
Re:VIEWマークアップの拡張としては上の記事のように画像と画像の配置、本文を指定するようにします。Re:VIEWの拡張方法のリファレンスとしては[1](https://github.com/kmuto/review)の公式リポジトリを見るのが一番でしょう。

LaTeXでの拡張はTikZを使って実現しようとした残骸が私の計算機に残っていたので一応載せておきます。前提事項を省いていますのでこのまま貼りつけても動かない上、コード自体あまり出来の良いものではなく無駄もありますが、とりあえず「異なる種類の言語を様々覚える必要がある」という雰囲気は伝わるかと思います。

[code]

    \usepackage[luatex]{graphicx}
    \usepackage{ifthen}
    \usepackage{tikz}
    \usepackage{ifthen}
    \usetikzlibrary{shapes.callouts, shapes.arrows, positioning}
    \usepackage{fancyvrb}
    \newlength{\SpeechCharacterWidth}
    \setlength{\SpeechCharacterWidth}{3cm}
    \newlength{\SpeechBoxWidth}
    \setlength{\SpeechBoxWidth}{\dimexpr\textwidth - 3cm -3cm\relax}
    \makeatletter
    \newsavebox{\SpeechBox}
    \newenvironment{speech}[2][]{%
    \def\@dir{#1}%
    \def\@imgPath{#2}%
    \begin{lrbox}{\SpeechBox}%
        \begin{minipage}{\SpeechBoxWidth}%
    }{%
        \end{minipage}%
    \end{lrbox}%
    \ifthenelse{\equal{r}{\@dir}}{\begin{flushright}}{\begin{flushleft}}
    \begin{tikzpicture}[remember picture,%
    speech/.style={draw=gray,rectangle callout,%
    rounded corners,inner sep=0.5cm, line width=1.5pt,minimum height=1em}]
    \ifthenelse{\equal{r}{\@dir}}{%
        \node[right](face) at (1,0){\includegraphics[width=\SpeechCharacterWidth] 
    {\@imgPath}};%
        \node[speech, callout absolute pointer={(face.west)},%
         left =0.5 of face](s){\usebox{\SpeechBox}};%
        \node[text width=3cm, left=of s]{};%
        }{%
        \node[left](face) at (0,0){\includegraphics[width=\SpeechCharacterWidth] 
       {\@imgPath}};%
        \node[speech, callout absolute pointer={(face.east)},%
        right =0.5 of face](s){\usebox{\SpeechBox}};%
        \node[text width=3cm, right=of s]{};%
        }
        \end{tikzpicture}
    \ifthenelse{\equal{r}{\@dir}}{\end{flushright}}{\end{flushleft}}
    }
    \makeatother
    
[/code]

発展的には、ページサイズを様々に変更した場合にどういった挙動にするのか（画像のスケールダウンと文章ブロックのスケールダウンは一緒だとみづらくなるでしょう）、会話が複数ページになるとき、見開きの場合とページ捲りがある場合をどうしようといったことや、吹き出し内の文章が数ページのときにどう表現するかなど、楽しい課題がたくさんあります。


CC BY-SA 4.0
2020-03-09T14:37:00.767
63704
2020-03-09T14:37:00.767
38146
63696
answer