Subcaption – classe memoir

  • Creatore
    Topic
  • #65645
    Up
    0
    Down
    ::


    Ciao a tutti,

    come ho già detto nella scorsa discussione da me aperta, sto iniziando a imparare a usare la classe memoir. Ho trovato che se carico il pacchetto subcaption (nell’uso delle classi standard lo preferisco al pacchetto subfig), mi viene dato quest’errore:
    `! Package subcaption Error: This package can't be used in cooperation
    (subcaption) with the subfig package.`
    Ma non ho caricato il pacchetto subfig; e dal manuale non mi sembra di aver letto che memoir lo carichi automaticamente. Per prima cosa desidererei capire se ha senso voler caricare subcaption. Se ha senso, come posso utilizzarlo?

    Posto il preambolo che uso:
    `% Codifica di input e di output
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}

    % Scelta tipografica
    \usepackage[greek,italian]{babel}

    % Miglioramento del riempimento delle righe
    \usepackage{microtype}

    %*******************************************************************************

    % Acronimi
    \usepackage{acronym}
    \DeclareRobustCommand*{\acronimo}[1]{%
    \mbox{\scshape\MakeLowercase{#1}}}

    % Bibliografia
    \usepackage[babel,italian=guillemets]{csquotes}
    \usepackage[style=philosophy-modern,square=true,backref,ibidtracker=false]{biblatex}
    \bibliography{Bibliografia.bib}

    % Colori
    \usepackage{xcolor}

    % Didascalie
    \usepackage{subcaption}
    %\captiondelim{ }
    \captionnamefont{\small\itshape\bfseries}
    \captiontitlefont{\small\itshape}
    %\hangcaption
    %\indentcaption{3ex}

    % Ebraico
    \usepackage{cjhebrew}

    % Elenchi – personalizzazione
    \usepackage{enumitem}

    % Epigrafi
    \usepackage{epigraph}
    \setlength{\epigraphwidth}{.75\textwidth}

    % Figure
    \usepackage{graphicx}
    \usepackage{wrapfig}
    \usepackage{float}
    \graphicspath{{immagini/}}

    % Font
    \usepackage{mathpazo} %da usare al posto di palatino (1/3)
    \usepackage[scaled=.95]{helvet} %da usare al posto di palatino (2/3)
    \usepackage{courier} %da usare al posto di palatino (3/3)
    \usepackage{calligra}

    % Foootnote
    \usepackage{footnote}

    % Greco
    \usepackage{gfsporson}
    \usepackage{teubner}

    % Indici
    \usepackage{makeidx} %indice analitico
    \usepackage[tight,italian]{minitoc}
    \usepackage{tocloft}
    %\renewcommand{\cftchapfillnum}[1]{\nobreak\hspace{1.5em}\textbf{#1}\cftparfillskip\par}
    %\renewcommand{\cftsecfillnum}[1]{\nobreak\hspace{1.5em}#1\cftparfillskip\par}
    %\renewcommand{\cftsubsecfillnum}[1]{\nobreak\hspace{1.5em}#1\cftparfillskip\par}
    %\renewcommand{\cftsubsubsecfillnum}[1]{\nobreak\hspace{1.5em}#1\cftparfillskip\par}
    %\renewcommand{\cftfigfillnum}[1]{\nobreak\hspace{1.5em}#1\cftparfillskip\par}
    %\renewcommand{\cfttabfillnum}[1]{\nobreak\hspace{1.5em}#1\cftparfillskip\par}

    % Interlinea
    \linespread{1.05}\selectfont

    % Lettrine
    \usepackage{lettrine}

    % Lipsum
    \usepackage{lipsum}

    % Note a margine
    \usepackage{mparhack}

    % Oggetti rotanti
    \usepackage{rotating}

    % Pacchetti per la matematica
    \usepackage{amssymb,amsmath,amsthm}
    \usepackage{mathrsfs,eucal,dsfont}

    % Riferimenti automatici
    \usepackage[italian]{varioref}

    % Righe di codici
    \usepackage{listings}
    \lstset{language=Matlab,basicstyle=\small\ttfamily}

    % SI delle misure
    \usepackage[decimalsymbol=comma]{siunitx}
    \sisetup{detect-display-math=true}

    % Sistemi di equazioni
    \usepackage{empheq}

    % Sottolineatura testo
    \usepackage[normalem]{ulem}

    % Stile e dimensioni pagina, dimensioni corpo testo
    \usepackage{emptypage}

    % Stili (usando headstyles viene richiamato il corrispettivo chapterstyle)
    \pagestyle{ruled}
    %\chapterstyle{bianchi}
    %\chapterstyle{bringhurst}
    %\chapterstyle{wilsondob}
    %\headstyles{bianchi}
    %\headstyles{bringhurst}
    %\headstyles{crosshead}
    %\headstyles{dowding}
    %\headstyles{komalike}
    %\headstyles{memman}
    %\headstyles{ntglike}
    %\headstyles{tandh}
    \headstyles{wilsondob}

    % Tabelle
    \usepackage{tabularx}
    \usepackage{array}
    \usepackage{booktabs}
    \usepackage{multicol}
    \usepackage{multirow}
    \usepackage{longtable}

    % \text…
    \usepackage{textcomp}

    % URL
    \usepackage{url}

    % Riferimenti ipertestuali (va caricato per ultimo)
    \usepackage[pdfborder=000,pdfstartpage=1,pdftitle={},pdfauthor={Nome Cognome}]{hyperref}

    %*******************************************************************************

    % Numerazione equazioni, figure e subfigure
    %\numberwithin{equation}{section}
    %\numberwithin{figure}{section}
    %\numberwithin{subfigure}{section}

    % Profondità  di numerazione dei titoli
    \setcounter{secnumdepth}{3}
    \setcounter{tocdepth}{3}

    %*******************************************************************************

    % Nuovi comandi
    \newcommand{\ull}{\underline}
    \newcommand{\dul}[1]{\underline{\underline{#1}}}
    \newcommand{\ol}{\overline}
    \newcommand{\dol}[1]{\overline{\overline{#1}}}
    \newcommand{\ds}{\displaystyle}
    \newcommand{\enep}{\text{e}}
    \newcommand{\diff}{\mathop{}\!d}
    \newcommand{\imm}{\text{i}}
    \newcommand{\immag}[1]{\text{Im}\left\{#1\right\}}
    \newcommand{\real}[1]{\text{Re}\left\{#1\right\}}
    \newcommand{\e}[1]{\num[exponent-product=\cdot,exponent-base=10]{#1}}

    % E-mail
    \newcommand{\email}[1]{\href{mailto:#1}{\texttt{#1}}}

    % Greco
    \newcommand{\greco}{\foreignlanguage{greek}}

    % Note a margine
    \DeclareRobustCommand{\graffito}[1]{\marginpar{%
    \slshape\footnotesize%\small%
    \parindent=0pt\lineskip=0pt\lineskiplimit=0pt%\baselineskip=10pt
    \tolerance=2000\hyphenpenalty=300\exhyphenpenalty=300%
    \doublehyphendemerits=100000\finalhyphendemerits=\doublehyphendemerits%
    \raggedright\hspace{0pt}#1}}

    \newcommand{\mymarginpar}[1]{\marginpar[\raggedleft\footnotesize\itshape#1]{\raggedright\footnotesize\itshape#1}}

    % Omissis
    \newcommand{\omissis}{[\dots\negthinspace]}

    \DeclareRobustCommand{\vect}[1]{
    \ifcat#1\relax
    \boldsymbol{#1}
    \else
    \mathbf{#1}
    \fi}
    \DeclareRobustCommand{\mat}[1]{
    \ifcat#1\relax
    \boldsymbol{#1}
    \else
    \mathbf{#1}
    \fi}

    \makeatletter
    \newcommand{\der}[2]{\begingroup
    \@tempswafalse\toks@={}\count@=\z@
    \@for\next:=#2\do
    {\expandafter\check@var\next\@nil
    \advance\count@\der@exp
    \if@tempswa
    \toks@=\expandafter{\the\toks@\,}%
    \else
    \@tempswatrue
    \fi
    \toks@=\expandafter{\the\expandafter\toks@\expandafter\partial\der@var}}%
    \frac{\partial\ifnum\count@=\@ne\else^{\number\count@}\fi#1}{\the\toks@}%
    \endgroup}
    \def\check@var{\@ifstar{\mult@var}{\one@var}}
    \def\mult@var#1#2\@nil{\def\der@var{#2^{#1}}\def\der@exp{#1}}
    \def\one@var#1\@nil{\def\der@var{#1}\chardef\der@exp\@ne}
    \makeatother
    %esempio:\der{f}{*{2}{x_i},y}

    \makeatletter
    \newcommand{\dert}[2]{\begingroup
    \@tempswafalse\toks@={}\count@=\z@
    \@for\next:=#2\do
    {\expandafter\check@var\next\@nil
    \advance\count@\der@exp
    \if@tempswa
    \toks@=\expandafter{\the\toks@\,}%
    \else
    \@tempswatrue
    \fi
    \toks@=\expandafter{\the\expandafter\toks@\expandafter d\der@var}}%
    \frac{d\ifnum\count@=\@ne\else^{\number\count@}\fi#1}{\the\toks@}%
    \endgroup}
    \def\check@var{\@ifstar{\mult@var}{\one@var}}
    \def\mult@var#1#2\@nil{\def\der@var{#2^{#1}}\def\der@exp{#1}}
    \def\one@var#1\@nil{\def\der@var{#1}\chardef\der@exp\@ne}
    \makeatother

    % Renewcommand
    \renewcommand{\epsilon}{\varepsilonup}
    \renewcommand{\phi}{\varphi}
    \renewcommand{\theta}{\vartheta}

    % Nuovi ambienti
    \newenvironment{citazione}
    {\begin{quotation}\small}
    {\end{quotation}}

    % Nuovi operatori
    \DeclareMathOperator{\arcot}{arcot}
    \DeclareMathOperator{\diverg}{div}
    \DeclareMathAlphabet{\mathpzc}{OT1}{pzc}{m}{it}

    % Newtheorem
    \newtheorem{definizione}{Definizione}
    \newtheorem{equazione}{Equazione}
    \newtheorem{ipotesi}{Ipotesi}
    \newtheorem{principio}{Principio}
    \newtheorem{teorema}{Teorema}

    % DeclarePairedDelimiter
    \DeclarePairedDelimiter{\abs}{\lvert}{\rvert}
    \DeclarePairedDelimiter{\norma}{\lVert}{\rVert}

    %*******************************************************************************

    \usepackage{etex}
    \usepackage{pgfplots}
    \pgfplotsset{compat=newest}`
    Se notate qualche pacchetto inutilmente caricato, vi sarò molto grato se me lo farete notare. Sarà ben accetto qualsiasi consiglio o critica.

    Grazie mille e buon weekend,
    Marco.

