tikz 矢印の上に斜線

tikz 矢印の上に斜線

- mathema の投稿
返信数: 11
\documentclass{beamer} 
%\usepackage[utf8]{inputenc}
 
\newcommand{\maru}[1]{\ooalign{
\hfil\resizebox{.8\width}{\height}{#1}\hfil
\raise.1ex\hbox{\large$\bigcirc$}}}%encircle
\usepackage{fancybox}%about frame
%\usepackage{luatexja}%japanese
\usepackage{tikz}
\usetikzlibrary{positioning}
\usetikzlibrary{cd}%tikzcd
\usetikzlibrary{decorations.pathmorphing}
\usepackage{xcolor}
\usepackage{graphics}%reverse
\usepackage{graphicx}%about scalebox
\usepackage{amsmath,amsfonts,amsthm,amssymb,amscd,ascmac}%in order to  higher formula and mathfrak and so on.
\usepackage{latexsym, mathtools}%arrow
\usepackage{textcomp}%※
\usepackage{bussproofs}%prooftree
\usepackage{pifont}
\usepackage{subfigure}
\usepackage{lscape}%%revolve
\usepackage{stmaryrd}%bracket
\usepackage{cancel}%diagonal line on a letter
\usepackage{hyperref}%reference
\usepackage{setspace}%
\usepackage{soul}%下線
\usepackage{comment}
\usepackage{wrapfig}%回り込み
\usepackage{qrcode}
\usepackage{luatexja-otf}%ajRightBArrow等
\usepackage{multicol}%itemize並列版
\usepackage{enumerate}
\usepackage{tikz-cd}
\usetikzlibrary{arrows}
\usepackage{tasks}%itemize並列版
 
\definecolor{deepskyblue}{rgb}{0.0, 0.75, 1.0}
\definecolor{dodgerblue}{rgb}{0.12, 0.56, 1.0}
 
\setbeamercovered{transparent}
\setbeamertemplate{theorems}[numbered]
\setbeamertemplate{footline}[frame number]
\setbeamertemplate{navigation symbols}{}
 
\newcommand{\red}[1]{\textcolor{red}{#1}}
 
\renewcommand{\baselinestretch}{1.3}%Leave a space between lines
\renewcommand{\arraystretch}{1}%arrayの行間を変える
 
 
\parindent = 0pt%no indent
 
 
\usetheme{Madrid}%テーマは指定しなくともよい.
 
\usepackage[%
backend  = biber,
bibstyle = ieee,
]{biblatex}
%
%\nocite{*}
\addbibresource{bib_name.bib}
 
\begin{document} 

\begin{lemma}[Separations of logics]
    \begin{center}
        \begin{minipage}{.6\linewidth}
            \begin{figure}[H]
                \centering
                \begin{tikzpicture}[scale = 0.55, transform shape,auto,every node/.style={rectangle,rounded corners}]
                    \node[draw, align=center](LJN) at (4,12) {$\mathsf{LN}+(\mathsf{PE})+(\mathsf{An})$\\$\text{(Intuitionistic logic)}$};
                    \node[draw](LNPELP) at (0,10) {$\mathsf{LN+(PE)+(LP)}$};
                    \node[draw](LNAnDNPE) at (8,10.5) {$\mathsf{LN+(An)+(DNPE)}$};
                    \node[draw, align=center](LNAn) at (8,8.75) {$\mathsf{LN}+(\mathsf{An})$\\$\text{(Minimal logic)}$};
                    \node[draw, align=center](LNPE) at (0,8) {$\mathsf{LN+(PE)}$\\ 
                        $(\text{Co-minimal logic})$};
                    \node[draw](LNAn-LP) at (8,7) {$\mathsf{LN+(An}^-)+(\mathsf{LP})$};
                    \node[draw](LNAn-) at (4,6) {$\mathsf{LN+(An}^-)$};
                    \node[draw](LNCo) at (4,4) {$\mathsf{LN+(Co)}$};
                    \node[draw](LNPE-) at (0,4) {$\mathsf{LN+(PE}^-)$};
                    \node[draw](LNNeF) at (4,2) {$\mathsf{LN+(NeF)}$};
                    \node[draw](LN) at (4,0) {$\mathsf{LN}$};
                    \draw [right hook->](LJN) -- (LNPELP);
                    \draw[right hook->] (LJN)--(LNAnDNPE);
                    \draw [left hook->] (LNAnDNPE)--(LNAn)node[pos=0.4]{\Huge$/$};
                    \draw [left hook->] (LNPELP)--(LNPE);
                    \draw [left hook->] (LNPELP)--(LNAn-LP);
                    \draw [left hook->] (LNPE)--(LNAn-);
                    \draw [left hook->] (LNAn)--(LNAn-LP);
                    \draw [right hook->] (LNAn-LP)--(LNAn-);
                    \draw [left hook->] (LNAn-)--(LNCo);
                    \draw [left hook->] (LNCo)--(LNNeF);
                    \draw [left hook->] (LNNeF)--(LN);
                    \draw [left hook->] (LNPE)--(LNPE-);
                    \draw [left hook->] (LNPE-)--(LN);
                \end{tikzpicture}
                \label{fig6}
            \end{figure}
        \end{minipage}
    \end{center}
\end{lemma}
\end{frame}

\end{document}

参考文献はhttps://alg-d.com/math/tikz.pdfこのPDFの30ページあたりを参考にし、texliveを用いてtexstudio上で上記のコードを書きました。

書きたいこととしましては、上記のコードで出力される図の矢印全ての上にうまい具合に斜線を引きたいのですが、環境もしくはコードの書き方が良くないのか上手く出力されません(実際にはズレて出力されます)。

よろしければご教授よろしくお願いします。

mathema への返信

Re: tikz 矢印の上に斜線

- mathema の投稿

望みとしましては以下の図の様な青い線を引きたいです。

よろしければご教授よろしくお願いします。

mathema への返信

Re: tikz 矢印の上に斜線

- 和田 勇 の投稿
当初のソースでは\end{frame} の対が無いことによる
エラーだったことが判明したので、以前の投稿を削除したので
話のつながりがおかしくなってしまいました。

Log.txt は、エラーになる原因を調べるために私が要求したものです。

tikz-src-only (1).pdf は、tikz で作成される画像で、どのようなことをしたいか
書き込んでいただいたものです。(この pdf でやりたいことはわかりました)
mathema への返信

Re: tikz 矢印の上に斜線

- tori tori の投稿

もっと良い書き方があると思いますが、たぶんこんな感じかと思います。sloped の有無、斜線の長さ、角度は適当に変えて下さい。

\tikzset{anegsty/.style={pos=0.5,sloped},
  pics/aneg/.style={code={\draw[red,-] (-2mm,-3mm) -- (2mm,3mm);}}}
\draw [left hook->] (LNNeF)--(LN) pic[anegsty] {aneg};

あるいは、\tikzset なしで直接書くなら:

\draw [left hook->] (LNPE)--(LNPE-) pic [pos=0.5,sloped] {code={\draw[blue,-] (-2mm,-3mm) -- (2mm,3mm);}};

tori tori への返信

Re: tikz 矢印の上に斜線

- tori tori の投稿

もっと良い書き方がありました。

            \usetikzlibrary{decorations.markings}
            \tikzset{aneg/.style={

                preaction={decorate},
                decoration={markings, mark=at position 0.5 with {\draw[red, -] (-1mm,-1.5mm) -- (1mm,1.5mm);}}
            }}

            \draw [left hook->,narr] (LNPELP)--(LNPE);

mathema への返信

Re: tikz 矢印の上に斜線

- 和田 勇 の投稿
提供していただいたソースは最後の方の対の無い「\end{frame」を
除けばコンパイルできました。

され、質問にある「矢印全ての上にうまい具合に斜線を引く」の
意図がわかりません。添付の画像に、どのようにしたいか、
Previre.app などで書き込んでいただけるとたすかります。
スレなどについても同様に書き込んでください。

和田 勇 への返信

Re: tikz 矢印の上に斜線

- mathema の投稿
返信ありがとうございます。

前投稿に添付のPDFの青い線の様なものを引きたいです。

よろしくお願いします。
mathema への返信

Re: tikz 矢印の上に斜線

- 和田 勇 の投稿
なんとか力技でやっつけたけど、これでよいかな?

矢印の中点に直交する斜線であれば、もっとがんばらなくてはいけないのですが、
「矢印に斜線」という要求は、「矢印の真ん中あたりに \Huge{$/$} 」との理解で検証をしました。

\node を使って二点間の真ん中あたりに特定の文字を置く場合、
参照されたページでは pos=xx のような中点に対する比率指定しますが、
これでは、思ったところに所定の文字を置けません。
below や above も行単位のようでこれも微調整が難しいです。

交点(intersection) でなんとかならぬかと texdoc tikz で調べるとそのマニュアル p140 に
barycentric というものの使用例がありました。これは、指定された複数のポイント(座標)
の相対的な座標位置を求めてくれるような機能のようです。

この機能は何故か自由記述ができない=余分なくうはくがいれられないのと、
二点間に矢印を描画したら「/  斜線」を必ず描画するので、
簡単なマクロで実現してみました。
みていただければわかると思いますが、
二点間からの中点らしきところまでの引っ張り具合を指定すれば調整できるようにしていますので、
微調整を試みてください。