パッケージを使用せずに LaTeX で文中の単語を消すにはどうすればよいですか?
MWE:
\documentclass{article}
\usepackage{cancel}
\begin{document}
%BeginDocument
The first \xcancel{three commands} work in text mode also i.e.,\xcancel{science}
%End Document
\end{document}
答え1
教授はもっとよく知っているはずです。これはLaTeXについて何も教えてくれないと思います。パッケージの使用は道。
しかし、ここには、正しい値のペアを に渡すために、最大公約数を求めるユークリッドの互除法の実装 (おそらく不格好すぎる) が含まれています\line
。
\documentclass{article}
\makeatletter
\newcommand{\crossout}[1]{%
\begingroup
\settowidth{\dimen@}{#1}%
\setlength{\unitlength}{0.05\dimen@}%
\settoheight{\dimen@}{#1}%
\count@=\dimen@
\divide\count@ by \unitlength
\count0=20 \count4=\count@
\loop
\count2=\count0 % keep a copy
\divide\count2\count4 \multiply\count2\count4
\ifnum\count2<\count0
\advance\count0 -\count2 % the remainder
\count2=\count0
\count0=\count4
\count4=\count2
\repeat
\count0=20 \divide\count0\count4
\count2=\count@ \divide\count2\count4
\begin{picture}(0,0)
\put(0,0){\line(\count0,\count2){20}}
\put(0,\count@){\line(\count0,-\count2){20}}
\end{picture}%
#1%
\endgroup
}
\makeatother
\begin{document}
This word is \crossout{crossed} out
\end{document}
もちろん、この解決策を提示するのは不正行為です。そして、受け入れ可能なペアに厳しい制限があるため、すべてのケースで機能するわけではありません\line
。教授きっとTeX では斜めの線は描けないことがわかります。
とともに標準パッケージ化すればpict2e
より簡単で、どんな場合でも機能します。
\documentclass{article}
\usepackage{pict2e}
\makeatletter
\newcommand{\crossout}[1]{%
\begingroup
\settowidth{\dimen@}{#1}%
\setlength{\unitlength}{0.05\dimen@}%
\settoheight{\dimen@}{#1}%
\count@=\dimen@
\divide\count@ by \unitlength
\begin{picture}(0,0)
\put(0,0){\line(20,\count@){20}}
\put(0,\count@){\line(20,-\count@){20}}
\end{picture}%
#1%
\endgroup
}
\makeatother
\begin{document}
This word is \crossout{crossed} out
\crossout{word}
\crossout{U}
\end{document}
別の解決策(pdftex または luatex のみ)
\documentclass{article}
\makeatletter
\newcommand{\crossout}[1]{%
\begingroup
\sbox\z@{#1}%
\dimen\z@=\wd\z@
\dimen\tw@=\ht\z@
\dimen\z@=.99626\dimen\z@ % get big points
\dimen\tw@=.99626\dimen\tw@ % get big points
\edef\co@wd{\strip@pt\dimen\z@}% just the number
\edef\co@ht{\strip@pt\dimen\tw@}% just the number
\leavevmode
\rlap{\pdfliteral{q 1 J 0.4 w 0 0 m \co@wd\space \co@ht\space l S Q}}%
\rlap{\pdfliteral{q 1 J 0.4 w 0 \co@ht\space m \co@wd\space 0 l S Q}}%
#1%
\endgroup
}
\makeatother
\begin{document}
This is \crossout{crossed} out
\end{document}
答え2
あなたの教授はあなたが TeX を学ぶことを望んでいます。彼は賢い人です! 以下のコードを試してください。
\documentclass{article}
\usepackage{xcolor}
\makeatletter
\newbox\@tempboxb
\def\cancel#1{%
\leavevmode
\setbox\@tempboxa\hbox{#1}
\setbox\@tempboxb\hbox{x}
\hbox to 0pt{\hbox to \wd\@tempboxa {\color{red}\leaders\copy\@tempboxb\hfill\kern0pt}}#1}
\makeatother
\begin{document}
This is \cancel{a very long word}
\end{document}
アプローチとしては、単語をボックス内に入れて幅を測ります。次に、その上に罫線を描きます (リーダーを使用、x
やなどの任意の記号を使用できます-
)。 などのパッケージでは、ulem
より高度なマクロを使用して、交差線や下線などを調整する方法を提供します。