
Die folgende LösungzumFragewo mathematischer Text gestrichen werden soll, wird das cancel
Paket verwendet. Dort \cancelto
erzeugt das Makro einen Pfeil von links unten nach rechts oben. Es gibt auch ein Makro namens \bcancel
, das einen Durchstreicher von links oben nach rechts unten erzeugt.
Ist es möglich, ein Makro zu haben, das diese beiden miteinander kombiniert, etwa in der Form \bcancelto
: ein Pfeil von oben links nach unten rechts?
Hier ist ein MWE:
\documentclass{article}
\usepackage{amsmath}
\usepackage[makeroom]{cancel}
\begin{document}
\noindent
\verb|\cancel{5y}|:
\[ x+\cancel{5y}=0\]
\verb|\bcancel{5y}|:
\[ x+\bcancel{5y}=0\]
\verb|\xcancel{5y}|:
\[ x+\xcancel{5y}=0\]
\verb|\cancelto{\infty}{5y}|:
\[ x+\cancelto{\infty}{5y}=0\]
\end{document}
Antwort1
Ich führe es ein \bcancelto{label}{term}
, indem ich eine der Paketroutinen ändere. BEARBEITET, um Beschriftungen auf zu unterstützen \bcancelto
.
Die Änderung von „ \canto@vector
zu produzieren“ \cantox@vector
führte zu drei Dingen:
1) Hinzufügen eines -
„Vorher“-Zeichens #4
im \vector
Aufruf;
2) Ändern des ^
hochgestellten Zeichens in ein _
tiefgestelltes Zeichen vor dem \raise
; und
3) Hinzufügen eines -
Zeichens vor #2
dem Folgenden \raise
.
Dann musste ich definieren, \bcancelto
dass diese Makroersetzung vorgenommen und \cancelto
mit der Ersetzung aufgerufen werden soll.
\documentclass{article}
\usepackage{amsmath}
\usepackage[makeroom]{cancel}
\makeatletter
% #1, #2 offset of label #6 extra width to clear arrowhead
% #3, #4 vector direction #7 superscript label style
% #5 vector width #8 superscript label
\def\cantox@vector#1#2#3#4#5#6#7#8{%
\[email protected]\p@
\setbox\z@\vbox{\boxmaxdepth.5\p@
\hbox{\kern-1.2\p@\kern#1\dimen@$#7{#8}\m@th$}}%
\ifx\canto@fil\hidewidth \wd\z@\z@ \else \kern-#6\unitlength \fi
\ooalign{%
\canto@fil$\m@th \CancelColor
\vcenter{\hbox{\dimen@#6\unitlength \kern\dimen@
\multiply\dimen@#4\divide\dimen@#3 \vrule\@depth\dimen@\@width\z@
\vector(#3,-#4){#5}%
}}_{\raise-#2\dimen@\copy\z@\kern-\scriptspace}$%
\canto@fil \cr
\hfil \box\@tempboxa \kern\wd\z@ \hfil \cr}}
\def\bcancelto#1#2{\let\canto@vector\cantox@vector\cancelto{#1}{#2}}
\makeatother
\begin{document}
\noindent
\verb|\cancel{5y}|:
\[ x+\cancel{5y}=0\]
\verb|\bcancel{5y}|:
\[ x+\bcancel{5y}=0\]
\verb|\xcancel{5y}|:
\[ x+\xcancel{5y}=0\]
\verb|\cancelto{\infty}{5y}|:
\[ x+\cancelto{\infty}{5y}=0\]
\noindent NEW! \verb|\bcancelto{\infty}{5y}|:
\[ x+\bcancelto{\infty}{5y}=0\]
\end{document}
Antwort2
Hier ist eine TikZ-Lösung.
\documentclass[varwidth,border=50]{standalone}
\usepackage{tikz}
\tikzset{
main node/.style={inner sep=0,outer sep=0},
label node/.style={inner sep=0,outer ysep=.2em,outer xsep=.4em,font=\scriptsize,overlay},
strike out/.style={shorten <=-.2em,shorten >=-.5em,overlay}
}
\newcommand{\cancelto}[3][]{\tikz[baseline=(N.base)]{
\node[main node](N){$#2$};
\node[label node,#1, anchor=south west] at (N.north east){$#3$};
\draw[strike out,-latex,#1] (N.south west) -- (N.north east);
}}
\newcommand{\bcancelto}[3][]{\tikz[baseline=(N.base)]{
\node[main node](N){$#2$};
\node[label node,#1, anchor=north west] at (N.south east){$#3$};
\draw[strike out,-latex,#1] (N.north west) -- (N.south east);
}}
\begin{document}
\cancelto[orange]{test}{Oooo!}
and math
$\sqrt{\cancelto[red]{x}{\infty}}$
\bcancelto[orange]{test}{Oooo!}
and math
$\sqrt{\bcancelto[red]{x}{\infty}}$
\end{document}