如何使用 TikZ 调整线条大小以适应文本高度?

如何使用 TikZ 调整线条大小以适应文本高度?

我创建了一种新的引用样式。但我必须手动设置引用的行高和宽度。有人有解决方案来创建仅包含 2 或 3 个参数的环境吗?引用、作者和引用环境的宽度?

这是我的代码:

\def\linesize{1.50} % The height of my line
\begin{tikzpicture}
\draw[gray!75] (0,0) -- (0,\linesize);
\draw[gray!75] (0,0.5*\linesize) node [right] {Alfred de Musset};
\draw (0,0.5*\linesize) node [left] {%
\begin{minipage}{0.25\textwidth}
\begin{flushright}
Entre presque oui et oui, il y a tout un monde.
\end{flushright}
\end{minipage}
};
\end{tikzpicture}

第二个问题是,如何选择我的引文的文本位置?(中心线的右侧、左侧)所有这些都在一个环境中?

答案1

幸运的是,TikZ 将节点的内容处理为框,因此您可以将 替换{ .. }\bgroup .. \egroup并在那里分割图片,因此它被放置在 和 中\begin{..}\end{..}参数linesize也可以作为参数添加,或者简单地从引用大小计算出来。

\documentclass{article}

\usepackage{tikz}

\def\linesize{1.50} % The height of my line
\newenvironment{myquote}[2]{%
    \begin{tikzpicture}
        \draw[gray!75] (0,0) -- (0,\linesize);
        \draw[gray!75] (0,0.5*\linesize) node [right] {#2};
        \draw (0,0.5*\linesize) node [left] \bgroup
            \begin{minipage}{#1}%
            \begin{flushright}%
}%
{%
            \end{flushright}%
            \end{minipage}%
        \egroup;
    \end{tikzpicture}
}

\begin{document}

\begin{myquote}{.5\textwidth}{A.U.~Thor}
    A quote is a quote is a quote!
\end{myquote}

\end{document}

图像

这里有一个高级版本,它不需要\linesize并使用更多的 TikZ 参数而不是手动环境:

\newenvironment{myquote}[2]{%
    \begin{tikzpicture}
        \draw [gray!75] node [right] {#2};
        \node (QUOTE) [left,text width={#1},text ragged left] \bgroup
}%
{%
        \egroup;
        \draw [gray!75]
            ([yshift=5pt]QUOTE.north east) -- ([yshift=-5pt]QUOTE.south east);
    \end{tikzpicture}
}

要将右侧的引号改为,您需要将left其改为right,反之亦然,在第二个实现中将其改为eastwest您可以定义自己的选项来执行此操作,但这有点过头了。我只需再次定义环境,例如作为 star 版本,它使用相同的定义,但交换了值。

相关内容