Crítica cultural Nº 666 Literatura
Vargas Llosa: la insurrección permanente

Crítica cultural Nº 666 Literatura
La Academia Sueca ha ratificado con el Nobel de Literatura la trayectoria y la obra del escritor peruano más conocido internacionalmente.
Cuando recibió la noticia de la concesión del Nobel, Mario Vargas Llosa se encontraba preparando una clase de literatura en la universidad. En concreto, estaba releyendo la novela El reino de este mundo, de Alejo Carpentier. Esta anécdota me parece una pequeña revelación del amor por la literatura misma que ha sentido siempre el escritor peruano. Por eso su vertiente de novelista va de la mano de la del ensayista apasionado que escribe con devoción sobre los escritores que más le gustan y más le han enseñado. No es ninguna exageración decir que algunos de sus ensayos se leen con la amenidad de una novela: La verdad de las mentiras o La orgía perpetua acaso sean los mejores. Allí Vargas Llosa enseña a leer y se define como escritor. «Las mejores novelas son siempre las que agotan su materia, las que no dan una luz sobre la realidad, sino muchas», afirma. Y ciertamente Vargas Llosa es un escritor ambiciosamente realista.
Realismo externo y brillantez argumental con algunos toques de folletín: esa es la fórmula que ha condimentado de manera muy consciente con una técnica heredada de múltiples maestros, tanto de la alta literatura como de la cultura popular: desde Flaubert o Faulkner hasta Corín Tellado o las series de radioteatro de su tierra. Las complejidades de la vida interior cuentan poco; la imaginación mítica o la literatura fantástica, menos. Lo que le interesa son los argumentos cargados de golpes de efecto, los enredos violentos y los descubrimientos, casi siempre trágicos y morbosos. No quiere decir esto que el peruano no sea capaz de crear personajes. Sus novelas mejores están pobladas de villanos inolvidables, como el siniestro Cayo Bermúdez de Conversación en la catedral, o el diabólico dictador Trujillo de La fiesta del chivo. Otra criatura recurrente suele ser el intelectual, desafiante o sometido ante situaciones políticas difíciles o directamente criminales. Desde el Poeta de La ciudad y los perros al periodista miope de La guerra del fin del mundo, Vargas Llosa se ha retratado oblicuamente a sí mismo en estas figuras que intentan sobrevivir a la vez que denuncian hechos en medio de escenarios bárbaros e irracionales. Y también, cómo no, a través de sus personajes ha expresado sus fobias, sus «demonios personales», como él mismo dice.
Su experiencia traumática en el colegio militar Leoncio Prado de Lima se volcó en aquella remota novela que lo consagró muy joven, La ciudad y los perros. Este antimilitarismo se refleja en otras obras posteriores, lo mismo que la poca simpatía que transmiten los padres de familia (el patético Bola de Oro de Conversación en la Catedral), encarnaciones literarias en las que el escritor salda cuentas con su pasado infantil. Acaso la trayectoria de Vargas Llosa sea la de un rebelde perpetuo, desde su temprana oposición a la autoridad paterna hasta su evolución ideológica, siempre en contra de las opiniones dominantes en su entorno hispanoamericano. «La vocación literaria nace del desacuerdo de un hombre con el mundo, de la intuición de sus deficiencias, vacíos y escorias a su alrededor. La literatura es una forma de insurrección permanente», escribe en una famosa conferencia, «La literatura es fuego».
Cuando en su juventud alabó a Fidel Castro, se encontraba seducido por el carácter libertario que emanaba de la isla en los años sesenta. Luego, la visible alergia a la libertad de las autoridades cubanas y ciertos escándalos político-culturales (el caso Padilla, por ejemplo) lo alejaron del marxismo y, a la postre, de las ideologías totalitarias de izquierda. Quizá la política es, junto con la literatura, la otra dominante mayor de la personalidad de Vargas Llosa. El resto de las pasiones se subordinan a estas dos. Son formas de rebeldía que han producido páginas excelentes a lo largo de una trayectoria tan prolífica como desigual. Ciertamente, a veces su pasión por la escritura y los imperativos de las editoriales han dejado al descubierto baches y desniveles. Pero, en sus mejores momentos, Vargas Llosa ha dejado claro que es un sobresaliente contador de historias.
En consonancia con ese espíritu de servicio, Nuestro Tiempo es una revista gratuita. Su contenido está accesible en internet, y enviamos también la edición impresa a los donantes de la Universidad.
The following has evaluated to null or missing: ==> revista_number [in template "10136#10174#53349399" at line 91, column 33] ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${revista_number} [in template "10136#10174#53349399" at line 91, column 31] ----
1<#-- Template: Articulos Relacionados 3 Columnas -->
2<#-- Obtener los servicios necesarios -->
3<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
4<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
5<#assign assetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") />
6<#assign assetDisplayPageFriendlyURLProvider = serviceLocator.findService("com.liferay.asset.display.page.portlet.AssetDisplayPageFriendlyURLProvider") />
7
8<#-- Obtener el artículo actual -->
9<#assign journalArticle = journalArticleLocalService.getArticle(getterUtil.getLong(groupId), .vars['reserved-article-id'].data) />
10<#assign groupId = themeDisplay.getScopeGroupId() />
11<#assign resourcePrimKey = journalArticle.getResourcePrimKey() />
12<#assign structureKey = journalArticle.getDDMStructureKey() />
13<#assign authorId = journalArticle.getUserId() />
14
15<#-- Buscar y mostrar artículos relacionados -->
16<#assign relatedArticles = journalArticleLocalService.getArticlesByStructureId(groupId, structureKey, 0, 1000, null) />
17
18 <#-- Ordenar los art�culos por fecha de modificaci�n y seleccionar los m�s recientes -->
19 <#assign relatedArticles = relatedArticles?sort_by("displayDate")?reverse />
20 <#-- Limitar a 3 si hay suficientes -->
21 <#if relatedArticles?size gt 3>
22 <#assign relatedArticles = relatedArticles[0..2] />
23 </#if>
24
25<div class="container">
26 <div class="row">
27 <#list relatedArticles as curArticle>
28 <#if curArticle.getResourcePrimKey() != resourcePrimKey>
29 <#assign viewURL = assetDisplayPageFriendlyURLProvider.getFriendlyURL("com.liferay.journal.model.JournalArticle", curArticle.getResourcePrimKey(), themeDisplay) />
30 <#if !viewURL?has_content>
31 <#assign viewURL = "/" />
32 </#if>
33 <#assign aArticleXML = saxReaderUtil.read(curArticle.getContentByLocale(locale)) />
34 <#assign autores = aArticleXML.selectNodes("//dynamic-element[@name='autor']/dynamic-content") />
35 <#assign imagenArticulo = aArticleXML.valueOf("//dynamic-element[@name='imagen']/dynamic-content/text()") />
36 <#assign detalle = aArticleXML.valueOf("//dynamic-element[@name='detalle']/dynamic-content") />
37
38 <#assign categoriesList = assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", curArticle.getResourcePrimKey())/>
39 <#assign vocabularyTemaName = "Tema" />
40 <#assign vocabularyNRevistaName = "Nº de revista" />
41 <#assign vocabularyTopicName = "Topic" />
42 <#assign avoidTopic = "PRINCIPAL" />
43
44 <#-- Featured Image of the Article -->
45 <#assign featuredImage = curArticle.getArticleImageURL(themeDisplay)!""/>
46
47 <#if curArticle?index < 3>
48 <div class="col-md border-left <#if curArticle?index == 2> border-right</#if>">
49 <article class="article article-small">
50 <figure class="media">
51 <picture>
52 <#if featuredImage?has_content>
53 <img src="${featuredImage}" />
54 <#else>
55 <#if imagenArticulo?? && imagenArticulo?has_content>
56 <#attempt>
57 <#assign jsonObject = imagenArticulo?eval/>
58 <#assign entryUuid = jsonObject.uuid />
59 <#assign entryGroupId = getterUtil.getLong(jsonObject.groupId) />
60 <#assign entryAlt = jsonObject.alt />
61 <#assign dlFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") />
62 <#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")>
63 <#assign dlFileEntry = dlFileEntryLocalService.getDLFileEntryByUuidAndGroupId(entryUuid, entryGroupId) />
64 <#assign assetEntry = assetEntryLocalService.getEntry("com.liferay.document.library.kernel.model.DLFileEntry", dlFileEntry.fileEntryId) />
65 <#assign assetRenderer = assetEntry.assetRenderer />
66 <#assign imagen = assetRenderer.getURLDownload(themeDisplay) />
67 <img alt="${entryAlt}" data-fileentryid="${dlFileEntry.fileEntryId}" src="${imagen}" />
68 <#recover>
69 </#attempt>
70 </#if>
71 </#if>
72 </picture>
73 </figure>
74
75 <#if categoriesList?has_content>
76 <#list categoriesList as category>
77 <#assign categoryVocabulary = assetVocabularyLocalService.getAssetVocabulary(category.getVocabularyId()) />
78 <#if categoryVocabulary.getName() == vocabularyNRevistaName>
79 <#assign revista_number = category.getTitle(locale)/>
80 </#if>
81 </#list>
82 </#if>
83 <p class="kicker">
84 <#if categoriesList?has_content>
85 <#list categoriesList as category>
86 <#assign categoryVocabulary = assetVocabularyLocalService.getAssetVocabulary(category.getVocabularyId()) />
87 <#if categoryVocabulary.getName() == vocabularyTemaName>
88 <a title="${category.getTitle(locale)}">${category.getTitle(locale)}</a>
89 </#if>
90 </#list>
91 <a title="${revista_number}">${revista_number}</a>
92 <#list categoriesList as category>
93 <#assign categoryVocabulary = assetVocabularyLocalService.getAssetVocabulary(category.getVocabularyId()) />
94 <#if categoryVocabulary.getName() == vocabularyTopicName && category.getTitle(locale) != avoidTopic>
95 <a title="${category.getTitle(locale)}">${category.getTitle(locale)}</a>
96 </#if>
97 </#list>
98 </#if>
99 </p>
100
101 <#assign title = curArticle.getTitle(locale) />
102 <h2 class="title title-standard">
103 <a href="${viewURL}" title="${title}">${title}</a>
104 </h2>
105
106 <p class="meta">
107 <#assign fecha = dateUtil.getDate(curArticle.getDisplayDate(), "d 'de' MMMM 'de' yyyy", locale) />
108 <#if fecha?has_content>
109 <span>${fecha}</span>
110 </#if>
111
112 <#assign tiempo = "" />
113 <#if detalle?has_content>
114 <#assign content = detalle?trim />
115 <#if content != "">
116 <#assign contentCount = content?replace("<[^>]+>", "", "r")?word_list?size />
117 <#if contentCount gt 0>
118 <#assign minutesValue = (contentCount/200)?round />
119 <#if minutesValue == 0>
120 <#assign tiempo = "Unos segundos" />
121 <#elseif minutesValue == 1>
122 <#assign tiempo = minutesValue + " minuto" />
123 <#else>
124 <#assign tiempo = minutesValue + " minutos" />
125 </#if>
126 </#if>
127 </#if>
128 </#if>
129 <#if tiempo?? && tiempo != "">
130 <span><i class="fa fa-regular fa-clock"></i> ${tiempo}</span>
131 </#if>
132 </p>
133
134 <p class="author">
135 <#if autores?has_content>
136 <#list autores as autor>
137 <#assign aArticleXMLAutores = saxReaderUtil.read(autor.getParent().asXML()) />
138 <#assign autorJournalArticle = aArticleXMLAutores.valueOf("//dynamic-element[@name='autor']/dynamic-content") />
139 <#attempt>
140 <#assign jsonObject = autorJournalArticle?eval/>
141 <#assign articleClassPK = jsonObject.classPK />
142 <#assign articleGroupId = getterUtil.getLong(jsonObject.groupId) />
143 <#assign articleAutor = journalArticleLocalService.fetchLatestArticle(articleClassPK?number)>
144 <#assign aArticleXMLAutor = saxReaderUtil.read(articleAutor.getContentByLocale(locale)) />
145 <#assign nombre = aArticleXMLAutor.valueOf("//dynamic-element[@name='nombre']/dynamic-content/text()") />
146 <#assign apellidos = aArticleXMLAutor.valueOf("//dynamic-element[@name='apellidos']/dynamic-content/text()") />
147 <a title="${nombre} ${apellidos}">${nombre} ${apellidos}</a>
148 <#recover>
149 </#attempt>
150 </#list>
151 </#if>
152 </p>
153 </article>
154 </div>
155 </#if>
156 </#if>
157 </#list>
158 </div>
159</div>
160
161<style>
162/* default image size */
163.nuestro-tiempo .article.article-small .media img{
164 object-fit: contain;
165 height: 200px;
166}
167/* alternative
168.nuestro-tiempo .article.article-small .media img{
169 object-fit: cover;
170 height: 100%;
171}
172*/
173</style>