возможно ли иметь привязки заголовков в уценке? [Дубликат]

Когда вы компилируете литерал числа в Java и назначаете его Integer (capital I), компилятор испускает:

Integer b2 =Integer.valueOf(127)

Эта строка кода также генерируется при использовании автобоксинга.

valueOf реализовано так, что определенные числа «объединены», и он возвращает тот же экземпляр для значений, меньших 128.

Из исходного кода java 1.6 строка 621:

public static Integer valueOf(int i) {
    if(i >= -128 && i <= IntegerCache.high)
        return IntegerCache.cache[i + 128];
    else
        return new Integer(i);
}

Значение high может быть настроено на другое значение с системным свойством.

-Djava.lang.Integer.IntegerCache.high = 999

blockquote>

Если вы запустите свою программу с этим системным свойством, она выведет true!

Очевидный вывод: никогда не полагайтесь на то, что две ссылки идентичны, всегда сравнивайте их с .equals().

Таким образом, b2.equals(b3) будет печатать true для всех логически равных значений b2, b3.

Обратите внимание, что кег Integer отсутствует по соображениям производительности, а скорее соответствует JLS, раздел 5.1.7 ; идентификатор объекта должен быть задан для значений от -128 до 127 включительно.

Целое число # valueOf (int) также документирует это поведение:

этот метод вероятно, даст значительно лучшую производительность пространства и времени, кэшируя часто запрашиваемые значения. Этот метод всегда будет кэшировать значения в диапазоне от -128 до 127 включительно и может кэшировать другие значения за пределами этого диапазона.

blockquote>

391
задан bostaf 16 May 2012 в 21:14
поделиться

8 ответов

