マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

スパマーに読まれない〈@〉を書く(BXmirageat パッケージ)

luamirageat パッケージ (前田一貴さん)

luamirageat パッケージは,LuaTeX 文書中のメールアドレスに spam 対策を施すためのパッケージです.

ほう。

確か最近の PDF 仕様にはこれを直接(フォント情報を介さずに)行う機能があったはず(PDF 仕様書検索中)……あった→「Replacement Text」。

これを使えば他のエンジンでも実現できるはず、というか既に誰か作ってないかな(ファイル検索中((TeX Live の .sty ファイルの中で「ActualText」が含まれているのを探しました。)))……あった→「accsupp パッケージ」。

というわけでひっそりと公開。

ドライバ依存なので、pdfTeX、XeTeX、LuaTeX 以外ではドライバ指定が必要。


\documentclass[a4paper]{article}
\usepackage[dvipdfmx]{bxmirageat} % dvipdfmx, dvips, pdftex のいずれか
\begin{document}
\begin{quote}\ttfamily
example@example.org\\ % 普通の〈@〉
example\mirageat example.org % 読めない〈@〉
\end{quote}
\end{document}

難しいことは全部 Oberdiek さん(acc-supp の作者)がやってくれているので、bxmirageat.sty の中身は実質これだけしかない。


\RequirePackageWithOptions{accsupp}
\DeclareRobustCommand\mirageat{%
\BeginAccSupp{method=hex,ActualText=20617420}%
@\EndAccSupp{}}


と思ったけど、この replacement text を用いた方法だと、コピペ以外では効力がないらしい。残念…。だけど、コピペが防げるから、こんな場合にはとっても便利!!


\documentclass[a4paper]{article}
\usepackage[dvipdfmx]{accsupp}
\newcommand\Data[2]{% #2 は UTF-16BE です!
\BeginAccSupp{method=hex,unicode,ActualText=#2}%
#1\,{$\mu$Sv/h}\EndAccSupp{}}
\begin{document}
\begin{tabular}{ccr}\hline
計測時間 & 計測場所 & γ線 \\\hline
午前2時00分 & 西門 & \Data{88.0}{5FAE91CF}\\\hline
午前3時00分 & 西門 & \Data{87.6}{50C5304B}\\\hline
午前4時00分 & 西門 & \Data{87.7}{5C113005}\\\hline
\end{tabular}
\end{document}