はじめに
論文校正に使う
を$\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
は校正の際に加筆部を青色にすることがあるのでそのためのおまけです.
以下ではなぜこのような定義になったのか解説します.
経緯とか
そもそもulem
にsout
あったやん?
\usepackage{ulem}
して\sout{こういうやつ}
すれば打ち消し線が表示されます. こういうやつ.
単に黒色の打ち消し線が引きたければこれで十分です.
これを赤色にしたいと思うとやや面倒でした.
\textcolor
と\sout
を組み合わせればええやん?
ここには
%改行されない
\newcommand{\erase}[1]{\textcolor{red}{\sout{\textcolor{black}{#1}}}}
すればよいと書いてありました. 一見問題ないのですが, 改行されなくなってしまいました1.
\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}}