定理、tikzpicture 和中心环境的问题

定理、tikzpicture 和中心环境的问题

我对一些定理使用了对话框样式,通过使用下面的代码,效果很好。

\documentclass[a4paper,11pt,twoside]{book}
\usepackage[a4paper,left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm]{geometry}
\usepackage{amsthm}

\usepackage{environ}

\usepackage{tikz}
\usetikzlibrary{shapes,snakes} % Για φάνσι κουτακια

\theoremstyle{plain}
\newtheorem{theo}{Sometheorem}[chapter]

\tikzstyle{BoxDialog} = [draw=black, fill=white, very thick,
rectangle callout, rounded corners, densely dashed,callout relative pointer={(-0.4cm,-0.4cm)}, inner sep=4pt, inner ysep=8pt]
\tikzstyle{TitlTheo} =[fill=white, text=black]

\NewEnviron{dialogtheo}[1]{
                    \begin{tikzpicture}
        \node [BoxDialog] (boxtheo){%
            \begin{minipage}{0.9\textwidth}
            \BODY
            \end{minipage}
        };
        \node[TitlTheo] at (boxtheo.north) {\textbf{#1}};
        \end{tikzpicture}
}

\begin{document}

\begin{dialogtheo}{title theorem}
\begin{theo}
    theorem theorem theorem theorem theorem theorem theorem theorem theorem theorem
\end{theo}
\end{dialogtheo}

\end{document}

在此处输入图片描述

但是当我像这样将center环境包裹起来时:dialogtheo

\NewEnviron{dialogtheo}[1]{
        \begin{center}
                        \begin{tikzpicture}
        \node [BoxDialog] (boxtheo){%
            \begin{minipage}{0.9\textwidth}
            \BODY
            \end{minipage}
        };
        \node[TitlTheo] at (boxtheo.north) {\textbf{#1}};
        \end{tikzpicture}
        \end{center}
}

我有此错误报告:

!LaTeX 错误:出现错误 — — 可能缺少 \item。

log-file。

问题是什么?

PS:如果我有 ceepcenter环境,但我删除了theo,一切都又恢复正常了。

答案1

如果您的目标是使对话框居中,而不是使用环境center,那么您应该尝试在环境内容的末尾\centering使用:\par

\NewEnviron{dialogtheo}[1]{
    \centering
    \begin{tikzpicture}
        \node[BoxDialog] (boxtheo){
            \begin{minipage}{0.9\textwidth}
                \BODY
            \end{minipage}
        };
        \node[TitlTheo] at (boxtheo.north) {\textbf{#1}};
    \end{tikzpicture}\par
}

\par很重要,否则气泡根本不会居中。

答案2

如果您尝试将一个定理放入center环境中,您会发现它不起作用。

编辑:我的意思是代码:

\begin{center}
    \begin{theo}
    test
    \end{theo}
\end{center}

将导致非中心定理。

因此,我的解决方案是一个“黑客”,只需根据需要缩进您的环境:

\documentclass[a4paper,11pt,twoside]{book}
\usepackage[a4paper,left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm]{geometry}
\usepackage{amsthm}
\usepackage{lipsum}
\usepackage{environ}

\usepackage{tikz}
\usetikzlibrary{shapes,decorations} % Για φάνσι κουτακια

\theoremstyle{plain}
\newtheorem{theo}{Sometheorem}[chapter]

\tikzstyle{BoxDialog} = [draw=black, fill=white, very thick,
rectangle callout, rounded corners, densely dashed,callout relative pointer={(-0.4cm,-0.4cm)}, inner sep=4pt, inner ysep=8pt]
\tikzstyle{TitlTheo} =[fill=white, text=black]

\newsavebox{\theobox}
\newlength{\theoidentlength}
\NewEnviron{dialogtheo}[1]{
\savebox\theobox{\hbox{
        \begin{tikzpicture}
        \node [BoxDialog] (boxtheo){%
            \begin{minipage}{0.6\textwidth}
            \BODY
            \end{minipage}
        };
        \node[TitlTheo] at (boxtheo.north) {\textbf{#1}};
        \end{tikzpicture}}}
        \setlength\theoidentlength{\dimexpr(\textwidth-\wd\theobox)/2\relax}
        \noindent\hspace*{\theoidentlength}\usebox{\theobox}
}

\begin{document}
\lipsum[1]
\begin{dialogtheo}{title theorem}

\begin{theo}
    theorem theorem theorem theorem theorem theorem theorem theorem theorem theorem
\end{theo}
\end{dialogtheo}

\end{document}

在此处输入图片描述

PS:我的解决方案只是一种替代方案[我认为如果居中失败,它在很多情况下可能会有用],只是添加了这种(替代)方法。

相关内容