2013-04-22 11 views
8

I blocchi di codice sembrano brutti (controllare le virgolette) in output PDF:Fare Sfinge produrre blocchi di codice untypogrified in output PDF

enter image description here

Io uso la versione 1.1.3 della Sfinge, e ha usato il seguente comando per produrre il doc:

$ make latexpdf 

Inoltre, la copia del frammento dal PDF distrugge il rientro quando si incolla:

@view_config(route_name=’hello’) 
def hello_world(request): 
return Response(’Hello World!’) 

mi aspetterei questo:

@view_config(route_name=’hello’) 
def hello_world(request): 
    return Response(’Hello World!’) 

Questo sarebbe ancora più bello:

@view_config(route_name='hello') 
def hello_world(request): 
    return Response('Hello World!') 
+0

notare che con la recente Sfinge di più (ho provato con 1.3.5), non v'è niente di speciale da fare per evitare citazioni trasformazioni quando le quotazioni sono in code-blocchi. – jfbu

risposta

3

Sfinge è davvero un ottimo strumento, ma ho anche un paio di problemi con l'output PDF predefinito del bersaglio latexpdf.

In particolare:

  • apici singoli in blocchi di codice vengono convertiti con quotazioni stile acuti che non guarda a destra nel codice sorgente.
  • I blocchi di codice non sono rientrati dal testo principale. Per me questo li rende meno leggibili.
  • Preferisco altri font e pygment ma è solo una scelta personale e può essere configurato.

Alcune di queste può essere fissato nella sezione LaTeX pre-ambio del conf.py Sfinge, ma le quotazioni sono modificati dalla Sfinge alle entità LaTeX personalizzato in modo che il pacchetto di upquote LaTeX non può essere utilizzato per correggerli.

Dopo un po 'di sperimentazione con diverse opzioni di configurazione ho finito per scrivere un piccolo script per modificare il codice sorgente LaTeX prima di creare il PDF. Lo script è here e l'output che volevo generare è here. (Per confronto here è l'uscita di default per lo stesso documento.)

Se qualcuno ha una soluzione detergente, per esempio quella che potrebbe essere fatto completamente attraverso Sfinge conf.py così le modifiche sarebbero raccolti da ReadTheDocs allora sarebbe essere interessati.

Inoltre, il problema con la perdita di indentazione quando si copia e incolla dal PDF probabilmente non è un problema Sphinx/LaTeX.

2

Questa è solo una risposta parziale che può portare a una soluzione definitiva. Per disabilitare le virgolette tipografiche (note anche come virgolette o virgolette) per l'output HTML in Sfinge, modificare l'impostazione predefinita in conf.py per SmartyPantsfrom True to False.

Suppongo che si possa trovare la funzione in Sfinge che trasforma virgolette e usa la stessa logica dall'output HTML e la applica per l'output PDF.

+0

Questa opzione ora non funziona più (Sfinge 1.6.2? E 1.7.dev20170612). – johndodo

+0

@johndodo per Sphinx ≥1,6, vedere https://github.com/rtfd/readthedocs.org/issues/2940 –

+0

Bello - e tempismo interessante (5 giorni fa). Purtroppo non ho trovato la tua pagina in quanto mi avrebbe risparmiato un po 'di tempo, invece ho consultato docutils docs. Ma risolvere i documenti è una buona idea. – johndodo

0

The option proposed by Steve Piercy ora non funziona più (dal Sfinge 1.6):

Deprecated since version 1.6: Use the smart_quotes option 
in the Docutils configuration file (docutils.conf) instead. 

ciò che non era ovvio per me era come applicare questa impostazione.È necessario creare un file docutils.conf e metterlo in one of these locations:

  • /etc/docutils.conf
  • ./docutils.conf
  • ~/.docutils

L'opzione più semplice è per metterlo dove stai costruendo i documenti da - YMMV. Deve contenere almeno questo:

[general] 
smart_quotes: no 
+1

solo per sottolineare che questa informazione (valida) non dovrebbe essere necessaria per i blocchi di codice. Ho provato solo per conferma con Sphinx 1.3.5, e con la corrente 1.6.2 che le virgolette nei blocchi di codice non sono state modificate. – jfbu

+0

Vero. Quello che ho pensato per la prima volta è stata la colpa di Sphinx, in realtà ero io a copiare il blocco da qualche altra parte, quindi era già danneggiato. Ma la mia frustrazione con Sphinx è stata che mi ci è voluto molto tempo per capire come applicare questa impostazione, quindi spero che questa risposta aiuti qualcuno in futuro. – johndodo

Problemi correlati