Take me to [pookie](#pookie)

должен быть правильным синтаксисом разметки для перехода к якорной точке с именем pookie.

Чтобы вставить опорную точку этого имени, используйте HTML:

<a name="pookie"></a>

Markdown Кажется неважно, куда вы помещаете опорную точку. Полезное место для его размещения - в заголовке. Например:

### <a name="tith"></a>This is the Heading

работает очень хорошо. (Я бы продемонстрировал здесь, но средство визуализации SO вырезает якорь.)

Замечание о самозакрывающихся тегах и id= по сравнению с name=

Ранняя версия этого сообщения предложила используя <a id='tith' />, используя самозакрывающийся синтаксис для XHTML и используя атрибут id вместо name.

XHTML позволяет любому тегу быть «пустым» и «самозакрытым», , То есть <tag /> является короткой для <tag></tag>, совпадающей пары тегов с пустым телом. Большинство браузеров будут принимать XHTML, но некоторые из них этого не делают. Чтобы избежать проблем с несколькими браузерами, закройте тег явным образом, используя <tag></tag>, как было рекомендовано выше.

Наконец, атрибут name= устарел в XHTML, поэтому я изначально использовал id=, который каждый распознает , Тем не менее, HTML5 теперь создает глобальную переменную в JavaScript при использовании id=, и это может быть необязательно то, что вы хотите. Таким образом, использование name= теперь, скорее всего, будет более дружелюбным.

(Благодаря Slipp Douglas для объяснения XHTML мне и nailer для указания из-за побочного эффекта HTML5 - см. комментарии и ответ гвоздя для более подробной информации. name=, похоже, работает повсюду, хотя он устарел в XHTML.)

515
ответ дан Community 19 August 2018 в 07:45
поделиться
  • 1
    Вы не можете видеть, как связать свою демоверсию после того, как StackOverflow отображает HTML, потому что их рендеринг отключает тэг & lt; a & gt; . То есть вы не можете в StackOverflow Markdown. – Slipp D. Thompson 13 April 2012 в 19:58
  • 2
    Однако это будет работать в других, более либеральных средствах рендеринга Markdown, но вам потребуется закрыть тег & lt; a & gt; ; тег & lt; a & gt; не позволяет самозакрываться. Кроме того, я обнаружил, что мой браузер пропускает заголовок, если тег & lt; a & gt; находится перед содержимым заголовка. Исправления, сделанные для ваших примеров. – Slipp D. Thompson 13 April 2012 в 20:22
  • 3
    Держись там, ковбой. Просто потому, что у вас нет стиля на <a> без href, это не значит, что он сам закрывается. Если я полностью не схожу с ума, оба из них: test-xhtml11 и [ sln.6bitt.com/public/test-html5.html] (test-html5) сделать остальную страницу в пределах & lt; a & gt; тег. Идите вперед и осмотрите веб-инспектора по вашему выбору. – Slipp D. Thompson 21 April 2012 в 01:33
  • 4
    @Slipp: Хорошо, я думаю, я понимаю, сейчас. Вы закодировали <a id="hi"/> rest of doc, но с ним обращались как <a id="hi"> rest of doc</a>. (И элементный анализ страницы также показывает это.) Моя ошибка: я посмотрел на элементы, отображаемые не на исходный источник. Считаете ли вы, что ответ должен быть изменен в свете этого наблюдения? – Steve Powell 16 May 2012 в 14:56
  • 5
    Атрибут name также создает глобальные переменные (см. stackoverflow.com/questions/3434278/… ), поэтому вы можете также использовать атрибут id в качестве целевого URL-адреса идентификатора фрагмента, так как предназначена. – Bobby Jack 15 June 2015 в 09:22

Markdown Anchor поддерживает хешмарк, поэтому ссылка на привязку на странице будет просто [Pookie](#pookie)

. Генерация якоря фактически не поддерживается в Gruber Markdown, но находится в других реализациях, таких как Markdown Extra .

В Markdown Extra идентификатор привязки добавляется к заголовку или подзаголовку с помощью {#pookie}.

Github Flavored Markdown на страницах репозитория Git (но не в Gists) автоматически генерирует якоря с несколькими метками разметки на всех заголовках (h1, h2, h3 и т. д.), включая:

  • id="user-content-HEADERTEXT"
  • class="anchor"
  • href="#HEADERTEXT"
  • aria-hidden="true" (это для значка ссылки svg, который отображается при наведении курсора мыши)

Исключая арию / svg icon, когда вы пишете:

  • # Header Title

Github генерирует:

  • <h1><a id="user-content-header-title" class="anchor" href="#header-title">Header Title</a></h1>

Поэтому никому не нужно создавать ссылки заголовка и всегда можно ссылаться на них с помощью:

  • Ссылка на [Header Title](#header-title)
3
ответ дан jeffmcneill 19 August 2018 в 07:45
поделиться

На bitbucket.org голосование не будет работать. Вместо этого при использовании заголовков (с ##) можно ссылаться на них как на якоря, префикс их как # markdown-header-my-header-name, где # markdown-header - неявный префикс, созданный средством визуализации, и

Пример

## My paragraph title

будет генерировать неявный якорь, подобный этому

#markdown-header-my-paragraph-title

. весь URL-адрес перед каждой привязной ссылкой необязателен, т. е.

[Some text](#markdown-header-my-paragraph-title)

эквивалентен

[Some text](https://bitbucket.org/some_project/some_page#markdown-header-my-paragraph-title) 

при условии, что они находятся на одной странице.

Источник : https://bitbucket.org/tutorials/markdowndemo/overview (отредактируйте источник этого файла .md и посмотрите, как создаются привязки).

50
ответ дан mixel 19 August 2018 в 07:45
поделиться
  • 1
    Это может также случиться. В соответствии с этим: confluence.atlassian.com/bitbucket/… , bitbucket поддерживает расширение оглавления, которое может автоматически создавать привязки и на основе заголовков документов. Расширение TOC описано здесь: pythonhosted.org/Markdown/extensions/toc.html Добавить текст & quot; [TOC] & quot; к началу документа для его создания. – Binary Phile 29 June 2016 в 19:47
  • 2
    В Github ## My paragraph title будет создан следующий якорь user-content-my-paragraph-title, поэтому вы можете ссылаться на него с помощью [Some text] (# user-content-my-paragraph-title). Однако я не нашел для этого официальной документации. – toto_tico 11 July 2016 в 23:02
  • 3
    Это помогло мне и в битбакете - работает как шарм. – Scott Byers 28 July 2016 в 21:41
  • 4
    Это полезная информация; Спасибо. Тем не менее, средства рендеринга разметки без расширений не будут генерировать эти якоря для вас, и столкновения имен заголовков приведут к столкновению идентификаторов якоря (или какой-то бесполезный отличительный трюк, например, число хватит). Явные идентификаторы привязки лучше, более контролируемы, не подвержены случайным изменениям из-за обновлений текста (см. Трюк выше) и полезны для привязки больше, чем просто заголовки. Оба метода необходимы в целом. – Steve Powell 18 September 2016 в 14:55
  • 5
    На stackedit.io [linky](#header) был достаточным якорем и работал при публикации в Gist. – Felipe Alvarez 18 May 2017 в 04:15

Поздно к вечеринке, но я думаю, что это дополнение может быть полезно для людей, работающих с rmarkdown. В rmarkdown имеется встроенная поддержка ссылок на заголовки в вашем документе.

На любой заголовок, заданный

# Header

, можно ссылаться на

get me back to that header(#header)

Ниже приведен минимальный автономный файл .rmd, который показывает это поведение. Его можно связать с .pdf и .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).
4
ответ дан Robert Siemer 19 August 2018 в 07:45
поделиться

Используя последний Markdown, вы должны использовать следующий синтаксис:

[](){:name='anchorName'}

Это должно создать следующий HTML:

<a name="anchorName"></a>

Если вы хотите, чтобы якорь имел текст, просто добавьте тест в квадратные скобки:

`Some Text {: name = 'anchorName'}

0
ответ дан Ryan McGuinness 19 August 2018 в 07:45
поделиться

Для наиболее распространенных генераторов разметки. В каждом заголовке у вас есть простой самогенерируемый якорь. Например, с помощью pandoc сгенерированный якорь будет кеш-кешем для вашего заголовка.

 echo "# Hello, world\!" | pandoc
 # => <h1 id="hello-world">Hello, world!</h1>

В зависимости от того, какой вы используете парсер разметки, якорь может измениться (возьмите пример symbolrush и La muerte Peluda отвечает, они разные!). См. Этот babelmark , где вы можете видеть сгенерированные привязки в зависимости от реализации уценки.

2
ответ дан Ulysse BN 19 August 2018 в 07:45
поделиться

Используйте name. Использование id не требуется в HTML 5 и создаст глобальные переменные в вашем JavaScript

См. Спецификацию HTML 5, 5.9.8 Навигация к идентификатору фрагмента - оба id и name.

Важно знать, что большинство браузеров все еще обращают идентификаторы в глобальные переменные . Вот быстрый тест . Использование name позволяет избежать создания глобалов и любых конфликтов, которые могут возникнуть.

Пример использования имени:

Take me to [pookie](#pookie)

И привязка адресата:

### <a name="pookie"></a>Some heading
52
ответ дан Wolf 19 August 2018 в 07:45
поделиться
  • 1
    Downvoting. Аргумент глобальной переменной является слабым, так как вы не должны (напрямую) определять глобальные переменные в вашем JS в любом случае, поэтому конфликт не будет происходить. Кроме того, семантика name и id различна. – Marnen Laibow-Koser 11 September 2014 в 19:22
  • 2
    @ MarnenLaibow-Koser Никто не обсуждает определение глобальных переменных в JS. Создание идентификатора в HTML создает глобальное window.someid в большинстве браузеров. – mikemaccana 12 September 2014 в 10:42
  • 3
    @ MarnenLaibow-Koser Многие библиотеки (т. Е. Не ваш собственный JS, а кто-то другой) используют один глобальный - например, fineuploader. Если вы создадите элемент с идентификатором fineuploader, вы не сможете использовать модуль fineuploader. Избегание создания ненужных глобальных элементов помогает избежать этих конфликтов. – mikemaccana 14 September 2014 в 14:34
  • 4
    Мне было бы интересно провести некоторые тесты этого случая и выяснить, какой из них имеет приоритет. Я ценю теоретическую проблему, но в годы развития на стороне клиента у меня никогда не было прерывания ID на стороне клиента JS (при условии, что HTML был в противном случае действителен). Я буду продолжать использовать их, когда они семантически подходят, пока я не столкнусь с реальными проблемами. – Marnen Laibow-Koser 2 March 2015 в 03:16
  • 5
    @ MarnenLaibow-Koser I (и многие другие) имели HTML-идентификаторы, которые нарушают реальный JavaScript - в комментарии, на который вы отвечаете, есть один очень практичный пример! Есть много стилей и компаний, которые всегда используют классы, даже для одиночек, и именно поэтому. – mikemaccana 4 January 2016 в 14:48

В исходном синтаксисе Markdown нет доступного синтаксиса, но Markdown Extra предоставляет средства, по меньшей мере, назначать идентификаторы заголовкам, которые вы можете легко связать с ними. Также обратите внимание, что вы можете использовать обычный HTML как в Markdown, так и в Markdown Extra, а атрибут name был заменен атрибутом id в более поздних версиях HTML.

16
ответ дан You 19 August 2018 в 07:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: