質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
LaTeX

LaTeXは、レスリー・ランポートが開発したテキストベースの文書整形システムです。 電子製版ソフトウェアである「TeX」にマクロパッケージを組み込む形で構成されており、 通常のTeXより扱いやすくなっているのが特徴です。

Q&A

解決済

1回答

1985閲覧

LaTeX Tikz : \path で名前を与えた線を呼び出して描く方法

sazanka

総合スコア5

LaTeX

LaTeXは、レスリー・ランポートが開発したテキストベースの文書整形システムです。 電子製版ソフトウェアである「TeX」にマクロパッケージを組み込む形で構成されており、 通常のTeXより扱いやすくなっているのが特徴です。

0グッド

0クリップ

投稿2022/04/16 02:22

編集2022/04/17 01:09

前提

交点を求めるために以下のコードを書きました.

LaTeX

1\begin{tikzpicture} 2\coordinate (A) at (0,0); %あるの点A 3\coordinate (B) at (3,3); %あるの点B 4\def\vtF{plot(\t,{-1 * \t + 3})} % f(t) 5\def\vtG{plot(\t,{2 * \t - 1})} % g(t) 6\draw[name path = vtGlaphF,very thick ,domain = 0:5, variable=\t]\vtF; 7\draw[name path = vtGlaphG,very thick, domain = 0:5, variable=\t]\vtG; 8\path[name intersections = {of = vtGlaphF and vtGlaphG, by = {Z}}]; %交点をZと定める. 9\end{tikzpicture}

交点Zと,ある点A, Bの3点の中を塗りたいので以下のコードを\end{tikzpicture}の前に挿入しました.

LaTeX

1\fill[fill = gray!20](A)--(B)--(Z)--cycle;

また,こだわりで,色を塗ってから直線を引きたいです.

実現したいこと

  • 色を塗ってから直線を引くこと.
  • 直線の名前を指定しているのだから,その名前を呼び出して線を引きたい.
  • 交点を求めるときに,交点を求めるために一度線を引くことを避けたい.

今はどのようにしているか.

 現状は以下の通りです.

LaTeX

1\begin{tikzpicture} 2\coordinate (A) at (0,0); %あるの点A 3\coordinate (B) at (3,3); %あるの点B 4\def\vtF{plot(\t,{-1 * \t + 3})} % f(t) 5\def\vtG{plot(\t,{2 * \t - 1})} % g(t) 6\draw[name path = vtGlaphF,very thick ,domain = 0:5, variable=\t]\vtF; 7\draw[name path = vtGlaphG,very thick, domain = 0:5, variable=\t]\vtG; 8\path[name intersections = {of = vtGlaphF and vtGlaphG, by = {Z}}] %交点をZと定める. 9\fill[fill = gray!20](A)--(B)--(Z)--cycle; 10\draw[name path = vtGlaphF,very thick ,domain = 0:5, variable=\t]\vtF; %もう一度線を引く 11\draw[name path = vtGlaphG,very thick, domain = 0:5, variable=\t]\vtG; %もう一度線を引く 12\end{tikzpicture}

試したこと

 インターネットや書籍を漁っても良い結果が得られなかったので,以下のようにしてみました.(LaTeXに関してあまり知見が深くないので,もしかしたらめちゃくちゃなこと書いているかもしれません.)

LaTeX

12\path[name path = vtGlaphF,very thick ,domain = 0:5, variable=\t]\vtF; 3\path[name path = vtGlaphG,very thick, domain = 0:5, variable=\t]\vtG;%[1] 4\path[name intersections = {of = vtGlaphF and vtGlaphG, by = {Z}}] %交点をZと定める.%[2] 5\fill[fill = gray!20](A)--(B)--(Z)--cycle; 6\draw[vtGlaphF]; %[1]を描きたい 7\draw[vtGlaphG]; %[2]を描きたい

 この結果,\draw[vtGlaphF];のところでエラーが出ております.上4行は問題ないようです.

初心者で情報の書き方も不適切かもしれませんが,ご指導よろしくお願いいたします.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

回答

直線の名前を指定しているのだから,その名前を呼び出して線を引きたい

次のように,name pathではなくsave pathuse pathで名前を指定すると可能のようです。

latex