Visualizzazione 4 filoni di risposte
  • Autore
    Risposte
    • #65646
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Intanto vai in fondo alla pagina xxix della documentazione di memoir e guarda l’elenco di tutti i pacchetti simulati. è pur vero che subfig non vi è caricato, ma bisogna poi vedere con subcaption determina se può o non può collaborare con altri pacchetti; su due piedi non saprei dirti come faccia senza andare a leggere il codice di subcaptiion.

        Però quando vai a controllare quell’elenco di pacchetti già simulati vedi che ne hai caricati alcuni che non servono e che memoir rifiuta, come se li avesse già caricati; non vedi errori perché memoir provvede da sola a passare sotto silenzio questo genere di cose; forse trovi dei warning nel file log.

        Uno fra tutti: booktabs; ma non è l’unico, mi pare.

      • #65647
        Up
        0
        Down
        ::


        Ciao Claudio,

        grazie della risposta. Ho fatto come hai detto, e ho quindi eliminato la chiamata di diversi pacchetti. Perdonami, ma non ho capito cosa intendi con la frase:

        OldClaudioè pur vero che subfig non vi è caricato, ma bisogna poi vedere con subcaption determina se può o non può collaborare con altri pacchetti

        Grazie ancora e buona serata,
        Marco.

      • #65648
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Normalmente se un pacchetto è stato caricato con \usepackage o \RequirePackage, viene impostata una variabile interna con il nome del pacchetto, se il pacchetto viene caricato per la prima volta; se invece si cerca di ricaricare il pacchetto, la variabile esiste e contiene le informazioni relative al pacchetto, per cui il caricamento viene omesso.

          memoir genera queste variabili per tutti i pacchetti che emula, per cui quei pacchetti non possono venire caricati dall’utente.

          subfig non è né simulato né caricato; come fa subcaption a determinare che non può collaborare in presenza di subfig? Non so rispondere, perché non ho esaminato il codice di subcaption, però è possibile che subcaption, invece di controllare la presenza della famosa variabile interna legata alla caricamento di subfig, variabile che non esiste perché subfig non è né caricato né simulato da memoir, controlli l’esistenza di una particolare macro definita solamente da subfig; è un controllo molto facile da fare; ma è così che si comporta subcaption? Ripeto, non so rispondere, perché non ho esaminato il codice di subcaption.

          Vado allora a vedere che cosa fa subcaption:
          `
          \caption@ifundefined\subfigure{}{%
          \PackageError{subcaption}{%
          This package can't be used in cooperation\MessageBreak
          with the subfigure package}{RTFM}%
          \endinput}
          `

          Allora come si vede all’interno di subcaption.syu, alle prime righe compare quel controllo che verifica se esiste ed è defintia la “control sequence” \subfigure;
          siccome la trova definita, subcaption ne deduce che il pacchetto subfigure è già stato caricato, e senza eseguire altri contorlli, termina l’input del file dopo aver dato il messaggio di errore che vedi sopra e che riporto in pulito:

          This package can’t be used in cooperation
          with the subfigure package

          Subito dopo subcaption esegue un altro controllo:
          `
          \caption@ifundefined\subfloat{}{%
          \PackageError{subcaption}{%
          This package can't be used in cooperation\MessageBreak
          with the subfig package}{RTFM}%
          \endinput}
          `
          e stavolta cita esplicitamente il pacchetto subfig, perché trova che la macro \subfloat è già definita.

          Ora fra i pacchetti emulati non compare né subfig, né subfigure, tuttavia memoir permette di definire dei subfloat mediante il comando \newsubfloat e certamente dispone del comando \subcaption; vi dedica tutto il capitolo 10 intitolato Floats and captions; in particolare è interessante il paragrafo 10.9.

          Quindi se ti interessa avere sottofigure in un ambiente figure, ognuna con la sua didascalia, e poi una didascalia generale relativa all’insieme delle didascalie, allora non hai bisogno di caricare pacchetti perché la funzionalità che ti serve è già contenuta in memoir.

        • #65649
          Up
          0
          Down
          ::


          La classe memoir ha già il supporto per le sottofigure, non serve caricare né subfig né, tanto meno, subcaption.

          Quanto al tuo preambolo, carica etex per primo e non usare ulem per nessun motivo: la sottolineatura è un tabù in tipografia (non riguarda sottolineature di simboli in formule, ovviamente, ma solo sottolineatura di parole o, peggio, frasi).

          Ciao
          Enrico

        • #65650
          Up
          0
          Down
          ::


          Ciao,


          @Claudio
          : grazie mille per la tua risposta. Anche se di TeX (purtroppo) non ne so nulla, credo di aver capito la serie di passaggi da te descritti. Ora ho le idee più chiare.


          @Enrico
          : ti ringrazio di tutto, sia per le indicazioni riguardo a subcaption, sia per quelle riguardo al mio preambolo, senza dimenticare quelle sulla tipografia che fanno sempre piacere.

          Grazie ancora e buona serata,
          Marco.

      Visualizzazione 4 filoni di risposte
      • Devi essere connesso per rispondere a questo topic.

      Go to top