Respuestas:
Take me to [pookie](#pookie)
debe ser la sintaxis de rebaja correcta para saltar al punto de anclaje llamado pookie.
Para insertar un punto de anclaje con ese nombre, use HTML:
<a name="pookie"></a>
A Markdown no parece importarle dónde colocas el punto de anclaje. Un lugar útil para ponerlo es en un encabezado. Por ejemplo:
### <a name="tith"></a>This is the Heading
funciona muy bien (Lo demostraría aquí, pero el renderizador de SO elimina el ancla).
id=
versusname=
Una versión anterior de esta publicación sugirió usar <a id='tith' />
, usar la sintaxis de cierre automático para XHTML y usar el id
atributo en lugar de name
.
XHTML permite que cualquier etiqueta esté 'vacía' y 'cerrada'. Es decir, <tag />
es una abreviatura de <tag></tag>
un par de etiquetas coincidentes con un cuerpo vacío. La mayoría de los navegadores aceptarán XHTML, pero algunos no. Para evitar problemas entre navegadores, cierre la etiqueta explícitamente <tag></tag>
, como se recomienda anteriormente.
Finalmente, el atributo name=
quedó en desuso en XHTML, por lo que originalmente lo usé id=
, lo que todos reconocen. Sin embargo, HTML5 ahora crea una variable global en JavaScript cuando se usa id=
, y esto puede no ser necesariamente lo que desea. Por lo tanto, usar name=
es probable que ahora sea más amigable.
(Gracias a Slipp Douglas por explicarme XHTML y a Nailer por señalar el efecto secundario HTML5; vea los comentarios y la respuesta del clavador para obtener más detalles. Parece funcionar en todas partes, aunque está en desuso en XHTML).name=
<a>
sin href no significa que se cierre automáticamente. A menos que esté completamente loco, ambos: test-xhtml11 y [ sln.6bitt.com/public/test-html5.htmlfont>(test-html5) representan el resto de la página dentro de la etiqueta <a>. Continúe e inspeccione con un inspector web de su elección.
<a id="hi"/> rest of doc
, pero fue tratado como <a id="hi"> rest of doc</a>
. (Y el análisis de elementos de la página también muestra esto). Mi error: miré los elementos que se muestran, no la fuente en bruto. ¿Crees que la respuesta debería modificarse a la luz de esta observación?
name
atributo también crea variables globales (consulte stackoverflow.com/questions/3434278/… ), por lo que también podría utilizar el id
atributo como destino de las URL de identificador de fragmento, según lo previsto.
En bitbucket.org, la solución votada no funcionaría. En cambio, cuando se usan encabezados (con ##), es posible hacer referencia a ellos como anclajes prefijándolos como # markdown-header-my-header-name, donde # markdown-header- es un prefijo implícito generado por el renderizador, y el resto es el título del encabezado en minúsculas con guiones que reemplazan los espacios.
Ejemplo
## My paragraph title
producirá un ancla implícita como esta
#markdown-header-my-paragraph-title
La URL completa antes de cada referencia de anclaje es opcional, es decir
[Some text](#markdown-header-my-paragraph-title)
es equivalente a
[Some text](https://bitbucket.org/some_project/some_page#markdown-header-my-paragraph-title)
siempre que estén en la misma página.
Fuente: https://bitbucket.org/tutorials/markdowndemo/overview (edite la fuente de este archivo .md y vea cómo se hacen los anclajes).
## My paragraph title
producirá el siguiente ancla user-content-my-paragraph-title
, para que pueda hacer referencia a él con [Algún texto] (# user-content-my-parameter-title). Sin embargo, no he encontrado documentación oficial para esto.
[linky](#header)
era un ancla suficiente y también funcionaba cuando se publicaba en Gist.
Use a name
. El uso de un id
no es necesario en HTML 5 y creará variables globales en su JavaScript
Consulte la especificación HTML 5, 5.9.8 Navegación a un identificador de fragmento : ambos id
y name
se utilizan.
Es importante saber que la mayoría de los navegadores aún convierten las ID en variables globales . Aquí hay una prueba rápida . Usar a name
evita la creación de globales y cualquier conflicto que pueda resultar.
Ejemplo usando un nombre:
Take me to [pookie](#pookie)
Y el ancla de destino:
### <a name="pookie"></a>Some heading
name
y id
son diferentes.
fineuploader
, no podrá usar el fineuploader
módulo. Evitar la creación de globals innecesarios ayuda a evitar esos conflictos.
Markdown Anchor admite el hashmark, por lo que un enlace a un ancla en la página simplemente sería[Pookie](#pookie)
En realidad, Gruber Markdown no admite la generación del ancla, pero sí en otras implementaciones, como Markdown Extra .
En Markdown Extra, la ID de anclaje se agrega a un encabezado o subtítulo con {#pookie}
.
Github Flavored Markdown en las páginas del repositorio de Git (pero no en Gists) genera automáticamente anclajes con varias etiquetas de marcado en todos los encabezados (h1, h2, h3, etc.), que incluyen:
id="user-content-HEADERTEXT"
class="anchor"
href="#HEADERTEXT"
aria-hidden="true"
(esto es para un icono de enlace svg que se muestra al pasar el mouse)Excluyendo el ícono aria / svg, cuando uno escribe:
# Header Title
Github genera:
<h1><a id="user-content-header-title" class="anchor" href="#header-title">Header Title</a></h1>
Por lo tanto, uno no necesita hacer nada para crear los enlaces de encabezado, y siempre puede vincularlos con:
[Header Title](#header-title)
No hay una sintaxis fácilmente disponible para hacer esto en la sintaxis original de Markdown, pero Markdown Extra proporciona un medio para asignar al menos ID a los encabezados, que luego puede vincular fácilmente. Tenga en cuenta también que puede usar HTML normal en Markdown y Markdown Extra, y que el name
atributo ha sido reemplazado por el id
atributo en versiones más recientes de HTML.
Para cualquiera que esté buscando una solución a este problema en GitBook. Así es como lo hice funcionar (en GitBook). Debe etiquetar su encabezado explícitamente, así:
# My Anchored Heading {#my-anchor}
Luego enlace a este ancla como este
[link to my anchored heading](#my-anchor)
La solución y ejemplos adicionales se pueden encontrar aquí: https://seadude.gitbooks.io/learn-gitbook/
Tarde a la fiesta, pero creo que esta adición podría ser útil para las personas que trabajan rmarkdown
. En rmarkdown
no se encuentra incorporado el soporte para las referencias a los encabezados en su documento.
Cualquier encabezado definido por
# Header
puede ser referenciado por
get me back to that [header](#header)
El siguiente es un .rmd
archivo independiente mínimo que muestra este comportamiento. Se puede tejer a .pdf
y .html
.
---
title: "references in rmarkdown"
output:
html_document: default
pdf_document: default
---
# Header
Write some more text. Write some more text. Write some more text. Write some more text. Write some more text. Write some more text. Write some more text. Write some more text. Write some more text. Write some more text. Write some more text.
Go back to that [header](#header).
Usando el último Markdown, debería poder usar la siguiente sintaxis:
[](){:name='anchorName'}
Esto debería crear el siguiente HTML:
<a name="anchorName"></a>
Si desea que el ancla tenga texto, simplemente agregue el texto del ancla dentro de los corchetes:
[Some Text](){:name='anchorName'}
Maruku
conoce esta sintaxis. Ver el babelmark.
Para los generadores de rebajas más comunes. Tiene un ancla autogenerada simple en cada encabezado. Por ejemplo, con pandoc , el ancla generada será una babosa de caso de kebab de su encabezado.
echo "# Hello, world\!" | pandoc
# => <h1 id="hello-world">Hello, world!</h1>
Dependiendo del analizador de rebajas que use, el ancla puede cambiar (tome el ejemplo de Symbolrush y La muerte Peluda responde, ¡son diferentes!). Vea este punto de referencia donde puede ver los anclajes generados dependiendo de su implementación de reducción .