- Questo topic ha 26 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 10 anni, 9 mesi fa da
davidebond.
-
CreatoreTopic
-
30 Ottobre 2015 alle 15:08 #103892::
Innanzi tutto, mi scuso per non aver messo [risolto] al mio ultimo quesito, ma non ci sono riuscito…Questa domanda è in parte connessa alla precedente. Vorrei creare un apposito file.bst che mi permetta di formattare in un certo modo gli items bibliografici. Ci tengo a precisare, che dato lo scopo per cui vorrei creare questo nuovo stile, esistono solo tre Tipi di record: article, book, incollection. Le voci andrebbero numerate senza parentesi e messe in ordine di citazione. I nomi andrebbero abbreviati. Gli esempi che seguono sono di Fantasia.
1. article. Esempio, 1. E.~Schröder, Ueber iterirte Funktionen, \emph{Mathematische Annalen}, (6), 4, (1861), 15–87.
Il Numero (in tondo) tra parentesi indica la Serie della rivista, il successivo il volume. Non viene indicato il Numero, il quaderno o altro. Segue l’anno e le pagine, senza “pp.” o altro. Si notino anche che i vari blocchi sono separati sempre da virgole.
2. book. Esempio, 1. D.~Hilbert, \emph{Die Grundlagen der Geometrie}, Leipzig, Verlag und Druck von B.G.~Teubner, (1899).
Si noti la successione, address-publisher.
3. incollection. Esempio, 1. G.~Frege, Über Sinn und Bedeutung, \emph{Gesammelte Werke}, herausgegeben von N.E.~Abel und É.~Galois, 3, (1954), 234–266.
Il caso 3 imita il caso 1, con la differenza che qui viene inserita una “note” tra il booktitle e l’eventuale volume. Parlo di “note” e non di editori, anche se si tratta di questo, perché dovento gestire item in lingue differenti, forse è il caso di considerare la parte degli editori, come una nota, in modo da poter agir liberamente a seconda die casi. L’esempio 3 illustra anche come vorrei che fosse citata una persona con due nomi: Niels Erik Abel, come N.E.~Abel.
Ho dato un’occhiata superficiale alla guida How to tame the beast, ma la trovo difficile. Usare il comando da terminale pdflatex makebst non mi permette in modo chiaro di ottenere quanto scritto sopra. Ho provato a modificare a mano un file.bst ottenuto da terminale rispondendo ai vari quesiti, ma ho ricevuto messaggi di errore. Questo perché non so, effettivamente, dove mettere le mani.
Qualcuno potrebbe consigliarmi?
Grazie,
davide
-
CreatoreTopic
-
AutoreRisposte
-
-
30 Ottobre 2015 alle 16:25 #103893
-
30 Ottobre 2015 alle 16:59 #103894
-
30 Ottobre 2015 alle 17:08 #103895::
Modificare e/o creare file .bst è ad oggi assurdo. A meno che non si sappia già come fare.
La soluzione più attuale è usare il pacchetto biblatex. Come motore bibliografico puoi usare biber (consigliato) o bibtex,
a seconda delle esigenze. Esistono già diversi stili. Se nessuno fosse soddisfacente si possono modificare in maniera molto più immediata
rispetto ai vecchi file .bst.Trovi delle indicazioni preliminari sull’Arte di scrivere con LaTeX.
Ciao
Ivan
-
2 Novembre 2015 alle 14:45 #103896::
Allora. Anzitututto, grazie per il consiglio che ho cercato di seguire. Io conto di usare solo @article, @book e @inproceedings. Ho creato un preambolo del genere:`\documentclass[]{book}
%\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage[T1]{fontenc}\usepackage[autostyle]{csquotes}
\usepackage[
backend=biber,
style=numeric,
%sortlocale=de_DE,
natbib=true,
url=false,
doi=false,
eprint=false,
sorting=none,
firstinits=true
]{biblatex}\renewbibmacro{in:}{}
\renewbibmacro*{publisher+location+date}{%from standard.bbx
\printlist{location}%
\iflistundef{publisher}
{\setunit*{\addcomma\space}}
{\setunit*{\addcomma\space}}%instead of \addcolon\space
\printlist{publisher}%
\setunit*{\addcomma\space}%
\usebibmacro{date}%
\newunit}\DeclareFieldFormat{pages}{#1}% no prefix for the `pages` field in the bibliography
\renewcommand*{\newunitpunct}{\addcomma\space}
\DeclareFieldFormat[book]{date}{(#1)}
\DeclareFieldFormat[article]{title}{#1}
\DeclareFieldFormat[article]{series}{(#1)\addcomma}
\DeclareFieldFormat[article]{journaltitle}{\emph{#1}\addcomma}
\DeclareFieldFormat[article]{volume}{#1\addcomma}
\DeclareFieldFormat[inproceedings]{title}{#1}
\DeclareFieldFormat[inproceedings]{date}{(#1)}
`Tutto funziona alla perfezione, salvo due cose (si Veda il mio post sugli items bibliografici che devono essere diversi). Mi resta, da eliminare le parentesi quadre e da sostituirle in bibliografia da un semplice Numero seguito da un puntino o da un Numero tra parentesti angolate. Nel primo caso, nel testo deve comparire solo il Numero, nel secondo il Numero tra parentesi angolate. Sinceramente, non mi sembra una buona idea lasciare un Numero sprovvisto di parentesti nel testo, ma non sono problemi miei. Il pacchetto cite non lo posso usare, Pena conflitti. La mia idea era di creare un qualcosa simile al \mybibitem di quel post. Cioè mettere di Default i Numeri senza parentesi e in certi casi inserirli tra parentesi angolate. Come potrei fare?
Grazie,
davide
-
3 Novembre 2015 alle 12:55 #103897::
Allora. Sono riuscito a diversificare tre Modi di citare, senza parentesi con \cite*{}, con parentesi con \citep{} e tra bra-kets come segue:`
\DeclareCiteCommand{\citer}
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\printtext{$\langle$\usebibmacro{cite}$\rangle$ \usebibmacro{postnote}}}
{\multicitedelim}
{}
`Però, così non funziona. Vorrei che se citassi senza parentesi, anche l’entrata corrispondente in bibliografia fosse senza parentesi, e così per le altre voci.
Al momento, sono riuscito solo a fornire un’opzione globale a tutti gli items bibliografici. Cosa che non voglio:
`
\DeclareFieldFormat{labelnumberwidth}{#1\addperiod}
`Un aiutino non sarebbe male. Sto cercando nella documentazione e in Google, ma non riesco a capire come fare.
Grazie,
davide
-
3 Novembre 2015 alle 16:59 #103898
-
4 Novembre 2015 alle 12:08 #103899::
La soluzione sarebbe di rendere dipendenti l’etichette della bibliografia dal modo in cui si cita quell’item bibliografico nel testo. Per esempio, se uso \cite*, allora il Numero dell’item bibliografico nella bibliografia è inserito tra parentesi quadre, se uso \citep il Numero dell’item bibliografico non ha parentesi nella bibliografia, ecc. Si noti, il condizionale “se uso… allora”. Pensavo ad una costruzione con il pacchetto ifthen.Grazie,
davide
-
4 Novembre 2015 alle 12:51 #103900::
Vedo che stai tenendo in piedi un filone di discussione da solo, senza che altri intervengano. O il tuo problema non ha soluzione, oppure nessuno di noi è capace di darti una dritta. Nemmeno io ti so dare una dritta, per alcuni motivi:
1) tecnicamente non sono capace di fare quello che desideri;
2) se mi ci mettessi, forse dopo alcun giorni di lavoro potrei trovare una soluzione, o magari trovare che il problema non ha soluzione;
3) quando non esisteva biblatex tutti, anche gli umanisti, si arrangiavano con quello che bibtex ei i file .bst consentivano di fare; natbib era diventato il pacchetto più usato e tutti erano felici e contenti, anche gli umanisti; poi è arrivato l’onnipotente biblatex che consente di andare molto più in là in quanto a possibilità di personalizzare le bibliografie. Naturalmente per farlo bisogna conoscere molto bene la sua documentazione ed essere in grado di decifrare il codice; qualcuno l’ha fatto e ha prodotto pacchetti di estensione di biblatex; ciò nonostante gli umanisti non sono ancora soddisfatti, perché non riescono a realizzare la loro bibliografia secondo le loro regole che, per definizione, sono le uniche valide, e ogni altra regola è per deduzione logica non valida (non sono parole mie, ma di un umanista che le ha pronunciate al Meeting di Trento un paio di settimane fa).Perciò da vile meccanico (secondo le parole di Seneca) non riesco ad immedesimarmi in queste esigenze strane. Per me esistono solo le norme ISO-UNI e queste non parlano affatto di adattare le citazioni nell’elenco bibliografico con il modo ci citare. Si potrebbe dedurre che qualunque modo di citazione possa andare bene, ma non è lo spirito della norma. Noi ingegneri, ops, vili meccanici, abbiamo altre esigenze e usiamo i riferimenti numerici e le citazioni numeriche, anche perché di solito disponiamo di sole 4 pagine negli atti dei nostri congressi per riportare i risultati dei nostri studi che magari ci sono costati certamente mesi, talvolta anni di lavoro. In 4 pagine non hai da sbizzarrirti molto con certe sofisticherie di riferimento e di citazione.
Ma siccome queste considerazioni sono off topic, rientro nell’argomento del tuo ultimo messaggio e ti dico subito che vedo molto dura la possibilità di usare statement condizionali con ifthenelse quando c’è di messo una scrittura delle informazioni nel file aux; già, infatti le chiavi di citazione accompagnate dalle informazioni accessorie vengono rilevate da pdflatex (o xelatex o lualatex) in una prima compilazione e vengono scritte nel file .aux; poi entrano in gioco bibtex o biber che leggono il file aux e il file .bib e producono il file con la bibliografia scritta in modo da poterla comporre nel file .bbl. Nella successiva esecuzione pdflatex (o uno degli altri programmi) legge il file bbl e scrive nel file aux il significato di ogni chiave; nella terza esecuzione il file aux viene letto da pdflatex (& company), cosicché i comandi \cite possono eseguire l’associazione fra la chiave e quello che c’è da citare. Finalmente il file pdf contiene i riferimenti composti in modo corretto, ma l’impaginazione potrebbe essere andata a ramengo, specialmente con citazioni elaborate, che producono lunghe stringhe nel testo principale o nelle note; il risultato è che bisogna ancora lanciare pdflatex una o due volte finché nel file log non compaiono più messaggi che alcune cross-reference sono cambiate.
In questa situazione piuttosto complessa, penso o temo che i comandi condizionali non possano essere trasmessi integri nel file aux, e che i comandi fragili mostrino tutta la loro fragilità in questi numerosi passaggi.Perciò: nemo ad impossibilia tenetur; se è impossibile o troppo difficile, i tentativi che continui a fare, li fai solo per soddisfare il tuo amor proprio (cosa che apprezzo moltissimo; mai arrendersi davanti alle difficoltà!) ma bisogna restare anche con i piedi per terra; spesso una resa onorevole è meglio che un disastro di perdita di tempo e magari anche di vil denaro.
-
4 Novembre 2015 alle 13:01 #103901::
Infatti. È quella la mia paura: che non sia possibile. Ho letto la documentazione di biblatex, l’arte di scrivere con il Latex, ma da nessuna parte viene indicato un collegamento con il comando per citare. La mia impressione è che in un certo senso siano cose separate. A quel punto ho pensato al trucchetto di aprire il file.bbl e copiarlo nel file principale. Cosa che si può fare con bibtex, ma non con biblatex. Forse è inutile insistere. Volevo vedere se ci riuscivo.Riguardo al modo di utilizzare il Latex. Molti chiedono al Latex qualcosa che non può fare o per il quale non è stato pensato. Questo è il mio caso. Per i fatti miei, io uso il Latex senza nessuna particolarità. Trovo che vada benissimo per la maggior parte dei casi. Se gli editori di una rivista vogliono cambiare l’aspetto, sono problemi loro.
In questo caso sono problemi miei…
Grazie,
davide
-
4 Novembre 2015 alle 13:19 #103902::
L’unica soluzione fattibile è creare un nuovo driver con`\DeclareBibliographyDriver`
per quelle voci che devono apparire in bibligorafia con un’etichetta diversa.
Quindi, per esempio, avrai il tipo di voce nparticle che è identico ad article ma senza le parentesi attorno all’etichetta numerica.Ciao
Ivan
-
4 Novembre 2015 alle 15:45 #103903
-
4 Novembre 2015 alle 15:55 #103904::
Ritiro tutto… La bibliografia è stampata da un normalissimo ambiente \list.
Non vedo soluzioni razionali.
La cosa migliore sarebbe dividere in due la bibliografia e mettere in una le voci con le parentesi e nell’altra quelle senza.
O, ancora meglio, usando l’opzione prefixnumber di \printbibliography.
Naturalmente bisogna raggruppare le voci in apposite categorie e/o usare filtri.Ciao
Ivan
-
4 Novembre 2015 alle 16:09 #103905::
A me è venuta questa idea un po’ stupida. In questo esempio,`
\DeclareFieldFormat[article]{labelnumberwidth}{[#1]\addperiod}
\DeclareFieldFormat[book]{labelnumberwidth}{$\langle$#1$\rangle$\addperiod}
\DeclareFieldFormat[inproceedings]{labelnumberwidth}{#1\addperiod}
`riesco a distinguere tre Tipi di entrate, a seconda che siano articoli, libri o inproceedings. Si potrebbe creare un nuovo tipo di voce identico in tutto a quelli Standard, salvo che nel nome e per questi, e solo per questi, introdurre delle parentesi apposite. Rimane il problema che il testo non si formatta bene. Nel senso che la prima lettera dell’item con le parentesi angolate è più spostata a destra delle altre, per ovvi motivi. A questo punto, sarebbe sufficiente fare partire tutti gli items allo stesso modo, indipendentemente dalle parentesi o dall’assenza di queste, magari prendendo come Misura di riferimento la parentesi che ingombra di più. Si può fare?
Cade ovviamente il collagamento tra i comandi \cite & co. e gli items, ma siccome ogni articolo ha una bibliografia non eccessivamente corposa, si potrebbero rinominare a mano gli items bibliografici a seconda delle esigenze. Ergo, il punto è? Come formattare il tutto, come se ci fosse un unico tipo di etichetta?
Grazie,
davide
-
5 Novembre 2015 alle 10:15 #103906::
Perché vado avanti con questa discussione? Innanzitutto, perché sono un tipo curioso. In secondo luogo, perché spero che parti di questa discussione possano interessare altri su come maneggiare la bibliografia. Intanto, ho mostrato a dei possibili interessati, come si modificano globalmente i Numeri degli items bibiliografici. È chiaro che se io sono capace di produrre i Numeri dentro parentesi tonde, sono anche in grado di produrli in corsivo o in grassetto. Imparato il trucco, lo si applica ad altro.Al momento sono giunto a questa possibilità. Sono in grado di modificare l’apparenza dei riferimenti nel testo principale.
Sono anche in grado di modificare singolarmente le entrate nella bibliografia. Il problema è che queste due procedure non sono connesse tra loro. Al momento sto lavorando su quest’ultima parte. Ho introdotto una nuova classe di documento: xarticle. La mia idea sarebbe che ogni volta che voglio citare in maniera diversa un testo, uso la sua versione con la x finale. Questo, il codice:
`\DeclareBibliographyDriver{xarticle}{
\newunit
\printtext{E.~Schr{\”o}der}
\newunit\newblock
\printfield{title}%
\newunit\newblock
\printfield{journaltitle}%
\newunit\newblock
\printfield{series}%
\newunit\newblock
\printfield{volume}%
\newunit\newblock
\printfield{year}%
\newunit\newblock
\printfield{pages}%
\finentry}`Dove sta il problema? Non capisco come introdurre il nome dell’autore seza usare printtext. Se uso “printfield{authorx}”, mi trovo dello spazio bianco e null’altro. Come mai? Io preferireri usare \printfield per evitare di scrivere il nome dell’autore.
Grazie,
davide
-
5 Novembre 2015 alle 10:30 #103907::
Ho trovato la risposta, modificando il codice precendente nel modo che segue:`
\DeclareBibliographyDriver{xarticle}{
\usebibmacro{begentry}%
\usebibmacro{author/translator+others}%
\newunit\newblock
\printfield{title}%
\newunit\newblock
\printfield{journaltitle}%
\newunit\newblock
\printfield{series}%
\newunit\newblock
\printfield{volume}%
\newunit\newblock
\printfield{year}%
\newunit\newblock
\printfield{pages}%
\finentry}
`Disgraziatamente, tutti gli items partono da una verticale diversa. Non ci sono due item (su quattro) che partano allo stesso modo. Come posso ottenere una formattazione uniforme? Per tentativi, con \bibtex e la bibliografia inserita a mano, alla fine del file, me la cavavo eliminando 3 punti di spazio Dagli items con bra-kets. Qui, è tutto un Casino.
Non sarebbe neanche male creare una bibmacro ad hoc, al posto di author, authorx.
Grazie,
davide
-
5 Novembre 2015 alle 12:07 #103908
-
5 Novembre 2015 alle 14:21 #103909::
Stranamente, non riesco a compilare il file importando la bibliografia. Allora, prima copio il file .tex e poi il file .bib.`
\documentclass[]{book}
%\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage[T1]{fontenc}
\usepackage{amssymb,latexsym}
\usepackage{cleveref}
\usepackage{ifthen}
\usepackage{footmisc}\usepackage[autostyle]{csquotes}
%%%%%%%%%%% usare \cite*{} per produrre citazioni senza parentesi
%%%%%%%%%%% usare \citer{} per produrre citazioni con bra-kets
%%%%%%%%%%% usare \citep{} per produrre citazioni con parentesi quadre\usepackage[
backend=biber,
style=numeric,
sortlocale=de_DE,
natbib=true,
url=false,
doi=false,
eprint=false,
sorting=none,
firstinits=true
]{biblatex}\renewbibmacro{in:}{}
\renewbibmacro*{publisher+location+date}{%from standard.bbx
\printlist{location}%
\iflistundef{publisher}
{\setunit*{\addcomma\space}}
{\setunit*{\addcomma\space}}%instead of \addcolon\space
\printlist{publisher}%
\setunit*{\addcomma\space}%
\usebibmacro{date}%
\newunit}\DeclareFieldFormat{pages}{#1}% no prefix for the `pages` field in the bibliography
\renewcommand*{\newunitpunct}{\addcomma\space}
\DeclareFieldFormat[book]{date}{(#1)}
\DeclareFieldFormat[article]{title}{#1}
\DeclareFieldFormat[article]{series}{(#1)\addcomma}
\DeclareFieldFormat[article]{journaltitle}{\emph{#1}\addcomma}
\DeclareFieldFormat[article]{volume}{#1\addcomma}
\DeclareFieldFormat[inproceedings]{title}{#1}
\DeclareFieldFormat[inproceedings]{date}{(#1)}
\DeclareCiteCommand{\cite}
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\printtext{\usebibmacro{cite} \usebibmacro{postnote}}}
{\multicitedelim}
{}\DeclareCiteCommand{\citer}
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\printtext{$\langle$\usebibmacro{cite}$\rangle$ \usebibmacro{postnote}}}
{\multicitedelim}
{}\DeclareFieldFormat[article]{labelnumberwidth}{[#1]\addperiod}
\DeclareFieldFormat[book]{labelnumberwidth}{$\langle$#1$\rangle$\addperiod}
\DeclareFieldFormat[inproceedings]{labelnumberwidth}{#1\addperiod}\DeclareBibliographyDriver{xarticle}{
\usebibmacro{begentry}%
\usebibmacro{author/translator+others}%
\newunit\newblock
\printfield{title}%
\newunit\newblock
\printfield{journaltitle}%
\newunit\newblock
\printfield{series}%
\newunit\newblock
\printfield{volume}%
\newunit\newblock
\printfield{year}%
\newunit\newblock
\printfield{pages}%
\finentry}\DeclareFieldFormat[xarticle]{title}{#1}
\DeclareFieldFormat[xarticle]{series}{(#1)\addcomma}
\DeclareFieldFormat[xarticle]{journaltitle}{\emph{#1}\addcomma}
\DeclareFieldFormat[xarticle]{volume}{#1\addcomma}
\DeclareFieldFormat[xarticle]{labelnumberwidth}{$\langle$#1$\rangle$\addperiod}
\DeclareFieldFormat[xarticle]{year}{(#1)}\RequireBibliographyStyle{numeric}
%\defbibenvironment{bibliography}
% {\list
% {%
% \printfield{prefixnumber}%
%{$\langle$\printfield{labelnumber}$\rangle$}\addperiod}
% {\setlength{\labelwidth}{\labelnumberwidth}%
% \setlength{\leftmargin}{\labelwidth}%
% \setlength{\labelsep}{\biblabelsep}%
% \addtolength{\leftmargin}{\labelsep}%
% \setlength{\itemsep}{\bibitemsep}%
% \setlength{\parsep}{\bibparsep}}%
%\renewcommand*{\makelabel}[1]{\hss##1}}
% {\endlist}
%{\item}\addbibresource{prova.bib}
%\usepackage[]{hyperref}
%\hypersetup{
%colorlinks=true,
%}%% ##############################
\begin{document}Lorem ipsum dolor sit amet~\citer{schroder}.
At vero eos et accusam et justo duo dolores et ea rebum~\citep{schroder1}. Infine, citiamo~\cite*{schroder2}. Anche \cite{schroder4}.
\printbibliography
\end{document}`
Questa la bibliografia:
`
@BOOK{schroder,
author=”Enrst Schr{\”o}der”,
title=”Der Operationskreis des Logikkalk{\”u}ls”,
publisher=”Teubner”,
address=”Leipzig”,
year=1877,
}@ARTICLE{schroder1,
author=”E.~Schr{\”o}der”,
title=”Ueber meine Vorlesungen”,
journal=”Mathematische Annalen”,
volume=4,
year=1895,
pages=”125–130″,
series=5,
}@INPROCEEDINGS{schroder2,
author=”Ernst Schr{\”o}der”,
title=”On iterirte Funktionen”,
booktitle=”On Fixed Points”,
editor=”Garret Brikhoff and Volker Peckhaus”,
pages=”356–469″,
address=”Oxford”,
publisher=”Clarendon Press”,
year=1950,
}@XARTICLE{schroder4,
author=”E.~Schr{\”o}der”,
title=”Ueber meine Vorlesungen”,
journal=”Mathematische Annalen”,
volume=4,
year=1895,
pages=”125–130″,
series=5,
}
`So che nel codice del testo.tex ci sono molte cose da eliminare o da sistemare meglio. Ma, sto facendo continuamente esperimenti e pospongo queste operazioni all’ultimo.
Grazie,
davide
-
6 Novembre 2015 alle 16:36 #103910::
Beh, stavolta merito un aiutino per la mia caparbietà. Adesso i comandi \cite*, \citet e \citer influiscono sulla resa bibliografica dei Numeri degli items. Il problema lo pongono i punti. Allego, quella che è la soluzione del mio problema, senza punti nella bibliografia. Il file .bib si trova in un post precedente:`
\documentclass[]{book}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage[T1]{fontenc}
\usepackage{amssymb,latexsym}\usepackage[autostyle]{csquotes}
%%%%%%%%%%% usare \cite*{} per produrre citazioni senza parentesi
%%%%%%%%%%% usare \citer{} per produrre citazioni con bra-kets
%%%%%%%%%%% usare \citet{} per produrre citazioni con parentesi quadre\usepackage[
backend=biber,
style=numeric,
% sortlocale=de_DE,
natbib=true,
url=false,
doi=false,
eprint=false,
sorting=none,
firstinits=true
]{biblatex}\renewbibmacro{in:}{}
\renewbibmacro*{publisher+location+date}{%from standard.bbx
\printlist{location}%
\iflistundef{publisher}
{\setunit*{\addcomma\space}}
{\setunit*{\addcomma\space}}%instead of \addcolon\space
\printlist{publisher}%
\setunit*{\addcomma\space}%
\usebibmacro{date}%
\newunit}\DeclareFieldFormat{pages}{#1}% no prefix for the `pages` field in the bibliography
\renewcommand*{\newunitpunct}{\addcomma\space}
\DeclareFieldFormat[book]{date}{(#1)}
\DeclareFieldFormat[article]{title}{#1}
\DeclareFieldFormat[article]{series}{(#1)\addcomma}
\DeclareFieldFormat[article]{journaltitle}{\emph{#1}\addcomma}
\DeclareFieldFormat[article]{volume}{#1\addcomma}
\DeclareFieldFormat[inproceedings]{title}{#1}
\DeclareFieldFormat[inproceedings]{date}{(#1)}\DeclareBibliographyCategory{bra}
\DeclareBibliographyCategory{brackets}
\DeclareBibliographyCategory{none}\makeatletter
\newrobustcmd{\mkbibbra}[1]{%
\begingroup
\blx@blxinit
\blx@setsfcodes
\ensuremath{\langle}#1\ensuremath{\rangle}\hspace{-3pt}%
\endgroup}
\makeatother\DeclareCiteCommand{\citer}[\mkbibbra]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}%
\addtocategory{bra}{\thefield{entrykey}}}
{\multicitedelim}
{\usebibmacro{postnote}}\DeclareCiteCommand*{\cite}
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}%
\addtocategory{none}{\thefield{entrykey}}}
{\multicitedelim}
{\usebibmacro{postnote}}\DeclareCiteCommand{\citet}[\mkbibbrackets]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}%
\addtocategory{brackets}{\thefield{entrykey}}}
{\multicitedelim}
{\usebibmacro{postnote}}\DeclareFieldFormat{labelnumberwidth}{%
\ifcategory{bra}
{\mkbibbra{#1}}
{\ifcategory{brackets}}
{\mkbibbrackets{#1}}
{\ifcategory{none}
{#1}
{#1}}}}\RequireBibliographyStyle{numeric}
\addbibresource{prova.bib}\begin{document}
I want cite \citer{schroder}~, \cite*{schroder1}, \citet{schroder2} and \citer{lesniewski}~.
\printbibliography
\end{document}
`Si noti la soluzione provvisoria, un po’ sporca consistente nell’aggiunta di \hspace{-3pt}. Il valore l’ho trovato per tentativi. Quello che mi manca sono i punti che sfalsano le entrate. Nel caso dei Numeri senza parentesi è sufficiente inserire nel codice \addperiod. Nel caso delle parentesi quadre, sono ricorso a “~\addperiod”. Nel caso delle bra-kets, a “$\;$\addperiod”. Li ho eliminati dal codice perché quest’ultimo caso fa sballare tutto.
Per comodità reinserisco il file .bib da rinominare come “prova.bib”.
`
@BOOK{schroder,
author=”Enrst Schr{\”o}der”,
title=”Der Operationskreis des Logikkalk{\”u}ls”,
publisher=”Teubner”,
address=”Leipzig”,
year=1877,
}@ARTICLE{schroder1,
author=”E.~Schr{\”o}der”,
title=”Ueber meine Vorlesungen”,
journal=”Mathematische Annalen”,
volume=4,
year=1895,
pages=”125–130″,
series=5,
}@INPROCEEDINGS{schroder2,
author=”Ernst Schr{\”o}der”,
title=”On iterirte Funktionen”,
booktitle=”On Fixed Points”,
editor=”Garret Birkhoff and Volker Peckhaus”,
pages=”356–469″,
address=”Oxford”,
publisher=”Clarendon Press”,
year=1950,
}@XARTICLE{schroder4,
author=”E.~Schr{\”o}der”,
title=”Ueber meine Vorlesungen”,
journal=”Mathematische Annalen”,
volume=4,
year=1895,
pages=”125–130″,
series=5,
}@ARTICLE{lesniewski,
author=”Stanislav Lesniewski”,
title=”On Mereology”,
journal=”Journal f{\”u}r die reine und angewandte Mathematik”,
series=6,
year=1914,
volume=7,
pages=”15–230″,
}
`L’entrata @XARTICLE non viene richiamata. Si può cancellare.
Ovviamente, sono stato aiutato. Da solo non ce l’avrei mai fatta. Spero che tutta questa fatica e innumerevoli lanci di pdflatex possano essere utili a qualcuno.
Grazie,
davide
-
6 Novembre 2015 alle 19:17 #103911::
Non riesco a capire a cosa serva `\hspace{-3pt}` per poi citare con
`I want cite \citer{schroder}~,`
Magari mi sfugge qualcosa. Li ho eliminati e il risultato mi sembra migliore e con meno contorsioni.
Non comprendo il significato di “i punti che sfalsano le entrate”. Ho immaginato che fossero le etichette numeriche ridondanti
nelle voci bibliografiche.Qui sotto trovi l’esempio compilabile completo di bibliografia,
con l’ambiente filecontents, come ti avevo chiesto.
Va creata un tipo di voce nuova per ogni forma di etichetta non consueta:
Per le voci stiate come <n>:
xarticle
xbook
xinproceedings
Per le voci stiate come [n]:
yarticle
ybook
yinproceedingsLe ho definite con \DeclareBibliographyAlias.
`
\documentclass[]{article}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage[T1]{fontenc}
\usepackage{amssymb,latexsym}\usepackage{filecontents}
\begin{filecontents*}{prova.bib}
@XBOOK{schroder,
author=”Enrst Schr{\”o}der”,
title=”Der Operationskreis des Logikkalk{\”u}ls”,
publisher=”Teubner”,
address=”Leipzig”,
year=1877,
}@ARTICLE{schroder1,
author=”E.~Schr{\”o}der”,
title=”Ueber meine Vorlesungen”,
journal=”Mathematische Annalen”,
volume=4,
year=1895,
pages=”125–130″,
series=5,
}@YINPROCEEDINGS{schroder2,
author=”Ernst Schr{\”o}der”,
title=”On iterirte Funktionen”,
booktitle=”On Fixed Points”,
editor=”Garret Birkhoff and Volker Peckhaus”,
pages=”356–469″,
address=”Oxford”,
publisher=”Clarendon Press”,
year=1950,
}@XARTICLE{lesniewski,
author=”Stanislav Lesniewski”,
title=”On Mereology”,
journal=”Journal f{\”u}r die reine und angewandte Mathematik”,
series=6,
year=1914,
volume=7,
pages=”15–230″,
}
\end{filecontents*}\usepackage[autostyle]{csquotes}
%%%%%%%%%%% usare \cite*{} per produrre citazioni senza parentesi
%%%%%%%%%%% usare \citer{} per produrre citazioni con bra-kets
%%%%%%%%%%% usare \citet{} per produrre citazioni con parentesi quadre\usepackage[
backend=biber,
style=numeric,
% sortlocale=de_DE,
natbib=true,
url=false,
doi=false,
eprint=false,
sorting=none,
firstinits=true
]{biblatex}\renewbibmacro{in:}{}
\renewbibmacro*{publisher+location+date}{%from standard.bbx
\printlist{location}%
\iflistundef{publisher}
{\setunit*{\addcomma\space}}
{\setunit*{\addcomma\space}}%instead of \addcolon\space
\printlist{publisher}%
\setunit*{\addcomma\space}%
\usebibmacro{date}%
\newunit}\DeclareFieldFormat{pages}{#1}% no prefix for the `pages` field in the bibliography
\renewcommand*{\newunitpunct}{\addcomma\space}
\DeclareFieldFormat[book]{date}{(#1)}
\DeclareFieldFormat[article]{title}{#1}
\DeclareFieldFormat[article]{series}{(#1)\addcomma}
\DeclareFieldFormat[article]{journaltitle}{\emph{#1}\addcomma}
\DeclareFieldFormat[article]{volume}{#1\addcomma}
\DeclareFieldFormat[inproceedings]{title}{#1}
\DeclareFieldFormat[inproceedings]{date}{(#1)}\DeclareBibliographyCategory{bra}
\DeclareBibliographyCategory{brackets}
\DeclareBibliographyCategory{none}\makeatletter
\newrobustcmd{\mkbibbra}[1]{%
\begingroup
\blx@blxinit
\blx@setsfcodes
\ensuremath{\langle}#1\ensuremath{\rangle}%
\endgroup}
\makeatother\DeclareCiteCommand{\citer}[\mkbibbra]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}%
\addtocategory{bra}{\thefield{entrykey}}}
{\multicitedelim}
{\usebibmacro{postnote}}\DeclareCiteCommand*{\cite}
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}%
\addtocategory{none}{\thefield{entrykey}}}
{\multicitedelim}
{\usebibmacro{postnote}}\DeclareCiteCommand{\citet}[\mkbibbrackets]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}%
\addtocategory{brackets}{\thefield{entrykey}}}
{\multicitedelim}
{\usebibmacro{postnote}}\DeclareBibliographyAlias{xbook}{book}
\DeclareBibliographyAlias{xarticle}{article}
\DeclareFieldFormat{labelnumberwidth}{%
\ifboolexpr{%
test {\ifentrytype{xarticle}}%
or
test {\ifentrytype{xbook}}%
or
test {\ifentrytype{xinproceedings}}%
}%
{\mkbibbra{#1}}{\ifboolexpr{%
test {\ifentrytype{yarticle}}%
or
test {\ifentrytype{ybook}}%
or
test {\ifentrytype{yinproceedings}}%
}%
{\mkbibbrackets{#1}}{#1}}
}%\RequireBibliographyStyle{numeric}
\addbibresource{prova.bib}\begin{document}
I want cite \citer{schroder}, \cite*{schroder1}, \citet{schroder2} and \citer{lesniewski}.
\printbibliography
\end{document}`Esiste anche l’alternativa con le categorie:
`\DeclareFieldFormat{labelnumberwidth}{%
\ifcategory{bra}
{\mkbibbra{#1}}
{\ifcategory{brackets}
{\mkbibbrackets{#1}}
{#1}}}
`Se sai già quali voci andranno citate diversamente è più comodo il primo metodo.
[attachment=1447]davidebond.pdf[/attachment]
Ciao
Ivan
Attachments:
You must be logged in to view attached files. -
7 Novembre 2015 alle 10:21 #103912::
[attachment=1448]prova3.pdf[/attachment]
Anzitutto, ti ringrazio anche solo per sostenermi in questa “avventura”. Avevo inserito \hspace{-3pt} perché altrimenti gli items con parentesi angolate partivano dopo gli altri, probabilmente a causa dell’ingombro delle parentesi. Introducendo i punti, le parentesi angolata destra si poneva sopra il punto. Anche la parentesi angolata destra risultava troppo attaccata al punto. Il caso era diverso con il Numero senza parentesi, perché in quel caso il punto era corretto. Concordo sul fatto che il primo metodo sia più efficiente, anche perché so già quali items dovranno ricevere queste spiacevoli parentesi angolate.Questo era il mio file:
`
\documentclass[]{book}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage[T1]{fontenc}
\usepackage{amssymb,latexsym}\usepackage{filecontents}
\begin{filecontents*}{prova1.bib}
@BOOK{schroder,
author=”Enrst Schr{\”o}der”,
title=”Der Operationskreis des Logikkalk{\”u}ls”,
publisher=”Teubner”,
address=”Leipzig”,
year=1877,
}@ARTICLE{schroder1,
author=”E.~Schr{\”o}der”,
title=”Ueber meine Vorlesungen”,
journal=”Mathematische Annalen”,
volume=4,
year=1895,
pages=”125–130″,
series=5,
}@INPROCEEDINGS{schroder2,
author=”Ernst Schr{\”o}der”,
title=”On iterirte Funktionen”,
booktitle=”On Fixed Points”,
editor=”Garret Birkhoff and Volker Peckhaus”,
pages=”356–469″,
address=”Oxford”,
publisher=”Clarendon Press”,
year=1950,
}@ARTICLE{lesniewski,
author=”Stanislav Lesniewski”,
title=”On Mereology”,
journal=”Journal f{\”u}r die reine und angewandte Mathematik”,
series=6,
year=1914,
volume=7,
pages=”15–230″,
}
\end{filecontents*}\usepackage[autostyle]{csquotes}
%%%%%%%%%%% usare \cite*{} per produrre citazioni senza parentesi
%%%%%%%%%%% usare \citer{} per produrre citazioni con bra-kets
%%%%%%%%%%% usare \citet{} per produrre citazioni con parentesi quadre\usepackage[
backend=biber,
style=numeric,
% sortlocale=de_DE,
natbib=true,
url=false,
doi=false,
eprint=false,
sorting=none,
firstinits=true
]{biblatex}\renewbibmacro{in:}{}
\renewbibmacro*{publisher+location+date}{%from standard.bbx
\printlist{location}%
\iflistundef{publisher}
{\setunit*{\addcomma\space}}
{\setunit*{\addcomma\space}}%instead of \addcolon\space
\printlist{publisher}%
\setunit*{\addcomma\space}%
\usebibmacro{date}%
\newunit}\DeclareFieldFormat{pages}{#1}% no prefix for the `pages` field in the bibliography
\renewcommand*{\newunitpunct}{\addcomma\space}
\DeclareFieldFormat[book]{date}{(#1)}
\DeclareFieldFormat[article]{title}{#1}
\DeclareFieldFormat[article]{series}{(#1)\addcomma}
\DeclareFieldFormat[article]{journaltitle}{\emph{#1}\addcomma}
\DeclareFieldFormat[article]{volume}{#1\addcomma}
\DeclareFieldFormat[inproceedings]{title}{#1}
\DeclareFieldFormat[inproceedings]{date}{(#1)}\DeclareBibliographyCategory{bra}
\DeclareBibliographyCategory{brackets}
\DeclareBibliographyCategory{none}\makeatletter
\newrobustcmd{\mkbibbra}[1]{%
\begingroup
\blx@blxinit
\blx@setsfcodes
\ensuremath{\langle}#1\ensuremath{\rangle}\hspace{-3pt}%
\endgroup}
\makeatother\DeclareCiteCommand{\citer}[\mkbibbra]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}%
\addtocategory{bra}{\thefield{entrykey}}}
{\multicitedelim}
{\usebibmacro{postnote}}\DeclareCiteCommand*{\cite}
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}%
\addtocategory{none}{\thefield{entrykey}}}
{\multicitedelim}
{\usebibmacro{postnote}}\DeclareCiteCommand{\citet}[\mkbibbrackets]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}%
\addtocategory{brackets}{\thefield{entrykey}}}
{\multicitedelim}
{\usebibmacro{postnote}}\DeclareFieldFormat{labelnumberwidth}{%
\ifcategory{bra}
{\mkbibbra{#1}\addperiod}
{\ifcategory{brackets}
{\mkbibbrackets{#1}\addperiod}
{\ifcategory{none}
{#1}
{#1}\addperiod}}}\RequireBibliographyStyle{numeric}
\addbibresource{prova1.bib}\begin{document}
I want cite \citer{schroder}~, \cite*{schroder1}, \citet{schroder2} and \citer{lesniewski}~.
\printbibliography
\end{document}`
Allego il risultato in .pdf.
Grazie. Ciao,
davide
Attachments:
You must be logged in to view attached files. -
7 Novembre 2015 alle 23:35 #103913
-
10 Novembre 2015 alle 9:46 #103914
-
13 Novembre 2015 alle 14:51 #103915
-
13 Novembre 2015 alle 16:04 #103916::
Così il risultato è accettabile. Provalo nel mio codice sopra.
`\DeclareFieldFormat{labelnumberwidth}{%
\ifboolexpr{%
test {\ifentrytype{xarticle}}%
or
test {\ifentrytype{xbook}}%
or
test {\ifentrytype{xinproceedings}}%
}%
{\mkbibbra{#1}}{\ifboolexpr{%
test {\ifentrytype{yarticle}}%
or
test {\ifentrytype{ybook}}%
or
test {\ifentrytype{yinproceedings}}%
}%
{\mkbibbrackets{#1}}{#1\hspace*{.2em}}}}`
Ovviamente non si possono fare i miracoli con questi presupposti.
Si tratta di lista bibliografica che chiamare “degenere” è dir poco.
I punti rimangono inutili e brutti, a prescindere.La funzione logica delle tre tipologie di etichette può essere implementata
in maniera più lineare, elegante e coerente con, direi, tutte le tradizioni bibliografiche,
predisponendo tre bibliografie con numerazione autonoma.Ciao
Ivan
-
14 Novembre 2015 alle 13:44 #103917::
Hai Ragione. Cosa devo dirti? Io uso sempre il vecchio “amsalpha” con bibtex. Funziona bene.Ho leggermente cambiato il codice per inserire i punti. Il risultato è frutto di test empirici in cui provavo varie distanze dal Numero o dalle parentesi. Questo risultato mi sembra il meno peggio.
`
\documentclass[]{article}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage[T1]{fontenc}
\usepackage{amssymb,latexsym}\usepackage{filecontents}
\begin{filecontents*}{prova.bib}
@XBOOK{schroder,
author=”Enrst Schr{\”o}der”,
title=”Der Operationskreis des Logikkalk{\”u}ls”,
publisher=”Teubner”,
address=”Leipzig”,
year=1877,
}@ARTICLE{schroder1,
author=”E.~Schr{\”o}der”,
title=”Ueber meine Vorlesungen”,
journal=”Mathematische Annalen”,
volume=4,
year=1895,
pages=”125–130″,
series=5,
}@YINPROCEEDINGS{schroder2,
author=”Ernst Schr{\”o}der”,
title=”On iterirte Funktionen”,
booktitle=”On Fixed Points”,
editor=”Garret Birkhoff and Volker Peckhaus”,
pages=”356–469″,
address=”Oxford”,
publisher=”Clarendon Press”,
year=1950,
}@XARTICLE{lesniewski,
author=”Stanislav Lesniewski”,
title=”On Mereology”,
journal=”Journal f{\”u}r die reine und angewandte Mathematik”,
series=6,
year=1914,
volume=7,
pages=”15–230″,
}
\end{filecontents*}\usepackage[autostyle]{csquotes}
%%%%%%%%%%% usare \cite*{} per produrre citazioni senza parentesi
%%%%%%%%%%% usare \citer{} per produrre citazioni con bra-kets
%%%%%%%%%%% usare \citet{} per produrre citazioni con parentesi quadre\usepackage[
backend=biber,
style=numeric,
% sortlocale=de_DE,
natbib=true,
url=false,
doi=false,
eprint=false,
sorting=none,
firstinits=true
]{biblatex}\renewbibmacro{in:}{}
\renewbibmacro*{publisher+location+date}{%from standard.bbx
\printlist{location}%
\iflistundef{publisher}
{\setunit*{\addcomma\space}}
{\setunit*{\addcomma\space}}%instead of \addcolon\space
\printlist{publisher}%
\setunit*{\addcomma\space}%
\usebibmacro{date}%
\newunit}\DeclareFieldFormat{pages}{#1}% no prefix for the `pages` field in the bibliography
\renewcommand*{\newunitpunct}{\addcomma\space}
\DeclareFieldFormat[book]{date}{(#1)}
\DeclareFieldFormat[article]{title}{#1}
\DeclareFieldFormat[article]{series}{(#1)\addcomma}
\DeclareFieldFormat[article]{journaltitle}{\emph{#1}\addcomma}
\DeclareFieldFormat[article]{volume}{#1\addcomma}
\DeclareFieldFormat[inproceedings]{title}{#1}
\DeclareFieldFormat[inproceedings]{date}{(#1)}\DeclareFieldFormat[article]{labelnumberwidth}{#1~\addperiod}
\DeclareBibliographyCategory{bra}
\DeclareBibliographyCategory{brackets}
\DeclareBibliographyCategory{none}\makeatletter
\newrobustcmd{\mkbibbra}[1]{%
\begingroup
\blx@blxinit
\blx@setsfcodes
\ensuremath{\langle}#1\ensuremath{\rangle}%
\endgroup}
\makeatother\DeclareCiteCommand{\citer}[\mkbibbra]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}%
\addtocategory{bra}{\thefield{entrykey}}}
{\multicitedelim}
{\usebibmacro{postnote}}\DeclareCiteCommand*{\cite}
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}%
\addtocategory{none}{\thefield{entrykey}}}
{\multicitedelim}
{\usebibmacro{postnote}}\DeclareCiteCommand{\citet}[\mkbibbrackets]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}%
\addtocategory{brackets}{\thefield{entrykey}}}
{\multicitedelim}
{\usebibmacro{postnote}}\DeclareBibliographyAlias{xbook}{book}
\DeclareBibliographyAlias{xarticle}{article}\DeclareFieldFormat{labelnumberwidth}{%
\ifboolexpr{%
test {\ifentrytype{xarticle}}%
or
test {\ifentrytype{xbook}}%
or
test {\ifentrytype{xinproceedings}}%
}%
{\mkbibbra{#1}~\addperiod}{\ifboolexpr{%
test {\ifentrytype{yarticle}}%
or
test {\ifentrytype{ybook}}%
or
test {\ifentrytype{yinproceedings}}%
}%
{\mkbibbrackets{#1}~\addperiod}{#1\hspace*{.2em}}}%
}%\RequireBibliographyStyle{numeric}
\addbibresource{prova.bib}\begin{document}
I want cite \citer{schroder}, \cite*{schroder1}, \citet{schroder2} and \citer{lesniewski}.
\printbibliography
\end{document}
`Giustamente, compilando, mi viene fuori l’avvertimento:
`
Package biblatex Warning: No driver for entry type 'yinproceedings'.
(biblatex) Using fallback driver on input line 165.`
Lo posso ignorare o devo usare \DeclareBibliographyDriver{yinproceedings} con tutto ciò che ne segue?
Grazie. Ciao,
davide
[attachment=1452]prova4.pdf[/attachment]
Attachments:
You must be logged in to view attached files. -
19 Novembre 2015 alle 13:40 #103918::
Con questo post, posso dire di aver concluso. In effetti, dato che si sono create nuove classi di documento usando il prefisso X o Y, bisogna specificare i “Drivers” appropriati. Di seguito, posto quello per @XINPROCEEDINGS. Dalla sua struttura sarà chiaro come modificare altre classi di documento nel file.bib:`
\DeclareBibliographyDriver{xinproceedings}{%
\newunit\newblock
\printnames{author}%
\newunit\newblock
\printfield{title}%
\newunit\newblock
\printfield{booktitle}%
\newunit\newblock
\printfield{series}
\newunit\newblock
\printfield{volume}
\newunit\newblock
\printlist{location}%
\newunit\newblock
\printlist{publisher}%
\newunit\newblock
\printfield{year}%
\newunit\newblock
\printfield{pages}%
\finentry}\DeclareFieldFormat[xinproceedings]{title}{#1}
\DeclareFieldFormat[xinproceedings]{year}{(#1)}
\DeclareFieldFormat[xinproceedings]{booktitle}{\emph{#1}}
\DeclareFieldFormat[xinproceedings]{series}{(#1)}
\DeclareFieldFormat[xinproceedings]{volume}{#1}
\DeclareFieldFormat[xinproceedings]{address}{#1}
\DeclareFieldFormat[xinproceedings]{publisher}{#1}
\DeclareFieldFormat[xinproceedings]{pages}{#1}
`La prima parte indica le varie parti di cui si compone la voce bibliografica, la seconda come vanno formattate. Nel caso in questione, autore in tondo, data tra parentesi Rotonde, titolo in tondo, titolo del libro in corsivo, la Serie in tondo tra parentesi tonde, il volume in tondo ma non in boldface, luogo ed editorie in tondo, pagine senza pp. o altro. Dall’esempio sovrastante è facile intuire come creare una nuova classe di documento ad hoc.
Spero che questo lavoro sia servito a quelli che intendono modificare il lavoro di biber e di biblatex, a prescindere dall’uso o meno delle parentesi.
Grazie a tutti.
Ciao,
davide
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.