斜线开始太低,结束太高

斜线开始太低,结束太高

我想用对角线划掉一个等式,但我没能按我想要的方式画出对角线。我最接近的方法是使用Frédéric 的回答是 \cancel 绘制在被取消的事物下

\documentclass{minimal}

\usepackage{tikz}

\newcommand{\hcancel}[1]{%
    \tikz[baseline=(tocancel.base)]{
        \node[inner sep=0pt,outer sep=0pt] (tocancel) {#1};
        \draw[red] (tocancel.south west) -- (tocancel.north east);
    }%
}%

\begin{document}

\begin{equation}\label{eq:2}
\hcancel{$h_1 \land h_2 \land h_3 \land h_4 \land h_5 \land h_6 \land h_7 \land h_8 \land h_9 \land h_{10}$}
\end{equation}

\end{document}

得出的结果为:

线起点太低,终点太高

但是这条线的起点太低,终点又太高。以下是我想要的:

我想要绘制的线

我很高兴能有一个选项,让排队稍早开始,稍晚结束。

答案1

您可以修改Frédéric 的代码,以便\hcancel接收另外四个强制参数来控制起点和终点的垂直和水平移动:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{calc}
\newcommand{\hcancel}[5]{%
    \tikz[baseline=(tocancel.base)]{
        \node[inner sep=0pt,outer sep=0pt] (tocancel) {#1};
        \draw[red] ($(tocancel.south west)+(#2,#3)$) -- ($(tocancel.north east)+(#4,#5)$);
    }%
}%

\begin{document}

\begin{equation}\label{eq:1}
\hcancel{$h_1 \land h_2 \land h_3 \land h_4 \land h_5 \land h_6 \land h_7 \land h_8 \land h_9 \land h_{10}$}{0pt}{0pt}{0pt}{0pt}
\end{equation}

\begin{equation}\label{eq:2}
\hcancel{$h_1 \land h_2 \land h_3 \land h_4 \land h_5 \land h_6 \land h_7 \land h_8 \land h_9 \land h_{10}$}{-3pt}{3pt}{3pt}{-2pt}
\end{equation}

\end{document}

新语法:

\hcancel{<text>}{<start. point horiz. shifting>}{<start. point vertical shifting>}{<end. point horiz. shifting>}{<end. point vertical shifting>}

编辑:使用该xparse包,新命令的定义更加灵活;使用类似

\usepackage{xparse}
\DeclareDocumentCommand{\hcancel}{mO{0pt}O{0pt}O{0pt}O{0pt}}{%
    \tikz[baseline=(tocancel.base)]{
        \node[inner sep=0pt,outer sep=0pt] (tocancel) {#1};
        \draw[red] ($(tocancel.south west)+(#2,#3)$) -- ($(tocancel.north east)+(#4,#5)$);
    }%
}%

允许使用\hcancel{<text>}由Frédéric 定义的命令的标准行为,并使用四个(现在可选)参数来控制水平/垂直移动:

\documentclass{article}
\usepackage{xparse}
\usepackage{tikz}
\usetikzlibrary{calc}

\DeclareDocumentCommand{\hcancel}{mO{0pt}O{0pt}O{0pt}O{0pt}}{%
    \tikz[baseline=(tocancel.base)]{
        \node[inner sep=0pt,outer sep=0pt] (tocancel) {#1};
        \draw[red] ($(tocancel.south west)+(#2,#3)$) -- ($(tocancel.north east)+(#4,#5)$);
    }%
}%

\begin{document}

\begin{equation}\label{eq:1}
\hcancel{$h_1 \land h_2 \land h_3 \land h_4 \land h_5 \land h_6 \land h_7 \land h_8 \land h_9 \land h_{10}$}
\end{equation}

\begin{equation}\label{eq:2}
\hcancel{$h_1 \land h_2 \land h_3 \land h_4 \land h_5 \land h_6 \land h_7 \land h_8 \land h_9 \land h_{10}$}[-3pt][3pt][3pt][-2pt]
\end{equation}

\end{document}

答案2

您可以在线的开头和结尾创建节点,并垂直移动它们:

\tikzstyle{nosep}=[inner sep=0pt, outer sep=0pt]
\newcommand{\hcancel}[1]{%
    \tikz[baseline=(tocancel.base)]{
        \node[nosep] (tocancel) {#1};
        \node[nosep, yshift=.5ex]  (from) at (tocancel.south west) {};
        \node[nosep, yshift=-.5ex] (to)   at (tocancel.north east) {};
        \draw[red] (from) -- (to);
    }%
}%

你可以通过反复试验找到最佳的换班方式。我任意选择了.5ex-.5ex

答案3

另一种可能性是创建一种风格。

\documentclass[]{scrartcl}
\usepackage{tikz}
\usetikzlibrary{calc}  


\begin{document}

\begin{tikzpicture}[cancel/.style={path picture={ \draw[#1]
($ (path picture bounding box.south west)+(-3pt,6pt)$) -- ($(path picture bounding box.north east)+(3pt,-6pt)$);
}}]  
\node   [inner sep=3pt,cancel=red] {$2x+3=y$};
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案4

我在这个答案中使用了 PSTricks。请调整参数,直到它们最适合您的偏好。下面代码中给出的参数是不言自明的。

在此处输入图片描述

\documentclass{minimal}

\usepackage{pstricks-add}
\psset{linecolor=red}
\def\myeq{\psDefBoxNodes{A}{h_1 \land h_2 \land h_3 \land h_4 \land h_5 \land h_6 \land h_7 \land h_8 \land h_9 \land h_{10}}}
\begin{document}

\centering

Your settings:
\begin{equation}
\myeq
\ncline[nodesep=3pt,offsetA=-1pt,offsetB=3pt]{A:bl}{A:tr}
\end{equation}
\\[5mm]

Controlling the length:
\begin{equation}
\myeq
\ncline[nodesep=10pt,offsetA=-1pt,offsetB=3pt]{A:bl}{A:tr}
\end{equation}
\\[5mm]

Controlling the left node:
\begin{equation}
\myeq
\ncline[nodesep=3pt,offsetA=-1pt,offsetB=-10pt]{A:bl}{A:tr}
\end{equation}
\\[5mm]


Controlling the right node:
\begin{equation}
\myeq
\ncline[nodesep=3pt,offsetA=10pt,offsetB=3pt]{A:bl}{A:tr}
\end{equation}

\end{document}

相关内容