テキストと2つの装飾を使って絵を描く方法

テキストと2つの装飾を使って絵を描く方法

次のような図面を作成するにはどうすればよいでしょうか。

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

赤で囲った部分は説明のみで (「真ん中」は螺旋を表す図の真ん中を意味します)、描画してはいけません。私は Tikz についてほんの少ししか知りません (他のプログラムについては何も知りませんが、他のプログラムよりは多く知っています)。また、螺旋を自分の装飾に置き換えたいので、Tikz が最適です。

ここではテキストが大きく見えるかもしれませんが、実際には標準フォントを使用する予定です。

以下は最小限の動作例です (LyX を使用しているため、LaTeX のプリアンブルは削除されています)。

\begin{tikzpicture} 

\node[align=center]{text text text text \\ text text text text};
% To do: Place a picture here, whose middle is at equal distance between the top line of text and the bottom line and that has a "good-looking" distance from the text
% To do: Place the same picture with same distance requirements here; would be nice if it were mirrored, so I don't have to mirror it externally in a different program.
\end{tikzpicture} 

編集(コメントするには長すぎるため):わかりました。回答を修正すると次のようになります。

\documentclass{article}
\usepackage{graphicx}

\newlength\decorwidth
\setlength\decorwidth{1cm}

\newcommand\TextDecor[2]{%
  \par\smallskip\noindent%
  \parbox[c]{\decorwidth}{\includegraphics[width=.5\decorwidth]{#1}\hfill}%
  \parbox[c]{\dimexpr\textwidth-2\decorwidth\relax}{#2}%
  \parbox[c]{\decorwidth}{\hfill\includegraphics[width=.5\decorwidth]{#1}}\par\smallskip%
}

\begin{document}


\TextDecor{ornament1}{ \begin{center}text  text text  text\\ text text text  text\end{center}}

\end{document}

今は次のようになっています。赤字は私ができなかったことの説明です:

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

答え1

1 つの可能性として、2 つの必須引数を持つ新しいコマンドを定義しました\TextDecor。1 つは装飾と装飾するテキストを含むファイルの名前、もう 1 つは装飾とテキストの分離を制御するオプションの引数 (デフォルト値は10pt) です。装飾は、パッケージ\includegraphicsから を使用してインクルードされますgraphicx

アイデアとしては\parbox、中央揃えの垂直配置で 3 つの es を使用することです。2 つは装飾用、中央の 1 つはテキスト用です。装飾を含むボックスの幅は長さによって制御されますdecorwidth(最初は に設定されています2cm)。もちろん、 の定義は\TextDecor必要に応じて変更できます。

\documentclass{article}
\usepackage{graphicx}

\newlength\decorwidth
\setlength\decorwidth{1.5cm}
\newlength\decorsep

\newcommand\TextDecor[3][10pt]{%
  \setlength\decorsep{#1}
  \par\smallskip\noindent%
  \parbox[c]{\decorwidth}{\includegraphics[width=\decorwidth]{#2}\hfill}%
  \hspace{\decorsep}%
  \parbox[c]{\dimexpr\textwidth-2\decorwidth-2\decorsep\relax}{#3}%
  \hspace{\decorsep}%
  \parbox[c]{\decorwidth}{\hfill\includegraphics[width=\decorwidth]{#2}}\par\smallskip%
}

\newcommand\Text{% some filler text for the example
Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi
auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ultricies et,
tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna,
vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis.
}

\begin{document}

\Text
\TextDecor{ornament1}{\Text}
\Text
\TextDecor[30pt]{ornament2}{\Text}
\Text
\TextDecor[2pt]{ornament3}{\Text}
\Text

\end{document}

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

答え2

ここでは、パッケージを使用した提案ですmdframed。装飾品を説明するために、パッケージを使用しましたpifont

関連する部分はコード内にコメントされています。その他の設定はマニュアルに記載されています。

フォントや画像を使用する代わりに、パッケージによって読み込まれる TikZ を使用することもできますmdframed

\documentclass{article}
\usepackage{graphicx}
\usepackage[framemethod=tikz]{mdframed}
\usetikzlibrary{calc}

\usepackage{pifont}
\usepackage{kantlipsum}

\mdfdefinestyle{ornament}{%
  topline=false,bottomline=false,
 middlelinewidth=2cm, %width of the ornament
 middlelinecolor=white,
 innerleftmargin=.1cm,innerrightmargin=.1cm, %inner distance from ornament
 nobreak,
 singleextra={\path let \p1=(O), \p2=(P) in (\x1,.5*\y2) coordinate (Q);
                           \node at (Q) {\ornamentsetupI};
                           \node at (P|-Q) {\ornamentsetupI};}
}
\newcommand*\ornamentsetup[1]{\def\ornamentsetupI{#1}}


\newmdenv[style=ornament]{ornament}
\ornamentsetup{{\huge\ding{107}}}

\begin{document}

\begin{ornament}
\kant[1]\kant[1]\kant[1]
\kant[1]\kant[1]\kant[1]
\kant[1]\kant[1]\kant[1]
\end{ornament}


\end{document}

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

関連情報