LaTex에서 단어를 지우는 방법

LaTex에서 단어를 지우는 방법

패키지를 사용하지 않고 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보다 정교한 매크로를 사용하여 십자선, 밑줄 등을 조정하는 방법을 제공합니다.

관련 정보