使用 \usepackage{framed} 后命令 \leftbar 已定义

使用 \usepackage{framed} 后命令 \leftbar 已定义
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{polski}
\usepackage{framed}
\usepackage{mathtools}
\usepackage{amsthm}
\usepackage{letltxmacro}



\LetLtxMacro\amsproof\proof
\LetLtxMacro\amsendproof\endproof
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{enumitem} 



\usepackage{thmtools}
\AtBeginDocument{%
  \LetLtxMacro\proof\amsproof
  \LetLtxMacro\endproof\amsendproof
}


\newtheorem{theorem}{Twierdzenie}[section]
\newtheorem{prop}{Stwierdzenie}[section]
\newtheorem{lemma}{Lemat}[section]
\newtheorem{remark}{Uwaga}[section]
\newtheorem*{uwaga}{Uwaga}
\newtheorem*{przy}{Przykład}
\newtheorem{definition}{Definicja}[section]
\newtheorem{wniosek}{Wniosek}[section]
\newtheorem*{pyt}{Pytanie}
\newtheorem*{prob}{Problem}
\newtheorem*{dowod}{Dowód}

\usepackage{mdframed}
\newmdtheoremenv{twierdzenie}{Twierdzenie}[section]
\newmdtheoremenv{lemat}{Lemat}[section]

\declaretheorem[
  style=plain,
  thmbox={style=M,bodystyle=\normalfont},
  name=Definicja,
  within=section,
]{definicja}


\declaretheorem[
  style=plain,
  thmbox={style=M,bodystyle=\normalfont},
  name=Wniosek,
  within=section,
]{wnio}






\DeclarePairedDelimiter{\norm}{\lVert}{\rVert} 
\begin{document}

\section{Introduction}


\begin{figure}
    \begin{framed}
        \centering
        \includegraphics[width=\linewidth]{test.png}
        \caption{Test}
    \end{framed}
\end{figure}


\end{document}

如果我包含 \usepackage{framed},则会出现此错误:

在此处输入图片描述

为什么?我该如何解决这个错误?我想要的是拥有带框的图片,我需要使用这个包才能让它工作,但由于某种原因,它在这里不起作用。

答案1

有时两个包会定义具有相同名称的命令。如果这些命令不同,则这些包通常不兼容。有时可以解决这个问题,有时则不行。就你的情况而言,问题在于同时使用framed和。一个简单的建议是从你的序言中mdframed删除并仅使用:\usepackage{framed}mdframed

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{polski}
\usepackage{mathtools}
\usepackage{amsthm}
\usepackage{letltxmacro}

\LetLtxMacro\amsproof\proof
\LetLtxMacro\amsendproof\endproof
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{enumitem} 

\usepackage{thmtools}
\AtBeginDocument{%
  \LetLtxMacro\proof\amsproof
  \LetLtxMacro\endproof\amsendproof
}

\newtheorem{theorem}{Twierdzenie}[section]
\newtheorem{prop}{Stwierdzenie}[section]
\newtheorem{lemma}{Lemat}[section]
\newtheorem{remark}{Uwaga}[section]
\newtheorem*{uwaga}{Uwaga}
\newtheorem*{przy}{Przykład}
\newtheorem{definition}{Definicja}[section]
\newtheorem{wniosek}{Wniosek}[section]
\newtheorem*{pyt}{Pytanie}
\newtheorem*{prob}{Problem}
\newtheorem*{dowod}{Dowód}

\usepackage{mdframed}
\newmdtheoremenv{twierdzenie}{Twierdzenie}[section]
\newmdtheoremenv{lemat}{Lemat}[section]

\declaretheorem[
  style=plain,
  thmbox={style=M,bodystyle=\normalfont},
  name=Definicja,
  within=section,
]{definicja}

\declaretheorem[
  style=plain,
  thmbox={style=M,bodystyle=\normalfont},
  name=Wniosek,
  within=section,
]{wnio}

\DeclarePairedDelimiter{\norm}{\lVert}{\rVert}

\begin{document}

\section{Introduction}

\begin{figure}
    \begin{mdframed}
        \centering
        \includegraphics[width=\linewidth]{example-image.png}
        \caption{Test}
    \end{mdframed}
\end{figure}

\end{document}

框架图像

还有几个用于框架的包,例如tcolorbox

顺便说一句:我始终建议只加载那些被使用的包。删除所有未使用的前导代码也是一个好主意。可以进行更多优化,删除显式加载的包,这些包由其他人隐式加载,例如mathtools已经加载的包amsmath

相关内容