1\begin{tikzpicture} 2\def\vtF{plot(\t,{-1 * \t + 3})} % f(t) 3\path[save path=\vtGlaphF, name path = vtGlaphF,very thick ,domain = 0:5, variable=\t]\vtF; 4% ... 5\draw[use path=\vtGlaphF] ; 6\end{tikzpicture}

色を塗ってから直線を引くこと

少しひねった回答かもしれませんが,拡張機能を使って色を塗るのを背景レイヤーに指定する方法があります。

latex

1% プリアンブルに \usetikzlibrary{backgrounds} の記述が必要 2 3\begin{tikzpicture} 4\coordinate (A) at (0,0); %あるの点A 5\coordinate (B) at (3,3); %あるの点B 6\def\vtF{plot(\t,{-1 * \t + 3})} % f(t) 7\def\vtG{plot(\t,{2 * \t - 1})} % g(t) 8\draw[name path = vtGlaphF,very thick ,domain = 0:5, variable=\t]\vtF; 9\draw[name path = vtGlaphG,very thick, domain = 0:5, variable=\t]\vtG; 10\path[name intersections = {of = vtGlaphF and vtGlaphG, by = {Z}}]; %交点をZと定める. 11\begin{scope}[on background layer] 12\fill[fill = gray!20](A)--(B)--(Z)--cycle; 13\end{scope} 14\end{tikzpicture}

交点を求めるときに,交点を求めるために一度線を引くことを避けたい

質問者が試している方法でOKだと思います。

(おまけ)私が回答文書くまでの心の動き

お~久しぶりにLaTeXの質問で誰も答えてないのがあるから回答してみようか。
どれどれ?

Tikzで交点とかintersectionからみかな?

得たいものに関してはbackground layer使えばしまいやけど,
直線の名前を指定してからその名前を呼び出すってそんなんできるんかいな?
まぁ交点求める時\path使うと描画せえへんっていうのはその通りやな。

とりあえず何はともあれ公式ドキュメントや。

bash

1texdoc tikz

Tikzのドキュメントを表示させて,intersectionで検索と。

  • プリアンブルに\usetikzlibrary{intersections}が必要
  • 質問文はintersectionって書いてるけど複数形っぽい

何か質問文これで動くって書いてるけどホンマかいな。

おっ。ドキュメントをintersectionsで検索したところにsave pathってあるなぁ。
intersectionsで使うname pathとは別にsave pathで指定せなあかんみたい。
使う時はuse pathでOK。拡張ライブラリは不要みたい。

background layerはだいたい想像した通り。\usetikzlibrary{backgrounds}がいるけど一番手数は少ないな。

さて質問のLaTeXコード確認してみようか。っていかTikZなんやからせめて
\begin{tikzpicture}~\end{tikzpicture}で囲むぐらいできへんか?
萎え萎え。テンション下がるわ~。
プリアンブルに\usetikzlibrary{intersections}が必要ってこと一言もないし不親切やわ~。
で,とりあえずtest.texにコピーしてコンパイル。嘘~コンパイル通らへんわ。
\def\vtG{plot(\t,{2 * \t - 1*})} % g(t)って1の後ろの*っていらんのちゃうか。
とりあえず消して再コンパイル。またエラー。

\path[name intersection = {of = vtGlaphF and vtGlaphG, by = {Z}}]; %交点をZと定める.
intersectionってintersectionsちゃうか。変更して,あ,通った。

コピペもまともにようせえへんのんか。萎えるわ~。やる気無くなったから風呂入って来よ。

...

う~ん。どの質問文のどのソース見てもintersectionやなぁ。
私が使っているものと何か違うLaTeX使ってるんちゃうやろか。

これは絶対誰も回答せえへんやろなぁ。

「現状は以下の通りです」の下のソースなんか,
間違っててコンパイルが通らへん行が4行もあるし,もう質問者のこと信じられへんわ。

まぁせっかくsave pathuse pathのこと分かったから回答だけでもしてみようか。

投稿2022/04/16 18:01

ujimushi_sradjp

総合スコア2091

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazanka

2022/04/17 01:10

数々の不適切な記載,失礼しました. 貴重なお時間いただきありがとうございました. 指摘を受けた点に関しては訂正しておきました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問