Risposte nei forum create
-
AutoreRisposte
-
::
Se poi pensi che le opere di un particolare autore (per importanza che quest’ultimo ricopre nel testo) possano essere inserite in una bibliografia a parte, qui sì che è possibile, solamente per quella bibliografia, omettere il nome dell’autore stesso.
Sarebbe il classico esempio di una tesi su di un particolare filosofo. In questo caso è evidente l’utilità, in bibliografia, di separare le sue opere rispetto alla letteratura critica.
In questo caso, una bibliografia col titolo “Opere di Pinco Pallino” potrebbe ragionevolmente contenere tutte le sue opere, senza l’indicazione del nome.
Probabilmente, però, questo non è il tuo caso.Matteo
::
Per il semplice significato che assume, in un qualunque contesto citazionale, la c.d. “chiave di citazione”.
Se nel testo utilizzi lo stile “autore-anno” queste due informazioni ti saranno utili per la ricerca dell’opera in bibliografia che, per l’appunto, avrà i campi “autore/curatore” e “anno/data” all’inizio della voce bibliografica (una sorta di intestazione).
Ma se nel testo utilizzi uno stile “verbose” qual’è l’utilità di invertire, in bibliografia, l’ordine delle informazioni (ovvero antecedere l’anno di pubblicazione rispetto al titolo dell’opera)? Secondo me: nessuna.Ma soprattutto mi sfugge una cosa. Cosa intendi per:
[…] non veder ripetuto decine di volte il nome dello stesso filosofo in bibliografia […]
In [tt]philosophy-verbose[/tt] è attiva l’opzione [tt]dashed[/tt], che sostituisce il nome dell’autore/curatore con una linea. Pensi che anche questa soluzione sia poco elegante?
Comunque, al di là di tali “elucubrazioni”, l’impossibilità di utilizzare assieme [tt]citestyle=philosophy-verbose[/tt] e [tt]bibstyle=philosophy-modern[/tt] è evidente nei fatti, come avrai già constatato, guardando l’output delle citazioni…
Matteo
::
Biblatex permette di utilizzare stili diversi per le citazioni e per la bibliografia, utilizzando i comandi [tt]citestyle[/tt] e [tt]bibstyle[/tt] al posto del consueto [tt]style[/tt].
`usepackage[citestyle=<...>, bibstyle=<...>]{biblatex}`
Ovviamente l’accoppiata degli stili deve essere coerente, e non mi sembra che quello che vuoi fare tu lo sia. Difatti, se provi ad utilizzare questi comandi con gli stili del bundle [tt]biblatex-phylosophy[/tt], non otterrai il risultato sperato.Matteo
3 Luglio 2023 alle 7:42 in risposta a: BibLatex Philosophy-verbose, togliere parentesi tonde intorno a anno di ARTICLE #121679::
Buongiorno Francesco e benvenuto nel forum.Per ciò che vuoi fare bisogna modificare le macro [tt]issue+date[/tt], [tt]journal+issuetitle[/tt] (per gli articoli) e [tt]title+issuetitle[/tt] (per le riviste), che lo stesso [tt]biblatex-philosophy[/tt] ridefinisce all’interno di [tt]philosophy-standard.bbx[/tt].
Nel tuo preambolo aggiungi il seguente codice (le modifiche sono spiegate tramite i commenti):
`
\renewbibmacro*{issue+date}{%
\printtext{% invece di \printtext[pureparens]{%
\iffieldundef{issue}
{\usebibmacro{date}}
{\printfield{issue}%
\setunit*{\addspace}%
\usebibmacro{date}}}%
\newunit}\renewbibmacro*{journal+issuetitle}{%
\usebibmacro{journal}%
\setunit*{\addspace}%
\iffieldundef{series}
{}%
{\newunit%
\printfield{series}\setunit{\addspace}\midsentence}%
\newunit%
\usebibmacro{volume+number+eid}%
\setunit{\addcomma\space}% invece di \setunit{\addspace}%
\usebibmacro{issue+date}%
\setunit{\addcolon\space}%
\usebibmacro{issue}%
\newunit}\renewbibmacro*{title+issuetitle}{%
\usebibmacro{periodical}%
\setunit*{\addspace}%
\iffieldundef{series}
{}%
{\newunit
\printfield{series}%
\setunit{\addspace}\midsentence}%
\usebibmacro{volume+number+eid}%
\setunit{\addcomma\space}% invece di \setunit{\addspace}%
\usebibmacro{issue+date}%
\setunit{\addcolon\space}%
\usebibmacro{issue}%
\newunit}
`
Nota che le modifiche hanno effetto solamente se usi (come hai specificato tu) lo stile [tt]philosophy-verbose[/tt], in quanto [tt]philosophy-classic[/tt] ridefinisce queste macro in altro modo.Matteo
30 Aprile 2023 alle 14:25 in risposta a: [RISOLTO] Stile del ToC per Front/Backmatter diverso rispetto al Mainmatter #121611::
Nel preambolo aggiungi:
`
\cftinsertcode{frontmattertoc}{\renewcommand*{\cftchapterfont}{\itshape}}
\preto{\frontmatter}{\cftinserthook{toc}{frontmattertoc}}
\cftinsertcode{mainmattertoc}{\renewcommand*{\cftchapterfont}{\upshape}}
\preto{\mainmatter}{\cftinserthook{toc}{mainmattertoc}}
\cftinsertcode{backmattertoc}{\renewcommand*{\cftchapterfont}{\itshape}}
\preto{\backmatter}{\cftinserthook{toc}{backmattertoc}}
`
Ovviamente dovrai aver caricato [tt]etoolbox[/tt].Matteo
::
Purtroppo non sono in grado di andare oltre le modifiche che ti ho proposto (ovvero la ripetizione dei soli nomi).Però di posso suggerire una via alternativa, ovvero: creare una categoria apposita per quelle opere collettanee non citate e quindi non presenti in bibliografia finale.
`
% !TEX encoding = UTF-8 Unicode
% !TEX program = lualatex
% !BIB program = biber\begin{filecontents}[overwrite]{\jobname.bib}
@Collection{verdi:00,
editor = {Verdi, Giuseppe and Celeste, Francesco and Neri, Luca},
title = {Opera collettanea},
date = {2000},
publisher = {Editore},
location = {Roma},
}
@InCollection{rossi:00,
author = {Rossi, Mario},
title = {Contributo primo},
pages = {1-30},
crossref = {verdi:00},
}
@InCollection{bianchi:00,
author = {Bianchi, Luigi},
title = {Contributo secondo},
pages = {31-50},
crossref = {verdi:00},
}
\end{filecontents}\documentclass{article}
\usepackage[italian]{babel}
\usepackage[style=philosophy-verbose, scauthors=all, maxnames=3, minnames=3]{biblatex}
\addbibresource{\jobname.bib}
\DeclareBibliographyCategory{notcited}\begin{document}
\section{Sezione}
\cite{rossi:00}
\par\medskip\noindent
\cite{bianchi:00}\printbibliography[notcategory=notcited]
\addtocategory{notcited}{verdi:00}\nocite{verdi:00}
\printbibliography[title={Opere collettanee non citate}, category=notcited]
\end{document}
`
Matteo
11 Marzo 2023 alle 23:29 in risposta a: ambiente ‘widebox’ – argomento facoltativo non funzionante #121513::
Se posso dare un suggerimento, nel caso di tabella poco più larga della gabbia (test B) sarebbe più intelligente che il comportamento di default fosse quello di farla sporgere nel margine esterno (senza la possibilità di scegliere tra allineamento destro o sinistro). Rimarrebbe l’argomento facoltativo [tt]c[/tt] per la centratura della tabella.Infine, sarebbe utile se questo ambiente (assieme alla macro [tt]ruotascatola[/tt]) fosse integrato nel pacchetto [tt]widetable[/tt], visto che tutte queste soluzioni mirano al medesimo scopo di migliorare l’aspetto tipografico della tabella.
Matteo
::
Inoltre, aggiungo che dalla release 2020-10-01 anche molte funzionalità di [tt]xparse[/tt] fanno parte del kernel [tt]LaTeX[/tt].
L’emc di camil, dunque, si riduce a:
`
\documentclass{minimal}
\NewDocumentCommand { \opposto } { m } { \fpeval{-1*#1} }\begin{document}
L'opposto dell'opposto di $1$ e' $\opposto{\opposto{1}}$.L'opposto di $-1.234$ e' $\opposto{-1.234}$.
L'opposto di zero e' $\opposto{0}$.
\end{document}
`
Matteo
::
Riguardo l’eliminazione dell’ultimo carattere di una stringa, a partire da questo post sono riuscito a creare la seguente macro:
`
\cs_new_protected:Npn \my_remove_last:n #1
{
\tl_set:Nx \l_my_remove_last_tl { #1 }
\cs_generate_variant:Nn \tl_reverse:n {f}
\tl_set:Nx \l_my_remove_last_tl { \tl_reverse:f { \tl_tail:f { \tl_reverse:V \l_my_remove_last_tl } } }
\tl_use:N \l_my_remove_last_tl
}
`
Il comando [tt]\tl_tail[/tt] «discards all leading explicit space characters (explicit tokens with character code 32 and category code 10) and the first ⟨item⟩ in the ⟨token list⟩, and leaves the remaining tokens in the input stream» ([tt]interface3[/tt], p. 114). Poco male, nel mio caso d’uso la stringa di testo è una singola parola:
`
\documentclass{minimal}\ExplSyntaxOn
\cs_new_protected:Npn \my_remove_last:n #1
{
\tl_set:Nx \l_my_remove_last_tl { #1 }
\cs_generate_variant:Nn \tl_reverse:n {f}
\tl_set:Nx \l_my_remove_last_tl { \tl_reverse:f { \tl_tail:f { \tl_reverse:V \l_my_remove_last_tl } } }
\tl_use:N \l_my_remove_last_tl
}
\NewDocumentCommand { \mytest } { m }
{
\my_remove_last:n {#1}
}
\ExplSyntaxOff\begin{document}
\mytest{ciao}
\end{document}
`
Matteo
::
Ciao,
ovviamente solo Ivan, autore di [tt]biblatex-philosophy[/tt], può risponderti in modo esaustivo. Provo, comunque, a risponderti io, sperando di non dire troppe “castronate”…Le due questioni sono correlate.
gattex” post=122018Seconda questione: quando utilizzo crossref i parametri maxnames=n, e minnames=n non sembrano funzionare: gli editori della collection vengono tagliati da et al. dopo il primo.
Riguardo le impostazioni [tt]maxnames[/tt] e [tt]minnames[/tt], queste riguardano solamente gli autori/curatori (ripeto: curatori!) della voce bibliografica oggetto della citazione. Nel caso, quindi, di cross-referencing le opzioni valgono per le child entries (@inbook, @incollection, etc.) e non per le parent entries (@book, @collection, etc.)
gattex” post=122018Prima questione: La documentazione di Bilatex philosophy, p. 13, riporta che […] Da ciò ne dedurrei che ad ogni citazione in bibliografia di un incollection venga stampata tutta la citazione della collection. Tuttavia non mi funziona per le voci successive alla seconda, che vengono accorciate
Presumo si voglia intendere che tutte le informazioni della @collection vengono stampate, ma solo alla prima occorrenza. E questo è ragionevole. Che senso avrebbe ripetere le stesse informazioni più volte? E magari pure di una @collection (o @book) che nel testo potrebbe anche non venire citata (e dunque non essere nemmeno stampata nella bibliografia finale). A mio avviso, tali ripetizioni avrebbero il solo fine di appesantire la lettura della bibliografia. Ma questa è un’opinione personale. Infatti, altri stili citazionali (come ad esempio lo stile standard [tt]authortitle[/tt] che è alla base di [tt]philosophy-verbose[/tt]) ripetono tutte le informazioni.
Comunque, se ti interessa modificare questo aspetto, dovresti (e qui rischio la “castroneria”) modificare la seguente macro:
`
\DeclareCiteCommand{\bbx@crossref@incollection}%
{}%
{\ifciteseen{%
\ifthenelse{\value{listtotal}=2}%
{\printnames[][-\value{maxnamesincross}]{labelname}}%
{\printnames[][-\value{minnamesincross}]{labelname}}%
\setunit*{\addspace}%
\usebibmacro{editorstrg}%
\setunit*{\addcomma\space}%
\printtext{%
\printfield[citetitle]{labeltitle}%
\iftoggle{cbx:commacit}{\setunit{\addcomma\space}}%
{\setunit{\addspace\midsentence}}%
\bibstring{opcit}}}%
{\DeclareNameAlias{sortname}{default}%
\usebibmacro{usedriver:collection}}}%
{}%
{}%
`
Ad esempio, se vuoi ripetere i nomi completi dei curatori, dovrai modificare la macro in questo modo:
`
\DeclareCiteCommand{\bbx@crossref@incollection}%
{}%
{\ifciteseen{%
{\printnames[first-last]{labelname}}%
\setunit*{\addspace}%
\usebibmacro{editorstrg}%
\setunit*{\addcomma\space}%
\printtext{%
\printfield[citetitle]{labeltitle}%
\iftoggle{cbx:commacit}{\setunit{\addcomma\space}}%
{\setunit{\addspace\midsentence}}%
\bibstring{opcit}}}%
{\DeclareNameAlias{sortname}{default}%
\usebibmacro{usedriver:collection}}}%
{}%
{}%
`Matteo
::OldClaudio” post=122021Se ti immergi in LATeX3, scopri un mondo incredibilmente diverso da quanto siamo abituati a fare con LaTeX2e.
È da qualche settimana che ho iniziato a “giocherellare” con LaTeX3/expl3. Ho sempre seguito con interesse l’evoluzione di LaTeX (da ultimo il progetto Tagged PDF), cercando sempre di sfruttarne le potenzialità (al limite, ovviamente, delle mie capacità TeXniche e delle mie necessità pratiche).
Riguardo l’esigenza di una funzione che verifichi il case della prima lettera di un testo, ho trovato qualcosa di simile su tex.stackexchange. Modificando opportunamente la macro, ecco pronto il mio bel condizionale:
`
\prg_new_protected_conditional:Npnn \my_if_first_uppercase:n #1 { T , F , TF }
{
\tl_set:Nx \l_my_testa_tl { \tl_item:nn { #1 } { 1 } }
\tl_set:Nx \l_my_testb_tl { \exp_args:NV \text_uppercase:n \l_my_testa_tl }
\tl_if_eq:NNTF \l_my_testa_tl \l_my_testb_tl
{ \prg_return_true: }
{ \prg_return_false: }
}
`
La logica è la seguente: confrontare la variabile che memorizza la prima lettera di una stringa con la variabile che memorizza la stessa lettera in maiuscolo. Se le due variabili coincidono significa che la prima lettera della stringa è essa stessa una lettera maiuscola ([tt]true[/tt]), diversamente significa che la stringa inizia con una lettera minuscola ([tt]false[/tt]).Di seguito un banale esempio del suo utilizzo:
`
\documentclass{minimal}\ExplSyntaxOn
\prg_new_protected_conditional:Npnn \my_if_first_uppercase:n #1 { T , F , TF }
{
\tl_set:Nx \l_my_testa_tl { \tl_item:nn { #1 } { 1 } }
\tl_set:Nx \l_my_testb_tl { \exp_args:NV \text_uppercase:n \l_my_testa_tl }
\tl_if_eq:NNTF \l_my_testa_tl \l_my_testb_tl
{ \prg_return_true: }
{ \prg_return_false: }
}
\NewDocumentCommand { \mytest } { m }
{
\my_if_first_uppercase:nTF {#1}
{ La~parola~ \emph{#1} ~inizia~con~una~lettera~ \text_uppercase:n {maiuscola}. }
{ La~parola~ \emph{#1} ~inizia~con~una~lettera~minuscola. }
}
\ExplSyntaxOff\begin{document}
\mytest{übersetzung}\mytest{Übersetzung}
\end{document}
`
Per quanto riguarda la mia seconda esigenza (eliminazione dell’ultimo carattere di una stringa) avevo già letto gli «Appunti di programmazione in LaTeX e TeX» di Enrico Gregorio. Effettivamente sono presenti alcuni esempi sul genere (§ 7.2 Trattamento di liste di token in ε-TeX). Come potete immaginare: puro e crudo (e oscuro) linguaggio TeX.
Poco male: in [tt]interface3[/tt] (cap 15) ho già individuato le funzioni opportune… Stay tuned…Matteo
::
Ciao Roberto,
grazie mille per la tua proposta in linguaggio [tt]Lua[/tt]. Pur non conoscendo la programmazione, sono riuscito ad adattare il codice al mio caso d’uso:
`
\directlua{
myLib = {}
function myLib.checkUppercase(s)
assert(type(s)==[[string]])
local code = string.byte(s, 1)
if code > 64 and code < 91 then return false else return true end end } \newcommand{\checkuppercase}[1]{% \directlua{ local s = [==[#1]==] if myLib.checkUppercase(s) then tex.sprint[==[\noindent]==] end} } ` Il tutto funziona, però la tua funzione [tt]myLib.checkUppercase(s)[/tt] ha dei limiti abbastanza importanti. Ovvero: funziona solamente con caratteri ASCII. Quindi fallisce con accenti e segni diacritici :( ` % !TeX program = LuaLaTeX \documentclass{article} \directlua{ myLib = {} function myLib.checkUppercase(s) assert(type(s)==[[string]]) local code = string.byte(s, 1) if code > 64 and code < 91 then return true else return false end end } \newcommand{\isUpper}[1]{\directlua{ local s = [==[#1]==] if myLib.checkUppercase(s) then tex.sprint[[yes]] else tex.sprint[[no]] end }} \begin{document} \isUpper{è} \isUpper{È} \end{document} ` Matteo17 Febbraio 2023 alle 4:11 in risposta a: Ripetizione di una parte di testo (abstract o simile) #70121 -
AutoreRisposte