Re:VIEW Starterにおいて、長いURLを途中で自動的に改行したい。
詳しくはこちら
https://twitter.com/circleblowing/status/1297946704881184769
\seqsplit{...} を使うと単語の途中でも自動的に改行してくれる。
これを利用して、\url{...} を \href{...}{\texttt{\seqsplit{...}}} に置き換える。
ただし \url{} マクロを上書きするのは影響範囲が大きいので、かわりに myurl{} というマクロを定義する。
sty/mystyle.sty に以下を追加。
%% 長いURLを自動的に改行する
\newcommand{\myurl}[2]{%
  \href{#1}{\texttt{\seqsplit{#2}}}%
}review-ext.rb に以下を追加。
module ReVIEW
  class LATEXBuilder
    ## ===== ここから =====
    def _inline_hyperlink(url, escaped_label, flag_footnote)
      if /\A[a-z]+:/ !~ url
        "\\ref{#{url}}"
      elsif ! escaped_label.present?
        #"\\url{#{escape_url(url)}}"
        "\\myurl{#{escape_url(url)}}{#{escape(url)}}"
      elsif ! flag_footnote
        "\\href{#{escape_url(url)}}{#{escaped_label}}"
      elsif within_context?(:footnote)
        #"#{escaped_label}(\\url{#{escape_url(url)}})"
        "#{escaped_label}(\\myurl{#{escape_url(url)}}{#{escape(url)}})"
      else
        #"#{escaped_label}\\footnote{\\url{#{escape_url(url)}}}"
        "#{escaped_label}\\footnote{\\myurl{#{escape_url(url)}}{#{escape(url)}}}"
      end
    end
    private :_inline_hyperlink
    ## ===== ここまで =====
  end
end以下の方法では、URLに _ や . が含まれるとLaTeXのコンパイルエラーになる。
理由は、URL と LaTeX ではエスケープする文字が違うから。
(例:_ は、LaTeX 中ではエスケープする必要があるが、URL 中ではエスケープしてはならない。)
sty/mystyle.sty に以下を追加。
%% 長いURLを自動的に改行する
\newcommand{\myurl}[1]{%
  %\url{#1}%
  \href{#1}{\texttt{\seqsplit{#1}}}%
}review-ext.rb に以下を追加。
module ReVIEW
  class LATEXBuilder
    ## ===== ここから =====
    alias __inline_hyperlink _inline_hyperlink
    def _inline_hyperlink(*args)
      s = __inline_hyperlink(*args)
      return s.gsub(/\\url\{/, '\\myurl{')  # マクロ名をすり替える(`\url{}` → `\myurl{}`)
    end
    ## ===== ここまで =====
  end
endRe:VIEW Staretr本体に取り込むかは未定。