\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
。