
Este é um acompanhamentoessa questãoeEste. Basicamente, gostaria de evitar a sequência ([...]) nos argumentos opcionais do teorema, conforme mostrado abaixo:

Para obter esse resultado, conforme sugerido poresta resposta, usei a \patchcmd
macro do etoolbox
pacote. No entanto, tenho que mudar de
\patchcmd{\thmhead}{(#3)}{#3}{}{}
para
\patchcmd{\thmhead}{#3}{(#3)}{}{}
a cada alteração, o que não é muito conveniente para um livro grande com muitos teoremas. Portanto, eu queria saber se um único comando seria possível. Observe que estou usando os dois formulários \cite{}
e \cite[]{}
, o que torna as coisas um pouco mais complexas.
\documentclass[10pt]{article}
\usepackage[]{amsmath, amssymb, amsthm}
\newtheorem{theorem}{Theorem}[section]
\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
\begin{document}
\section{Pythagoras' theorem}
\noindent Correct versions:
\begin{theorem}[Pythagoras]
$a^2 + b^2 = c^2$.
\end{theorem}
\begin{theorem}[Pythagoras, \cite{Pythagoras}]
$a^2 + b^2 = c^2$.
\end{theorem}
\begin{theorem}[Pythagoras, {\cite[p.\ 345]{Pythagoras}}]
$a^2 + b^2 = c^2$.
\end{theorem}
\patchcmd{\thmhead}{(#3)}{#3}{}{}
\begin{theorem}[\cite{Pythagoras}]
$a^2 + b^2 = c^2$.
\end{theorem}
\begin{theorem}[{\cite[p.\ 21]{Pythagoras}}]
$a^2 + b^2 = c^2$.
\end{theorem}
\noindent To be avoided:
\patchcmd{\thmhead}{#3}{(#3)}{}{}
\begin{theorem}[\cite{Pythagoras}]
$a^2 + b^2 = c^2$.
\end{theorem}
\begin{theorem}[{\cite[p.\ 21]{Pythagoras}}]
$a^2 + b^2 = c^2$.
\end{theorem}
\begin{thebibliography}{HD}
\bibitem[1]{Pythagoras}
Pythagoras' theorem.
\end{thebibliography}
\end{document}
Responder1
Você pode comparar o argumento com uma expressão regular que representa \cite
seguido por zero ou uma ocorrência de [...]
e por {...}
.
\documentclass[10pt]{article}
\usepackage[]{amsmath, amssymb, amsthm}
% see https://tex.stackexchange.com/a/17555/4427 for the parameters
\newtheoremstyle{jepinplain}
{\topsep} % ABOVESPACE
{\topsep} % BELOWSPACE
{\itshape} % BODYFONT
{0pt} % INDENT (empty value is the same as 0pt)
{\bfseries} % HEADFONT
{.} % HEADPUNCT
{5pt plus 1pt minus 1pt} % HEADSPACE
{\thmname{#1}\thmnumber{ #2}\thmnote{{\normalfont\ \checkcite{#3}}}} % CUSTOM-HEAD-SPEC
\ExplSyntaxOn
\NewDocumentCommand{\checkcite}{m}
{
\regex_match:nnTF {\A \c{cite}(?:\[[^]]*\])?\{.*\} \Z} { #1 }
{% only \cite
#1
}
{ (#1) }
}
\ExplSyntaxOff
\theoremstyle{jepinplain}
\newtheorem{theorem}{Theorem}[section]
\begin{document}
\section{Pythagoras' theorem}
\noindent Correct versions:
\begin{theorem}
$a^2 + b^2 = c^2$.
\end{theorem}
\begin{theorem}[Pythagoras]
$a^2 + b^2 = c^2$.
\end{theorem}
\begin{theorem}[Pythagoras, \cite{Pythagoras}]
$a^2 + b^2 = c^2$.
\end{theorem}
\begin{theorem}[Pythagoras, {\cite[p.\ 345]{Pythagoras}}]
$a^2 + b^2 = c^2$.
\end{theorem}
\begin{theorem}[\cite{Pythagoras}]
$a^2 + b^2 = c^2$.
\end{theorem}
\begin{theorem}[{\cite[p.\ 21]{Pythagoras}}]
$a^2 + b^2 = c^2$.
\end{theorem}
\begin{thebibliography}{1}
\bibitem[1]{Pythagoras}
Pythagoras' theorem.
\end{thebibliography}
\end{document}
Um novo estilo de teorema é melhor, a menos que você queira modificar o \thmhead
comando padrão.
Responder2
Esta questão é um pouco antiga agora, mas eu estava abordando o mesmo problema, então pensei em postar como fiz isso. Seria bom poder sinalizar de alguma forma se os parênteses deveriam ser adicionados ou não, mas resolvi isso manualmente.
Solução 0:
Deixe a alteração em vigor permanentemente e adicione seus próprios parênteses.
\patchcmd{\thmhead}{(#3)}{#3}{}{}
\begin{theorem}[(Pythagoras)]
$a^2 + b^2 = c^2$.
\end{theorem}
\begin{theorem}[(Pythagoras, \cite{Pythagoras})]
$a^2 + b^2 = c^2$.
\end{theorem}
\begin{theorem}[\cite{Pythagoras}]
$a^2 + b^2 = c^2$.
\end{theorem}
Claro, isso perde parte do benefício das macros LaTeX, que você pode redefinir uma aparência em um lugar e aplicá-la em todos os lugares - se de repente você decidir colocar as notas do teorema entre colchetes de alguma outra maneira, você terá que passar e altere todos eles manualmente. Portanto, uma pequena melhoria é:
Solução 1:
Defina uma macro.
\patchcmd{\thmhead}{(#3)}{#3}{}{}
\newcommand{\notewrap}[1]{(#1)}
\begin{theorem}[\notewrap{Pythagoras}]
$a^2 + b^2 = c^2$.
\end{theorem}
\begin{theorem}[\notewrap{Pythagoras, \cite{Pythagoras}}]
$a^2 + b^2 = c^2$.
\end{theorem}
\begin{theorem}[\cite{Pythagoras}]
$a^2 + b^2 = c^2$.
\end{theorem}