LoginSignup
17
12

More than 1 year has passed since last update.

LaTeXで(robustに)赤打ち消し線を入れる

Last updated at Posted at 2020-12-23

はじめに

論文校正に使う
kouiuyatsu.png
を$\LaTeX$でどうやって実現するかという話です. Markdown記法で書こうとしたらうまくできませんでした

なお参考にしたsiteからcodeを持ってきていますが, 比較のためcommand名を改変しています.

なぜそうなるのかを理解せずにとりあえず動くからヨシ!で書いているため, 問題のある書き方になっているかもしれません.

コピペ用結論

\usepackage{ulem}
\usepackage{xcolor}
\DeclareRobustCommand{\erase}{\bgroup\markoverwith{\textcolor{red}{\rule[.5ex]{2pt}{0.4pt}}}\ULon}
\newcommand{\add}[1]{\textcolor{blue}{#1}}

でdocument環境内で

\erase{こういうやつ}

という使い方をします.

なお\addは校正の際に加筆部を青色にすることがあるのでそのためのおまけです.

以下ではなぜこのような定義になったのか解説します.

経緯とか

そもそもulemsoutあったやん?

\usepackage{ulem}して\sout{こういうやつ}すれば打ち消し線が表示されます. こういうやつ.
単に黒色の打ち消し線が引きたければこれで十分です.
これを赤色にしたいと思うとやや面倒でした.

\textcolor\soutを組み合わせればええやん?

ここには

%改行されない
\newcommand{\erase}[1]{\textcolor{red}{\sout{\textcolor{black}{#1}}}}

すればよいと書いてありました. 一見問題ないのですが, 改行されなくなってしまいました1.

kouiuyatsu1.png

\soutの代わりを自分で定義すればええやん?

ulem.styは自分で\soutのようなcommandを自分で定義できるようになっています.
この機能を利用してここに書いてあるように定義すれば改行されるようになりました.

%改行される
%\captionや\section内では使えない
\newcommand\erase{\bgroup\markoverwith{\textcolor{red}{\rule[.5ex]{2pt}{0.4pt}}}\ULon}

\protect\DeclareRobustCommandを使う(終わり)

\protect\erase{こういうやつ}

こうするとcaption内でも動作します.

ただ毎回\protect\erase{こういうやつ}するのは面倒なので
ここを参考にして同様の効果が得られるようにしたものが最終的な定義です.

%最初と同じもの
\DeclareRobustCommand{\erase}{\bgroup\markoverwith{\textcolor{red}{\rule[.5ex]{2pt}{0.4pt}}}\ULon}

soul.styについて

上で参考にした2つ目のsiteにはsoul.styを使う方法も書いてあります.
一見簡単でいいのですが, 日本語や\citeと組み合わせると動かなくなったため使えませんでした.

\usepackage{soul,xcolor}
\begin{document}
\setstcolor{red}
\st{こういうやつ} %動かない
\end{document}

おまけ: BibTeXと一緒に使う場合

BibTeXでhyperlink付き文献listを作成するとき, 文献titleをhyperlink付きの斜体として記述することがあります.
BibTeXで出力される斜体の処理は\emphになるようですが, ulem.styも使っているとulem.styはdefaultで\emphを下線として処理します.
こうして発生した文献list中の下線が改行に失敗します.
この下線も改行するように奮闘するのも一つかもしれませんが, そもそもこれは意図しない下線ですので下線を引かれないようにすれば解決します.
\usepackage{ulem}の代わりに\usepackage[normalem]{ulem}とすることで\emphが下線として処理されなくなります.

\usepackage[normalem]{ulem}
\usepackage{xcolor}
\DeclareRobustCommand{\erase}{\bgroup\markoverwith{\textcolor{red}{\rule[.5ex]{2pt}{0.4pt}}}\ULon}
\newcommand{\add}[1]{\textcolor{blue}{#1}}

  1. 記事を書くためにbxjsarticleで日本語のsampleを作っていたら文字の色まで正しく表示されない不具合まで起きてしまいました...

  2. Shuntaro Sumita (@smiphys3141)さん, ありがとうございました.
    \protectを使うとcaption内でも使えることを教えてもらいました2

17
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
12