破線\上矢印

破線\上矢印

破線 を定義しようとしています\Uparrow。最初の試みは、 を使用してtikz、法線 の上に 2 つの白い四角形を描画し\Uparrow、手動で四角形の適切な配置を見つけることです。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}

\newcommand{\Dasheduparrow}{
\begin{tikzpicture}[x=1, y=1]
\node (0,0) [inner sep=0] {$\Uparrow$};
\fill[fill=white] (-3,0.5) rectangle (2,-1);
\fill[fill=white] (-3,-2) rectangle (2,-3.5);
\end{tikzpicture}}

今すぐ入力して

\begin{document}
Text $\Dasheduparrow$ $\Downarrow$ $\Uparrow$ text.
\end{document}

分かりました

1

結果には非常に満足しています。ただし、3 つの質問があります。

  1. 法線\Downarrowとを同じ配置にするにはどうすればよいでしょう\Uparrowか。新しいシンボルはテキストのベースラインに揃えられていますが、2 つのデフォルトのシンボルは少し下方にシフトされています。
  2. この新しいシンボルを正しく伸縮可能にするにはどうすればよいでしょうか。\LARGE Text $\Dasheduparrow$ $\Downarrow$ $\Uparrow$ text.出力を 見ると2 、下にある部分\Uparrowが拡大されているのに、白い四角形は拡大されていないことがわかります。
  3. 私が提案したものよりも良い解決策はありますか?

答え1

修正された回答

OP は、私の元の回答では、ギャップは異なるフォント サイズ (および数式スタイル) で拡大縮小されないとコメントしています。これは、tikz私のstackengineパッケージを使わずに使用し、ギャップ サイズを数式スタイルで拡大縮小することで解決できます (白い長方形オーバーレイの寸法としてではなく、パッケージの [Local-Mathstyle ex] を使用しscalerelます\LMex) 。cmpt

OP の別の質問に答えると、\ThisStyle{...\SavedStyle...}構文により、現在の数式スタイルを、通常は失われる構造、この場合は ed されてスタックされている に持ち込むことができます\hbox\vcenterこれは、強化された と同等です\mathchoiceが、必要な入力量が大幅に削減されることがよくあります。

\documentclass{article}
\usepackage[utf8]{inputenc}
%\usepackage[T1]{fontenc}
\usepackage{scalerel,stackengine,xcolor}
\newcommand{\Dasheduparrow}{\ThisStyle{\vcenter{\hbox{$%
\stackengine{0.45\LMex}{\stackengine{-.15\LMex}{$\SavedStyle\Uparrow$}
  {\textcolor{white}{\rule{1.1\LMex}{0.3\LMex}}}{O}{c}{F}{T}{L}%
 }{\textcolor{white}{\rule{1.1\LMex}{0.3\LMex}}}{O}{c}{F}{T}{L}%
$}}}}
\begin{document}
Text $\Dasheduparrow$ $\Downarrow$ $\Uparrow$ text.

$\Dasheduparrow \scriptstyle \Dasheduparrow \scriptscriptstyle \Dasheduparrow$

\LARGE
Text $\Dasheduparrow$ $\Downarrow$ $\Uparrow$ text.

\end{document}

ここに画像の説明を入力してください

オリジナルの回答

ここでは、OP の定義から始めます。

\vcenterただし、その後、数式軸の中央に配置するために使用し、scalerel数式スタイルを保持する機能も使用します。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usepackage{scalerel}
\newcommand{\Dasheduparrow}{\ThisStyle{\vcenter{\hbox{$
\begin{tikzpicture}[x=1, y=1]
\node (0,0) [inner sep=0] {$\SavedStyle\Uparrow$};
\fill[fill=white] (-3,0.5) rectangle (2,-1);
\fill[fill=white] (-3,-2) rectangle (2,-3.5);
\end{tikzpicture}$}}}}
\begin{document}
Text $\Dasheduparrow$ $\Downarrow$ $\Uparrow$ text.

$\Dasheduparrow \scriptstyle \Dasheduparrow \scriptscriptstyle \Dasheduparrow$
\end{document}

ここに画像の説明を入力してください

答え2

簡単な回避策(少し不格好かもしれませんが):

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz,calc}

\newcommand{\Dasheduparrow}{
\begin{tikzpicture}[x=1, y=1]
\node (0,0) [inner sep=0] {$\Uparrow$};
\fill[fill=white] (-3,0.5) rectangle (2,-1);
\fill[fill=white] (-3,-2) rectangle (2,-3.5);
\end{tikzpicture}}

\begin{document}
Text \parbox{\widthof{$\Dasheduparrow$}}{$\Dasheduparrow$} $\Downarrow$ $\Uparrow$ text.
\end{document}

ここに画像の説明を入力してください

parboxここでは、コンテンツを中央揃えにするためにを使用しました。

\parbox{\widthof{$\Dasheduparrow$}}{$\Dasheduparrow$}

もう 1 つの可能性は、数式センタリング コマンドを使用することです。

\vcenter{\hbox{\Dasheduparrow}}

関連情報