Compare commits

..

No commits in common. "main" and "v0.29.0" have entirely different histories.

1372 changed files with 5571 additions and 85508 deletions

View file

@ -10,11 +10,8 @@ indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[*.yaml]
max_line_length = 150
[*.toml]
max_line_length = 100
[*.md]
trim_trailing_whitespace = false
[{**/layouts/shortcodes/*.html, **/layouts/_default/_markup/*.html}]
insert_final_newline = false

View file

@ -1,6 +0,0 @@
**/*.min.js
**/_vendor/
**/vendor/
public/
**/assets/dist/**
**/pagefind/**

View file

@ -1,20 +0,0 @@
env:
browser: true
es2021: true
jquery: true
node: true
extends:
- 'eslint:recommended'
- 'prettier' # Prevent Prettier conflicts
parserOptions:
ecmaVersion: 12
sourceType: module
rules: {}
globals:
hljs: true
imagesLoaded: true
Isotope: true
L: true # Global from maps library
GMaps: true
Fuse: true
instantsearch: true

2
.github/FUNDING.yml vendored
View file

@ -1,2 +0,0 @@
github: gcushen
custom: https://hugoblox.com/sponsor/

View file

@ -1,120 +0,0 @@
name: 🐛 Bug Report
description: Something isn't working as expected? Report your bugs here.
labels: ['needs triage']
body:
- type: markdown
attributes:
value: |
# Welcome 👋
Thanks for taking the time to fill out this bug report.
We use GitHub Issues for project management, **NOT for support**.
🚑 For **help** and **questions**, search if your question has already been asked on the community **[chat](https://discord.gg/z8wNYzb)** and **[forum](https://github.com/HugoBlox/hugo-blox-builder/discussions)**, and if not, ask your question there instead.
Bug reports also shouldn't be used for support requests about a specific problem in your site, only if the issue can be reproduced on a fresh Hugo Blox Builder template.
Also, you can search and browse the extensive [Hugo Blox Builder](https://docs.hugoblox.com) and [Hugo](https://gohugo.io/documentation/) **documentation**.
For questions on _RStudio/Blogdown_, please reach out to the [RStudio/Blogdown community](https://github.com/rstudio/blogdown).
Please fill out each section below. This info allows Hugo Blox Builder contributors to diagnose (and fix!) your issue as quickly as possible. Otherwise we might need to close the issue (e.g. when it's missing clear steps to reproduce).
Also, please verify that your issue is present in the very latest `main` version.
- type: checkboxes
attributes:
label: Preliminary Checks
description: Please make sure that you verify each checkbox and follow the instructions for them.
options:
- label: "This issue is not a duplicate. Before opening a new issue, please search existing issues: https://github.com/HugoBlox/hugo-blox-builder/issues?q=is%3Aissue"
required: true
- label: "This issue is not a question, feature request, or anything other than a bug report directly related to Hugo Blox Builder. Please post those things on Discord: https://discord.gg/z8wNYzb"
required: true
- type: textarea
attributes:
label: Description
description: Describe the issue that you're seeing.
placeholder: Be as precise as you can. Feel free to share screenshots, videos, or data from the devtools of your browser.
validations:
required: true
- type: input
id: reproduction-link
attributes:
label: Reproduction Link
placeholder: "https://github.com/username/repository-name/"
description: |
Link to a minimal reproduction of the issue (GitHub repository).
**Ideally, create a minimal reproduction of the issue on a fresh template rather than linking to your site's repository: https://hugoblox.com/hugo-themes/
validations:
required: true
- type: textarea
attributes:
label: Steps to Reproduce
description: Clear steps describing how to reproduce the issue.
value: |
1.
2.
3.
...
validations:
required: true
- type: textarea
attributes:
label: Expected Result
description: Describe what you expected to happen.
validations:
required: true
- type: textarea
attributes:
label: Actual Result
description: Describe what actually happened.
validations:
required: true
- type: textarea
attributes:
label: What Hugo Module versions does your site use?
description: Paste your `go.mod` here.
validations:
required: true
- type: dropdown
id: os
attributes:
label: What operating system(s) are you seeing the problem on?
multiple: true
options:
- Windows
- macOS
- Android
- iOS
- Linux
validations:
required: true
- type: dropdown
id: browser
attributes:
label: What browser(s) are you seeing the problem on?
multiple: true
options:
- Chrome
- Safari
- Firefox
- Microsoft Edge
- Other
- type: input
id: hb-tpl
attributes:
label: Which Hugo Blox template are you using?
description: 'For example, a template from https://hugoblox.com/templates/'
placeholder: 'e.g., Academic CV'
validations:
required: true
- type: input
id: version-hugo
attributes:
label: What version of Hugo are you using?
description: 'Run `hugo version` or check your `netlify.toml`'
placeholder: 'Hugo Extended 0.101.0'
validations:
required: true

View file

@ -1,14 +0,0 @@
blank_issues_enabled: false
contact_links:
- name: Questions
url: https://discord.gg/z8wNYzb
about: Chat live with the Hugo Blox Builder community on Discord.
- name: Discussions
url: https://github.com/HugoBlox/hugo-blox-builder/discussions
about: Discuss Hugo Blox Builder on the GitHub Discussions forum
- name: Troubleshooting Guide
url: https://docs.hugoblox.com/reference/troubleshooting/
about: Solve common issues fast.
- name: Documentation
url: https://docs.hugoblox.com/
about: Review the documentation

View file

@ -1,28 +0,0 @@
name: 🚀 Feature request
description: Suggest an improvement.
labels: [proposal]
assignees: []
body:
- type: checkboxes
attributes:
label: Prerequisites
description: Take a minute to help our open source contributors.
options:
- label: I have [searched](https://github.com/HugoBlox/hugo-blox-builder/issues?q=is%3Aissue) for duplicate or closed feature requests
required: true
- label: I am mindful of the project [scope](https://github.com/HugoBlox/hugo-blox-builder/blob/main/CONTRIBUTING.md#scope)
required: true
- type: textarea
id: proposal
attributes:
label: Proposal
description: Provide detailed information for what we should add, including relevant links to screenshots, code, or live demos whenever possible.
validations:
required: true
- type: textarea
id: motivation
attributes:
label: Motivation and context
description: Tell us why this change is needed or helpful, and what problems it may help solve.
validations:
required: true

View file

@ -1,11 +0,0 @@
### Purpose
Describe the purpose of this change. If there is an existing issue that is resolved by this pull request, please reference it in the form `Fixes #1234` where 1234 is the relevant issue number.
### Screenshots
If this is a GUI change, try to include screenshots of the change. If not, please delete this section.
### Documentation
If this is an enhancement, link to the relevant page on the documentation site and describe the necessary changes.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 510 KiB

View file

@ -1,10 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="147" height="40">
<radialGradient id="a" cy="0%" r="100.11%" gradientTransform="matrix(0 .9989 -1.152 0 .5 -.5)">
<stop offset="0" stop-color="#20c6b7"/>
<stop offset="1" stop-color="#4d9abf"/>
</radialGradient>
<g fill="none" fill-rule="evenodd">
<path fill="#0e1e25" d="m53.37 12.978.123 2.198c1.403-1.7 3.245-2.55 5.525-2.55 3.951 0 5.962 2.268 6.032 6.804v12.568h-4.26v-12.322c0-1.207-.26-2.1-.78-2.681-.52-.58-1.371-.87-2.552-.87-1.719 0-3 .78-3.84 2.338v13.535h-4.262v-19.02h4.016zm24.378 19.372c-2.7 0-4.89-.852-6.567-2.557-1.678-1.705-2.517-3.976-2.517-6.812v-.527c0-1.898.365-3.595 1.096-5.089.73-1.494 1.757-2.657 3.078-3.49 1.321-.831 2.794-1.247 4.42-1.247 2.583 0 4.58.826 5.988 2.478 1.41 1.653 2.114 3.99 2.114 7.014v1.723h-12.4c.13 1.57.652 2.812 1.57 3.726s2.073 1.371 3.464 1.371c1.952 0 3.542-.79 4.77-2.373l2.297 2.198c-.76 1.136-1.774 2.018-3.042 2.645-1.269.627-2.692.94-4.27.94zm-.508-16.294c-1.17 0-2.113.41-2.832 1.23-.72.82-1.178 1.963-1.377 3.428h8.12v-.317c-.094-1.43-.474-2.51-1.14-3.243-.667-.732-1.59-1.098-2.771-1.098zm16.765-7.7v4.623h3.35v3.164h-3.35v10.617c0 .726.144 1.25.43 1.573.286.322.798.483 1.535.483a6.55 6.55 0 0 0 1.49-.176v3.305c-.97.27-1.905.404-2.806.404-3.273 0-4.91-1.81-4.91-5.431v-10.776h-3.124v-3.164h3.122v-4.623h4.261zm11.137 23.643h-4.262v-27h4.262zm9.172 0h-4.262v-19.02h4.262zm-4.525-23.96c0-.655.207-1.2.622-1.634.416-.433 1.009-.65 1.78-.65.772 0 1.368.217 1.79.65.42.434.63.979.63 1.635 0 .644-.21 1.18-.63 1.608-.422.428-1.018.642-1.79.642-.771 0-1.364-.214-1.78-.642-.415-.427-.622-.964-.622-1.608zm10.663 23.96v-15.857h-2.894v-3.164h2.894v-1.74c0-2.11.584-3.738 1.753-4.887 1.17-1.148 2.806-1.722 4.91-1.722.749 0 1.544.105 2.386.316l-.105 3.34a8.375 8.375 0 0 0 -1.631-.14c-2.035 0-3.052 1.048-3.052 3.146v1.687h3.858v3.164h-3.858v15.856h-4.261zm17.87-6.117 3.858-12.903h4.542l-7.54 21.903c-1.158 3.199-3.122 4.799-5.893 4.799-.62 0-1.304-.106-2.052-.317v-3.305l.807.053c1.075 0 1.885-.196 2.429-.589.543-.392.973-1.051 1.289-1.977l.613-1.635-6.664-18.932h4.595z"/>
<path fill="url(#a)" fill-rule="nonzero" d="m28.589 14.135-.014-.006c-.008-.003-.016-.006-.023-.013a.11.11 0 0 1 -.028-.093l.773-4.726 3.625 3.626-3.77 1.604a.083.083 0 0 1 -.033.006h-.015c-.005-.003-.01-.007-.02-.017a1.716 1.716 0 0 0 -.495-.381zm5.258-.288 3.876 3.876c.805.806 1.208 1.208 1.355 1.674.022.069.04.138.054.209l-9.263-3.923a.728.728 0 0 0 -.015-.006c-.037-.015-.08-.032-.08-.07s.044-.056.081-.071l.012-.005zm5.127 7.003c-.2.376-.59.766-1.25 1.427l-4.37 4.369-5.652-1.177-.03-.006c-.05-.008-.103-.017-.103-.062a1.706 1.706 0 0 0 -.655-1.193c-.023-.023-.017-.059-.01-.092 0-.005 0-.01.002-.014l1.063-6.526.004-.022c.006-.05.015-.108.06-.108a1.73 1.73 0 0 0 1.16-.665c.009-.01.015-.021.027-.027.032-.015.07 0 .103.014l9.65 4.082zm-6.625 6.801-7.186 7.186 1.23-7.56.002-.01c.001-.01.003-.02.006-.029.01-.024.036-.034.061-.044l.012-.005a1.85 1.85 0 0 0 .695-.517c.024-.028.053-.055.09-.06a.09.09 0 0 1 .029 0l5.06 1.04zm-8.707 8.707-.81.81-8.955-12.942a.424.424 0 0 0 -.01-.014c-.014-.019-.029-.038-.026-.06 0-.016.011-.03.022-.042l.01-.013c.027-.04.05-.08.075-.123l.02-.035.003-.003c.014-.024.027-.047.051-.06.021-.01.05-.006.073-.001l9.921 2.046a.164.164 0 0 1 .076.033c.013.013.016.027.019.043a1.757 1.757 0 0 0 1.028 1.175c.028.014.016.045.003.078a.238.238 0 0 0 -.015.045c-.125.76-1.197 7.298-1.485 9.063zm-1.692 1.691c-.597.591-.949.904-1.347 1.03a2 2 0 0 1 -1.206 0c-.466-.148-.869-.55-1.674-1.356l-8.993-8.993 2.349-3.643c.011-.018.022-.034.04-.047.025-.018.061-.01.091 0a2.434 2.434 0 0 0 1.638-.083c.027-.01.054-.017.075.002a.19.19 0 0 1 .028.032l8.999 13.059zm-14.087-10.186-2.063-2.063 4.074-1.738a.084.084 0 0 1 .033-.007c.034 0 .054.034.072.065a2.91 2.91 0 0 0 .13.184l.013.016c.012.017.004.034-.008.05l-2.25 3.493zm-2.976-2.976-2.61-2.61c-.444-.444-.766-.766-.99-1.043l7.936 1.646a.84.84 0 0 0 .03.005c.049.008.103.017.103.063 0 .05-.059.073-.109.092l-.023.01zm-4.056-4.995a2 2 0 0 1 .09-.495c.148-.466.55-.868 1.356-1.674l3.34-3.34a2175.525 2175.525 0 0 0 4.626 6.687c.027.036.057.076.026.106-.146.161-.292.337-.395.528a.16.16 0 0 1 -.05.062c-.013.008-.027.005-.042.002h-.002l-8.949-1.877zm5.68-6.403 4.489-4.491c.423.185 1.96.834 3.333 1.414 1.04.44 1.988.84 2.286.97.03.012.057.024.07.054.008.018.004.041 0 .06a2.003 2.003 0 0 0 .523 1.828c.03.03 0 .073-.026.11l-.014.021-4.56 7.063c-.012.02-.023.037-.043.05-.024.015-.058.008-.086.001a2.274 2.274 0 0 0 -.543-.074c-.164 0-.342.03-.522.063h-.001c-.02.003-.038.007-.054-.005a.21.21 0 0 1 -.045-.051l-4.808-7.013zm5.398-5.398 5.814-5.814c.805-.805 1.208-1.208 1.674-1.355a2 2 0 0 1 1.206 0c.466.147.869.55 1.674 1.355l1.26 1.26-4.135 6.404a.155.155 0 0 1 -.041.048c-.025.017-.06.01-.09 0a2.097 2.097 0 0 0 -1.92.37c-.027.028-.067.012-.101-.003-.54-.235-4.74-2.01-5.341-2.265zm12.506-3.676 3.818 3.818-.92 5.698v.015a.135.135 0 0 1 -.008.038c-.01.02-.03.024-.05.03a1.83 1.83 0 0 0 -.548.273.154.154 0 0 0 -.02.017c-.011.012-.022.023-.04.025a.114.114 0 0 1 -.043-.007l-5.818-2.472-.011-.005c-.037-.015-.081-.033-.081-.071a2.198 2.198 0 0 0 -.31-.915c-.028-.046-.059-.094-.035-.141zm-3.932 8.606 5.454 2.31c.03.014.063.027.076.058a.106.106 0 0 1 0 .057c-.016.08-.03.171-.03.263v.153c0 .038-.039.054-.075.069l-.011.004c-.864.369-12.13 5.173-12.147 5.173s-.035 0-.052-.017c-.03-.03 0-.072.027-.11a.76.76 0 0 0 .014-.02l4.482-6.94.008-.012c.026-.042.056-.089.104-.089l.045.007c.102.014.192.027.283.027.68 0 1.31-.331 1.69-.897a.16.16 0 0 1 .034-.04c.027-.02.067-.01.098.004zm-6.246 9.185 12.28-5.237s.018 0 .035.017c.067.067.124.112.179.154l.027.017c.025.014.05.03.052.056 0 .01 0 .016-.002.025l-1.052 6.462-.004.026c-.007.05-.014.107-.061.107a1.729 1.729 0 0 0 -1.373.847l-.005.008c-.014.023-.027.045-.05.057-.021.01-.048.006-.07.001l-9.793-2.02c-.01-.002-.152-.519-.163-.52z" transform="translate(-.702)"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 419 KiB

View file

@ -1,71 +0,0 @@
name: Continuous Integration
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
# node-version: [18.x]
steps:
- uses: actions/checkout@v4
with:
submodules: true # Fetch any Git submodules (true OR recursive)
fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod
# - name: Use Node.js ${{ matrix.node-version }}
# uses: actions/setup-node@v3
# with:
# node-version: ${{ matrix.node-version }}
- uses: pnpm/action-setup@v2
with:
version: 8
run_install: |
- recursive: false
args: [--frozen-lockfile]
# - name: Install JS dependencies
# run: rm -rf node_modules && pnpm install --frozen-lockfile
- name: Check for linting errors
run: pnpm run lint:js # TODO: also lint styles again once new rule errors resolved
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: '0.136.5'
extended: true
- name: Build
run: hugo --minify
working-directory: test
# format:
# runs-on: ubuntu-latest
#
# steps:
# - name: Checkout
# uses: actions/checkout@v2
# with:
# # Make sure the actual branch is checked out when running on pull requests
# ref: ${{ github.head_ref }}
#
# - name: Prettify code
# uses: creyD/prettier_action@v3.1
# with:
# prettier_options: '--write blox-tailwind/*.{css,js,json,md,scss} blox-tailwind/**/*.{css,js,json,md,scss}' # Match package.json
# prettier_version: '2.2.1' # Match package.json
# commit_message: 'refactor: format code'
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View file

@ -1,59 +0,0 @@
name: 'Package Splitter'
on:
push:
branches:
- main
env:
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
jobs:
packages_split:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
# define package to repository map
package:
- local_path: 'starters/academic-cv'
split_repository: 'theme-academic-cv'
- local_path: 'starters/resume'
split_repository: 'theme-resume'
- local_path: 'starters-bootstrap/markdown-slides'
split_repository: 'theme-markdown-slides'
- local_path: 'starters/blog'
split_repository: 'theme-blog'
- local_path: 'starters/documentation'
split_repository: 'theme-documentation'
- local_path: 'starters-bootstrap/portfolio'
split_repository: 'theme-portfolio'
- local_path: 'starters-bootstrap/course'
split_repository: 'theme-online-course'
- local_path: 'starters/link-in-bio'
split_repository: 'theme-link-in-bio'
- local_path: 'starters-bootstrap/research-group'
split_repository: 'theme-research-group'
- local_path: 'starters-bootstrap/second-brain'
split_repository: 'theme-second-brain'
- local_path: 'starters/landing-page'
split_repository: 'theme-landing-page'
steps:
- uses: actions/checkout@v3
# step if no tag is pushed
- if: "!startsWith(github.ref, 'refs/tags/')"
uses: "symplify/monorepo-split-github-action@v2.3.0"
with:
# ↓ split "packages/<package-name><package-name>" directory
package_directory: '${{ matrix.package.local_path }}'
# ↓ into https://github.com/HugoBlox/<package-name> repository
repository_organization: 'HugoBlox'
repository_name: '${{ matrix.package.split_repository }}'
# ↓ the user signed under the split commit
user_name: "Splitter Bot"
user_email: "no.reply@hugoblox.com"

View file

@ -1,39 +0,0 @@
name: 'Close stale issues and PRs'
on:
schedule:
- cron: '30 1 * * *'
permissions:
contents: write # only for delete-branch option
issues: write
pull-requests: write
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v9
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-issue-message: |
This issue is stale because it has not had any recent activity. The resources of the project maintainers are limited, and so we are asking for your help.
If this is a **bug** and you can still reproduce this error on the <code>main</code> branch, consider contributing a Pull Request with a fix.
If this is a **feature request**, and you feel that it is still relevant and valuable, consider contributing a Pull Request for review.
This issue will automatically close soon if no further activity occurs. Thank you for your contributions.
stale-pr-message: |
This PR is stale because it has not had any recent activity. The resources of the project maintainers are limited, and so we are asking for your help.
If you feel that the PR is still relevant in the latest release, consider making the PR easier to review and finding developers to help review the PR.
Please be _mindful_ that although we encourage PRs, we cannot expand the scope of the project in every possible direction. There will be requests that don't make the roadmap.
This PR will automatically close soon if no further activity occurs. Thank you for your contributions.
days-before-stale: 30
days-before-close: 5
stale-issue-label: stale
stale-pr-label: stale
exempt-issue-labels: 'keep,enhancement,bug,documentation'
exempt-pr-labels: 'keep,enhancement,bug,documentation'

21
.gitignore vendored
View file

@ -1,21 +0,0 @@
# IDE specific
.idea/
.vscode/
# Jupyter
.ipynb_checkpoints/
# Node
node_modules/
# Hugo
.hugo_build.lock
go.sum
resources/
public/
# Mac
.DS_Store
# Test
test/go.sum

View file

@ -1,14 +0,0 @@
_vendor/
vendor/
blox-bootstrapassets/css/libs/
public/
resources/
*.html
blox-bootstrapassets/css/reveal.css
blox-bootstrapassets/scss/main.scss
blox-bootstraplayouts/index.json
blox-bootstraplayouts/index.webmanifest

View file

@ -1,17 +0,0 @@
'use strict';
module.exports = {
bracketSpacing: false,
singleQuote: true,
jsxBracketSameLine: true,
trailingComma: 'all',
printWidth: 120,
overrides: [
{
files: ['*.html'],
options: {
parser: 'go-template',
},
},
],
};

View file

@ -1,9 +0,0 @@
**/*.min.css
**/vendor/
**/_vendor/
**/libs/
**/dist/
public/
blox-bootstrap/assets/scss/main.scss
blox-bootstrap/assets/css/reveal_custom.css

View file

@ -1,25 +0,0 @@
# PREVIOUS PLUGINS - no longer needed now porting from Bootstrap to Tailwind
#plugins:
# - stylelint-scss
extends:
- stylelint-config-standard
- stylelint-config-prettier
# PREVIOUS EXTENDS - no longer needed now porting from Bootstrap to Tailwind
# - stylelint-config-standard-scss
# - stylelint-config-prettier-scss
rules:
comment-empty-line-before: null # Allow more compact comments
property-no-vendor-prefix: null # Necessary unless postcss prefix
value-no-vendor-prefix: null # Necessary unless postcss prefix
at-rule-no-unknown: null # Use PostCSS "at" rules
# PREVIOUS RULES - no longer needed now porting from Bootstrap to Tailwind
# at-rule-no-unknown: null # Use SCSS "at" rules
# scss/at-rule-no-unknown: true # Use SCSS "at" rules
# no-descending-specificity: null # Todo: remove once investigated/resolved
# color-function-notation: null # Todo: refactor code
# alpha-value-notation: null # Todo: refactor code
# number-max-precision: null # Todo: refactor code
# font-family-no-missing-generic-family-keyword:
# - true
# - ignoreFontFamilies:
# - Font Awesome 5 Free

View file

@ -1,5 +0,0 @@
# Code of Conduct
We want to foster a positive, inclusive, and welcoming environment 💜
We expect you to follow our [Code of Conduct](https://docs.hugoblox.com/reference/contribute/) to fulfil this goal.

View file

@ -1,164 +0,0 @@
# Contributing to Hugo Blox Builder
Thanks for being interested in contributing! Were so glad you want to help!
We want contributing to Hugo Blox to be fun, enjoyable, and educational for anyone and everyone. All contributions are welcome, including new plugins (such as new widgets, shortcodes, theme packs, and language packs), templates, features, documentation as well as updates and tweaks, blog posts, YouTube tutorials, live streaming customizations, meetups, and more.
## Where to Start
Join the **Contributing** channel on the **[community Discord](https://discord.gg/z8wNYzb)**.
## General ways to help
Whether or not you're a developer, there are plenty of non-technical ways that you can help. We always need help with:
- Helping the Hugo Blox community via the live [chat](https://discord.gg/z8wNYzb) and [forum](https://github.com/HugoBlox/hugo-blox-builder/discussions)
- Investigating and reviewing open [Issues](https://github.com/HugoBlox/hugo-blox-builder/issues) and [Pull Requests](https://github.com/HugoBlox/hugo-blox-builder/pulls)
- Influence the roadmap! Give a thumbs up 👍 to upvote a feature request you would like to use
- Improving the [documentation](https://docs.hugoblox.com/) and writing tutorials
- Just click the _Edit_ button at the bottom of pages or open an issue with your proposed improvement
- Testing and quality assurance, such as checking the latest version of the templates work as you expect and fixing any dead-links etc.
- Translating the Hugo Blox templates or the Hugo Blox documentation
- Hosting local Hugo Blox themed events or meetups
- Promoting Hugo Blox to others by blogging, vlogging, code streaming, talking etc.
### For technical contributions
Repository structure:
- modules
- The components and layouts which form the Hugo Blox page building framework that the templates depend on
- scripts
- A collection of scripts for helping maintain the repository
- starters
- The collection of starter templates (aka Hugo themes)
- To contribute an improvement to a starter template, make your changes to the relevant template within this folder. **Do not submit PRs to the dedicated template repositories as they are read-only.**
- test
- a minimal site that is built by the CI on every commit to help test PRs
#### What are some good issues to contribute to?
If you're a developer looking to contribute, but you're not sure where to begin, check out the [help wanted](https://github.com/HugoBlox/hugo-blox-builder/labels/help%20wanted) label on Github, which contains issues which need some love.
#### How can I propose an improvement?
If you have a straightforward bug fix or improvement, feel free to contribute it in a [Pull Request](https://github.com/HugoBlox/hugo-blox-builder/pulls) for the community to review.
If you have an idea for a new feature, please start by [searching the issues](https://github.com/HugoBlox/hugo-blox-builder/issues) to check that the feature has not already been suggested and then suggest it by [opening a new issue](https://github.com/HugoBlox/hugo-blox-builder/issues/new/choose), as adding new features to Hugo Blox first requires some analysis around the design and spec.
Please be mindful of the project [scope](#scope).
#### How can I contribute an improvement?
Learn [how to contribute code on Github](https://codeburst.io/a-step-by-step-guide-to-making-your-first-github-contribution-5302260a2940).
**⚡️ To make quick and easy contributions, you can browse the repository on GitHub and edit your changes in GitHub's online editor. GitHub will then open a Pull Request (PR) for your changes to be reviewed by the community. ⚡️**
Otherwise, for larger changes, you can edit locally on your computer in your favorite editor, such as VSCode:
**Download the repo**
Fork (copy) the repo on GitHub and then clone (download) your fork to your computer:
```sh
git clone https://github.com/<YOUR_USERNAME>/hugo-blox-builder.git
```
**View a template**
[Install Yarn](https://yarnpkg.com/), the project's build system if necessary.
Then choose the starter template you wish to view, such as _minimal_:
```sh
yarn view:local academic-cv
```
Note that Hugo Server can occasionally stop working after changes are made (sometimes showing unrelated errors). If this happens, stop Hugo (Control-C) and restart it with the `yarn view:local ...` command above.
**Implement your improvements**
Implement you changes and then check for any linting or formatting issues.
Code linting and formatting form part of the Continuous Integration process to help catch bugs and code issues in contributions.
Contributors can also run the flow on their fork of the "Hugo Blox Builder" repo when making contributions (you'll need Node and Yarn to run):
```sh
yarn install
yarn run lint
yarn run format
```
**Open a Pull Request with your changes**
Use git to push (upload) your changes to GitHub and then open a Pull Request (PR) at https://github.com/HugoBlox/hugo-blox-builder/pulls
Please be mindful of the project [scope](#scope).
### Contribute Blox
[Create and publish your own blox](https://github.com/HugoBlox/create-blox)
### Contribute a shortcode
[Create and publish your own shortcode](https://github.com/HugoBlox/create-shortcode)
### Contribute a language pack
To contribute a **new language pack** or an improvement to a language pack, refer to the [language pack guide](https://docs.hugoblox.com/reference/language/#create-or-modify-a-language-pack). Once created, [fork Hugo Blox Builder](https://github.com/HugoBlox/hugo-blox-builder), place your language pack in `blox-tailwind/i18n/`, add the name of the language to `blox-tailwind/data/i18n/language.yaml`, and open a Pull Request on Github with these two files.
### Contribute a theme pack
[View the guide](https://docs.hugoblox.com/getting-started/customize/#appearance) to contributing a color and font theme pack.
### Contribute a template
Consider duplicating a bare-bones template, such as the [Link In Bio](https://github.com/HugoBlox/hugo-blox-builder/tree/main/starters/link-in-bio) folder, and building up your own template using the Hugo Blox. Reach out on the **Contributing** channel in Discord to submit your template.
### Contribute to the Publication importer
To contribute to **Hugo Academic CLI**, the automatic publication and blog post importer, refer to [its dedicated Github repository](https://github.com/GetRD/academic-file-converter) and Issue queue.
## Become a backer
To help us develop this free software sustainably under the open source license, we ask all individuals and businesses that use it to help support its ongoing maintenance and development via sponsorship:
- ☕️ [**Donate a coffee**](https://github.com/sponsors/gcushen?frequency=one-time)
- ❤️ [**Become a sponsor and unlock awesome rewards**](https://hugoblox.com/sponsor/)
## Best practices
To create a consistent experience for all contributors and help prevent bugs, we have some best practices.
### Conventional Commits Specification
Please follow the [Conventional Commits Specification](https://www.conventionalcommits.org/en/v1.0.0/).
For example:
- new feature: `feat: add the X parameter`
- bug fix: `fix: typo in implementation of X parameter`
- docs: `docs: document the X parameter`
- style: `style: change font color from black to blue`
- build-related: `chore: rebuild JS assets`
### Linting and formatting
```sh
yarn install
yarn run lint
yarn run format
```
## Scope
Please be _mindful_ that although we encourage feature requests, we cannot expand the scope of the project in every possible direction. There will be feature requests that don't make the roadmap.
Every feature requires effort not just to analyse the requirements, design it, implement it, test it, document it, merge it, write release notes for it, and release it, but also to continuously support users with it and maintain it (fixing and refactoring the feature as the project and its dependencies evolve).
The more regular active volunteers (rather than one-off contributors) we have supporting users and maintaining the project, the more feasible it becomes to expand the scope of the project.
The project's scope also has to be constrained so that it doesn't get too complex and unwieldy, from an architectural perspective, a testing perspective, and from a usability perspective.
Plugins (widgets, shortcodes, theme packs, language packs, and third-party JavaScript integrations) as well as templates allow the community to add major features without needing to contribute to Hugo Blox itself.

View file

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2016-present George Cushen (https://georgecushen.com/)
Copyright (c) 2016 George Cushen
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in

125
README.md
View file

@ -1,113 +1,82 @@
[**中文**](./README.zh.md)
# Academic: the personal website framework for [Hugo](https://gohugo.io)
<p align="center"><a href="https://hugoblox.com/templates/" target="_blank" rel="noopener"><img src="./.github/media/sharing.png" alt="Hugo Blox Builder"></a></p>
**Academic** is a framework to help you create a beautiful website quickly. Perfect for personal, student, or academic websites. [Check out the latest demo](https://sourcethemes.com/academic/) of what you'll get in less than 10 minutes.
[![Get Started](https://img.shields.io/badge/-Get%20started-ff4655?style=for-the-badge)](https://hugoblox.com/templates/)
[![Discord](https://img.shields.io/discord/722225264733716590?style=for-the-badge)](https://discord.com/channels/722225264733716590/742892432458252370/742895548159492138)
[![GitHub Sponsors](https://img.shields.io/github/sponsors/gcushen?label=%E2%9D%A4%EF%B8%8F%20sponsor&style=for-the-badge)](https://github.com/sponsors/gcushen)
[![Twitter Follow](https://img.shields.io/twitter/follow/GetResearchDev?label=Follow%20on%20Twitter&style=for-the-badge)](https://twitter.com/GetResearchDev)
[![GitHub followers](https://img.shields.io/github/followers/gcushen?label=Follow%20on%20GH&style=for-the-badge)](https://github.com/gcushen)
[![Screenshot](https://raw.githubusercontent.com/gcushen/hugo-academic/master/academic.png)](https://github.com/gcushen/hugo-academic/)
# [Hugo Blox Builder](https://hugoblox.com): easy, all-in-one website builder
Key features:
### Join 750,000+ Sites. No Code. Easily Create Future-Proof Websites ✏️ 📰 🚀
- Easily manage your homepage, blog posts, publications, talks, and projects
- Configurable widgets available for Biography, Publications, Projects, News/Blog, Talks, and Contact
- Need a different section? Just use the Custom widget!
- Write in [Markdown](https://sourcethemes.com/academic/post/writing-markdown-latex/) for easy formatting and code highlighting, with [LaTeX](https://en.wikibooks.org/wiki/LaTeX/Mathematics) for mathematical expressions
- Social/academic network linking, [Google Analytics](https://analytics.google.com), and [Disqus](https://disqus.com) comments
- Responsive and mobile friendly
- Simple and refreshing one page design
- Easy to customize
🔥 **1. Create _any_ kind of website for free with [Hugo](https://github.com/gohugoio/hugo)-powered blocks** - from landing pages, knowledge bases, and courses to professional resumés, conferences, and tech blogs
## Getting Started
🎨 **2. Personalize** a beautiful starter template with **50+ light/dark color themes, language packs, and blocks**
1. [Install Hugo](https://georgecushen.com/create-your-website-with-hugo/#installing-hugo) and create a new website by typing the following commands in your *Terminal* or *Command Prompt* app:
🛋 **3. Optionally, write from your sofa or on the go with the integrated open source Content Management System (CMS) based on [Decap CMS](https://docs.hugoblox.com/getting-started/cms/decap/)**
hugo new site my_website
cd my_website
<p style="text-align: center"><a href="https://hugoblox.com/templates/" target="_blank" rel="noopener"><img src="./.github/media/write-from-phone.gif" alt="Hugo Blox Builder CMS"></a></p>
2. Install Academic with [git](https://help.github.com/articles/set-up-git/):
[Check out the latest **demos**](https://hugoblox.com/templates/) of what you'll get in less than 60 seconds, or [get **inspired**](https://hugoblox.com/creators/) by other creators.
git clone https://github.com/gcushen/hugo-academic.git themes/academic
- 👉 [**Get Started**](https://hugoblox.com/templates/)
- 📚 [View the **documentation**](https://docs.hugoblox.com/)
- 🙋‍♀️ **Have a question?**
- **Chat with us now on [Discord](https://discord.gg/z8wNYzb)** or explore the [Troubleshooting Guide](https://docs.hugoblox.com/reference/troubleshooting/) and [Q&A Forum](https://github.com/HugoBlox/hugo-blox-builder/discussions)
- _Also, check out [Hugo Forum](https://discourse.gohugo.io) for Hugo Qs and [Netlify Forum](https://answers.netlify.com/) for Netlify Qs_
- 🐦 Share your Hugo Blox Builder site with the community on Twitter: [@GetResearchDev](https://twitter.com/GetResearchDev) [@GeorgeCushen](https://twitter.com/GeorgeCushen) [#MadeWithHugoBlox](https://twitter.com/search?q=%23MadeWithHugoBlox&src=typed_query)
- 🗳 [Take the survey and help us improve #OpenSource](https://forms.gle/NioD9VhUg7PNmdCAA)
- ⬆️ **Updating?** View the [Update Guide](https://docs.hugoblox.com/reference/update/) and [Release Notes](https://github.com/HugoBlox/hugo-blox-builder/releases)
- 🚀 [Contribute improvements](CONTRIBUTING.md) or [suggest improvements](https://github.com/HugoBlox/hugo-blox-builder/issues)
Or alternatively, [download Academic](https://github.com/gcushen/hugo-academic/archive/master.zip) and extract it into a `themes/academic` folder within your Hugo website.
## 💙 We ask you, humbly, to support this open source movement
3. If you are creating a new website, copy the contents of the `exampleSite` folder to your website root folder, overwriting existing files if necessary. The `exampleSite` folder contains an example config file and content to help you get started.
Today we ask you to defend the open source independence of the Hugo Blox Builder website builder and themes 🐧
cp -av themes/academic/exampleSite/* .
We're an **open source and open science movement** that depends on your support to stay online and thriving, but 99.9% of our creators don't give; they simply look the other way 🤦🏻‍♀️
4. Start the Hugo server from your website root folder:
### [😍️ Click here to become a GitHub Sponsor, unlocking awesome perks such as _exclusive templates, widgets, and tutorials_](https://github.com/sponsors/gcushen)
hugo server --watch
### Business Sponsors
Now you can go to [localhost:1313](http://localhost:1313) and your new Academic powered website should appear.
<div style="display: grid; column-gap: 50px; grid-template-columns: repeat(3, 1fr);">
<div style="display: flex; align-items: center;">
<a href="https://www.netlify.com/" target="_blank"><img src=".github/media/sponsors/netlify.svg" alt="" height="40" width="147" style="display: inline-block;"></a>
</div>
<div>
<a href="https://github.com/sponsors/gcushen"><img src=".github/media/sponsors/your-logo-here.png" alt="" style="display: inline-block;"></a>
</div>
</div>
5. [Customize your website](https://sourcethemes.com/academic/post/getting-started/#getting-started) and [add your content](https://sourcethemes.com/academic/post/managing-content/) by referring to the Academic documentation
## Starter Templates
6. Build your site by running the `hugo` command. Then [host it for free using Github Pages](https://georgecushen.com/create-your-website-with-hugo/). Or alternatively, copy the generated `public/` directory (by FTP, Rsync, etc.) to your production web server (such as your university's hosting service).
Hugo Blox Builder is a **no-code** framework for creating _any_ kind of website using **widgets**. Each site is 100% customizable to **make it your own**!
## Upgrading
Choose from one of the starter templates to easily get started:
Feel free to *star* the project on [Github](https://github.com/gcushen/hugo-academic/) and monitor the [commits](https://github.com/gcushen/hugo-academic/commits/master) for updates. [Release notes](https://github.com/gcushen/hugo-academic/wiki/Release-Notes) for notable updates are also available to aid upgrading your site.
[![Writing technical content](./.github/media/starters.webp)](https://hugoblox.com/templates/)
Before upgrading Academic, it is recommended to make a backup of your entire website directory, or at least your `themes/academic` directory.
## The Future of Technical Content Writing
Before upgrading for the first time, the remote *origin* repository should be renamed to *upstream*:
**Write rich, future-proof content** using standardized Markdown along with bundled extensions for math and diagrams. Edit in the open source CMS or via an editor such as the online GitHub Editor, Jupyter Notebook, or RStudio! [Learn more](https://docs.hugoblox.com/reference/markdown/)
$ cd themes/academic
$ git remote rename origin upstream
[![Writing technical content](https://hugoblox.com/uploads/readmes/writing-technical-content.gif)](https://academic-demo.netlify.app/post/writing-technical-content/)
To list available updates:
## Features
$ cd themes/academic
$ git fetch upstream
$ git log --pretty=oneline --abbrev-commit --decorate HEAD..upstream/master
[![Screenshot](./.github/media/academic.png)](https://hugoblox.com/templates/)
Then, upgrade by running:
**Key features:**
$ git pull upstream
- **Page builder** - Create _anything_ with [**blocks**](https://docs.hugoblox.com/getting-started/page-builder/) and [**elements**](https://docs.hugoblox.com/reference/markdown/)
- **Edit any type of content** - Blog posts, publications, talks, slides, projects, and more!
- **Create content** in [**Markdown**](https://docs.hugoblox.com/reference/markdown/), [**Jupyter**](https://docs.hugoblox.com/getting-started/cms/), or [**RStudio**](https://docs.hugoblox.com/getting-started/cms/rstudio/)
- **Plugin System** - Fully customizable [**color** and **font themes**](https://docs.hugoblox.com/getting-started/customize/#appearance)
- **Display Code and Math** - Code highlighting and [LaTeX math](https://docs.hugoblox.com/reference/markdown/#math) supported
- **Integrations** - [Google Analytics](https://analytics.google.com), [Disqus commenting](https://disqus.com), Maps, Contact Forms, and more!
- **Beautiful Site** - Simple and refreshing one page design
- **Industry-Leading SEO** - Help get your website found on search engines and social media
- **Media Galleries** - Display your images and videos with captions in a customizable gallery
- **Mobile Friendly** - Look amazing on every screen with a mobile friendly version of your site
- **Multi-language** - 35+ language packs including English, 中文, and Português
- **Multi-user** - Each author gets their own profile page
- **Privacy Pack** - Assists with GDPR
- **Stand Out** - Bring your site to life with animation, parallax backgrounds, and scroll effects
- **One-Click Deployment** - No servers. No databases. Only files.
If you have modified files in `themes/academic`, git will attempt to auto-merge changes. If conflicts are reported, you will need to manually edit the files with conflicts and add them back (`git add <filename>`).
## Themes
If there are any issues after upgrading, you may wish to compare your site with the latest [example site](https://github.com/gcushen/hugo-academic/tree/master/exampleSite) to check if any settings changed.
Hugo Blox Builder comes with **automatic day (light) and night (dark) mode** built-in. Alternatively, click the moon icon in the top right of one of the [Demos](https://hugoblox.com/templates/) to set your preferred mode!
## Feedback & Contributing
Choose a stunning theme for your site and [customize it](https://docs.hugoblox.com/getting-started/customize/#custom-theme) to your liking:
Please use the [issue tracker](https://github.com/gcushen/hugo-academic/issues) to let me know about any bugs or feature requests, or alternatively make a pull request.
[![Themes](./.github/media/themes.png)](https://hugoblox.com/templates/)
[Browse more templates and themes...](https://hugoblox.com/templates/)
## Ecosystem
- [**Academic File Converter**](https://github.com/GetRD/academic-file-converter): Automatically import academic publications from BibTeX to Markdown files
- [**Awesome Hugo**](https://github.com/HugoBlox/awesome-hugo): Scripts to help migrate content to new versions of Hugo
## Join the community
Feel free to [_star_ the project on Github](https://github.com/HugoBlox/hugo-blox-builder), [join the community](https://discord.gg/z8wNYzb) on Discord, and follow [@GetResearchDev](https://twitter.com/GetResearchDev) on Twitter to be the first to hear about new features.
For general questions about Hugo, there is a [Hugo discussion forum](http://discuss.gohugo.io).
## License
Copyright 2016-present [George Cushen](https://georgecushen.com).
Copyright 2017 [George Cushen](https://georgecushen.com).
The [Hugo Blox Builder](https://github.com/HugoBlox/hugo-blox-builder/) repository is released under the [MIT](https://github.com/HugoBlox/hugo-blox-builder/blob/main/LICENSE.md) license.
Released under the [MIT](https://github.com/gcushen/hugo-academic/blob/master/LICENSE.md) license.
[![Analytics](https://ga-beacon.appspot.com/UA-78646709-2/hugo-academic/readme?pixel)](https://github.com/igrigorik/ga-beacon)

View file

@ -1,111 +0,0 @@
[**English**](./README.md)
<p align="center"><a href="https://hugoblox.com/templates/" target="_blank" rel="noopener"><img src="./.github/media/sharing.png" alt="Hugo Blox Builder 网站构建工具"></a></p>
[![开始使用](https://img.shields.io/badge/-开始使用-ff4655?style=for-the-badge)](https://hugoblox.com/templates/)
[![Discord](https://img.shields.io/discord/722225264733716590?style=for-the-badge)](https://discord.com/channels/722225264733716590/742892432458252370/742895548159492138)
[![GitHub 赞助者](https://img.shields.io/github/sponsors/gcushen?label=%E2%9D%A4%EF%B8%8F%20赞助&style=for-the-badge)](https://github.com/sponsors/gcushen)
[![Twitter 关注者](https://img.shields.io/twitter/follow/GetResearchDev?label=关注Twitter&style=for-the-badge)](https://twitter.com/GetResearchDev)
[![GitHub 关注者](https://img.shields.io/github/followers/gcushen?label=关注GH&style=for-the-badge)](https://github.com/gcushen)
# [Hugo Blox Builder](https://hugoblox.com): 全能网站构建工具
### 加入 750,000+ 站点。零代码。轻松创建面向未来的网站✏️ 📰 🚀
🔥 **1. 使用 [Hugo](https://github.com/gohugoio/hugo) 引擎支持的模块免费创建_任何_类型的网站** - 从登录页面、知识库和课程到专业简历、会议和技术博客
🎨 **2. 个性化**漂亮的起始模板,享有**50+种浅色/深色主题、多语言包和模块**
🛋 **3. 可选地,使用基于 [Decap CMS](https://docs.hugoblox.com/getting-started/cms/decap/) 的开源内容管理系统CMS随时随地从沙发上或外出写作**
<p style="text-align: center"><a href="https://hugoblox.com/templates/" target="_blank" rel="noopener"><img src="./.github/media/write-from-phone.gif" alt="Decap CMS"></a></p>
[查看最新的 **演示**](https://hugoblox.com/templates/),在不到 60 秒内获取您将获得的内容,或者获得其他创作者的 [**灵感**](https://hugoblox.com/creators/)。
- 👉 [**开始使用**](https://hugoblox.com/templates/)
- 📚 [查看 **文档**](https://docs.hugoblox.com/)
- 🙋‍♀️ **有问题吗?**
- **立即在 [Discord](https://discord.gg/z8wNYzb) 上与我们聊天**,或浏览 [故障排除指南](https://docs.hugoblox.com/reference/troubleshooting/) 和 [问答论坛](https://github.com/HugoBlox/hugo-blox-builder/discussions)
- _此外查看 [Hugo 论坛](https://discourse.gohugo.io) 解决 Hugo 相关问题,以及 [Netlify 论坛](https://answers.netlify.com/) 解答 Netlify 相关问题_
- 🐦 与社区共享您的 Hugo Blox Builder 网站:[@GetResearchDev](https://twitter.com/GetResearchDev) [@GeorgeCushen](https://twitter.com/GeorgeCushen) [#MadeWithHugoBlox](https://twitter.com/search?q=%23MadeWithHugoBlox&src=typed_query)
- 🗳 [参加调查,帮助我们改进 #开源](https://forms.gle/NioD9VhUg7PNmdCAA)
- ⬆️ **更新?** 查看 [更新指南](https://docs.hugoblox.com/reference/update/) 和 [发布说明](https://github.com/HugoBlox/hugo-blox-builder/releases)
- 🚀 [贡献改进](CONTRIBUTING.md) 或 [建议改进](https://github.com/HugoBlox/hugo-blox-builder/issues)
## 💙 我们向您恳请支持这个开源运动
今天我们请求您捍卫 Hugo Blox Builder 网站构建工具和主题的开源独立性 🐧
我们是一个**开源和开放科学的运动**,依靠您的支持来保持在线和繁荣,但我们的 99.9% 的创作者没有做出贡献,他们只是选择置之不理 🤦🏻‍♀️
### [😍️ 点击此处成为 GitHub 赞助者,解锁令人惊叹的特权,如 _独家模板、小部件和教程_](https://github.com/sponsors/gcushen)
### 商业赞助者
<div style="display: grid; column-gap: 50px; grid-template-columns: repeat(3, 1fr);">
<div style="display: flex; align-items: center;">
<a href="https://www.netlify.com/" target="_blank"><img src=".github/media/sponsors/netlify.svg" alt="" height="40" width="147" style="display: inline-block;"></a>
</div>
<div>
<a href="https://github.com/sponsors/gcushen"><img src=".github/media/sponsors/your-logo-here.png" alt="" style="display: inline-block;"></a>
</div>
</div>
## 起始模板
Hugo Blox Builder 是一个使用**小部件**创建_任何_类型网站的**零代码**框架。每个网站都是 100% 可自定义,使其成为您的专属网站!
选择一个起始模板,轻松上手:
[![撰写技术内容](./.github/media/starters.webp)](https://hugoblox.com/templates/)
## 技术内容撰写的未来
使用标准化的 Markdown 和捆绑的扩展(包括数学和图表)**编写丰富、具备未来性的内容**。可以在开源 CMS 中编辑,也可以通过在线的 GitHub 编辑器、Jupyter Notebook 或 RStudio 进行编辑![了解更多](https://docs.hugoblox.com/reference/markdown/)
[![撰写技术内容](https://hugoblox.com/uploads/readmes/writing-technical-content.gif)](https://academic-demo.netlify.app/post/writing-technical-content/)
## 特点
[![截图](./.github/media/academic.png)](https://hugoblox.com/templates/)
**主要特点:**- **页面构建器** - 使用[小部件](https://docs.hugoblox.com/getting-started/page-builder/)和[元素](https://docs.hugoblox.com/reference/markdown/)创建_任何东西_
- **编辑任何类型的内容** - 博客文章、出版物、演讲、幻灯片、项目等等!
- 使用 [**Markdown**](https://docs.hugoblox.com/reference/markdown/)、[**Jupyter**](https://docs.hugoblox.com/getting-started/cms/) 或 [**RStudio**](https://docs.hugoblox.com/getting-started/cms/rstudio/) 创建内容
- **插件系统** - 完全可定制的[**颜色**和**字体主题**](https://docs.hugoblox.com/getting-started/customize/#appearance)
- **显示代码和数学公式** - 支持代码高亮和[LaTeX数学](https://docs.hugoblox.com/reference/markdown/#math)
- **集成** - [Google Analytics](https://analytics.google.com)、[Disqus评论](https://disqus.com)、地图、联系表单等等!
- **美丽的网站** - 简单清爽的单页设计
- **行业领先的SEO** - 帮助您的网站在搜索引擎和社交媒体上被发现
- **媒体图库** - 在可定制的图库中显示带标题的图像和视频
- **移动友好** - 适用于各种屏幕的移动友好版本,外观令人惊艳
- **多语言** - 35+语言包,包括英文、中文和葡萄牙文
- **多用户** - 每个作者都有自己的个人资料页面
- **隐私保护套件** - 协助符合GDPR
- **脱颖而出** - 使用动画、视差背景和滚动效果使您的网站生动起来
- **一键部署** - 无需服务器、无需数据库,只有文件。
## 主题
Hugo Blox Builder内置了**自动白天(浅色)和黑夜(暗色)模式**。或者,单击[Demos](https://hugoblox.com/templates/)右上角的月亮图标设置您喜欢的模式!
为您的网站选择一个惊艳的主题,并[自定义它](https://docs.hugoblox.com/getting-started/customize/#custom-theme)以满足您的喜好:
[![主题](./.github/media/themes.png)](https://hugoblox.com/templates/)
[浏览更多模板和主题...](https://hugoblox.com/templates/)
## 生态系统
- [**Academic File Converter**](https://github.com/GetRD/academic-file-converter)自动将学术出版物从BibTeX导入到Markdown文件
- [**Awesome Hugo**](https://github.com/HugoBlox/awesome-hugo)帮助将内容迁移到Hugo的新版本的脚本
## 加入社区
请随意在Github上[_star_该项目](https://github.com/HugoBlox/hugo-blox-builder)在Discord上[join the community](https://discord.gg/z8wNYzb)并关注Twitter上的[@GetResearchDev](https://twitter.com/GetResearchDev),第一时间获取新功能的消息。
## 许可证
版权所有 2016-present [George Cushen](https://georgecushen.com)。
[Hugo Blox Builder](https://github.com/HugoBlox/hugo-blox-builder/)存储库根据[MIT](https://github.com/HugoBlox/hugo-blox-builder/blob/main/LICENSE.md)许可证发布。

BIN
academic.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

2
archetypes/default.md Normal file
View file

@ -0,0 +1,2 @@
+++
+++

6
archetypes/home.md Normal file
View file

@ -0,0 +1,6 @@
+++
subtitle = ""
# Order that this section will appear in.
weight = 100
+++

14
archetypes/post.md Normal file
View file

@ -0,0 +1,14 @@
+++
title = "{{ replace .TranslationBaseName "-" " " | title }}"
date = "{{ .Date }}"
math = false
highlight = true
tags = []
# Optional featured image (relative to `static/img/` folder).
[header]
image = ""
caption = ""
+++

29
archetypes/project.md Normal file
View file

@ -0,0 +1,29 @@
+++
title = "{{ replace .TranslationBaseName "-" " " | title }}"
date = "{{ .Date }}"
# Tags: can be used for filtering projects.
# Example: `tags = ["machine-learning", "deep-learning"]`
tags = []
# Project summary to display on homepage.
summary = ""
# Optional image to display on homepage.
image_preview = ""
# Optional external URL for project (replaces project detail page).
external_link = ""
# Does the project detail page use math formatting?
math = false
# Does the project detail page use source code highlighting?
highlight = true
# Optional featured image (relative to `static/img/` folder).
[header]
image = ""
caption = ""
+++

52
archetypes/publication.md Normal file
View file

@ -0,0 +1,52 @@
+++
title = "{{ replace .TranslationBaseName "-" " " | title }}"
date = "{{ .Date }}"
# Authors. Comma separated list, e.g. `["Bob Smith", "David Jones"]`.
authors = [""]
# Publication type.
# Legend:
# 0 = Uncategorized
# 1 = Conference proceedings
# 2 = Journal
# 3 = Work in progress
# 4 = Technical report
# 5 = Book
# 6 = Book chapter
publication_types = ["0"]
# Publication name and optional abbreviated version.
publication = ""
publication_short = ""
# Abstract and optional shortened version.
abstract = ""
abstract_short = ""
# Does this page contain LaTeX math? (true/false)
math = false
# Does this page require source code highlighting? (true/false)
highlight = true
# Featured image thumbnail (optional)
image_preview = ""
# Is this a selected publication? (true/false)
selected = false
# Links (optional)
url_pdf = ""
url_code = ""
url_dataset = ""
url_project = ""
url_slides = ""
url_video = ""
# Optional featured image (relative to `static/img/` folder).
[header]
image = ""
caption = ""
+++

24
archetypes/talk.md Normal file
View file

@ -0,0 +1,24 @@
+++
title = "{{ replace .TranslationBaseName "-" " " | title }}"
date = "{{ .Date }}"
abstract = ""
abstract_short = ""
event = ""
event_url = ""
location = ""
selected = false
math = false
highlight = true
url_pdf = ""
url_slides = ""
url_video = ""
# Optional featured image (relative to `static/img/` folder).
[header]
image = ""
caption = ""
+++

13
data/i18n/languages.yaml Normal file
View file

@ -0,0 +1,13 @@
"de": "Deutsch"
"en": "English"
"es": "Español"
"eu": "Euskara"
"fr": "Français"
"it": "Italiano"
"nl": "Nederlands"
"pl": "Polski"
"pt": "Português"
"ru": "Русский"
"tr": "Türkçe"
"vi": "Tiếng Việt"
"zh": "中文 (简体)"

18
data/sri.toml Normal file
View file

@ -0,0 +1,18 @@
# How to update an entry:
#
# echo -n "sha512-" && curl --silent "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_CHTML" | openssl dgst -sha512 -binary | openssl enc -base64 -A
[js]
imagesLoaded = "sha512-iHzEu7GbSc705hE2skyH6/AlTpOfBmkx7nUqTLGzPYR+C1tRaItbRlJ7hT/D3YQ9SV0fqLKzp4XY9wKulTBGTw=="
tweenMax = "sha512-Z5heTz36xTemt1TbtbfXtTq5lMfYnOkXM2/eWcTTiLU01+Sw4ku1i7vScDc8fWhrP2abz9GQzgKH5NGBLoYlAw=="
scrollToPlugin = "sha512-CDeU7pRtkPX6XJtF/gcFWlEwyaX7mcAp5sO3VIu/ylsdR74wEw4wmBpD5yYTrmMAiAboi9thyBUr1vXRPA7t0Q=="
mathJax = "sha512-tOav5w1OjvsSJzePRtt2uQPFwBoHt1VZcUq8l8nm5284LEKE9FSJBQryzMBzHxY5P0zRdNqEcpLIRVYFNgu1jw=="
bootstrap = "sha512-iztkobsvnjKfAtTNdHkGVjAYTrrtlC7mGp/54c40wowO7LhURYl3gVzzcEqGl/qKXQltJ2HwMrdLcNUdo+N/RQ=="
isotope = "sha512-VDBOIlDbuC4VWxGJNmuFRQ0Li0SKkDpmGyuhAG5LTDLd/dJ/S0WMVxriR2Y+CyPL5gzjpN4f/6iqWVBJlht0tQ=="
jQuery = "sha512-jGsMH83oKe9asCpkOVkBnUrDDTp8wl+adkB2D+//JtlxO4SrLoJdhbOysIFQJloQFD+C4Fl1rMsQZF76JjV0eQ=="
autotrack = "sha512-HUmooslVKj4m6OBu0OgzjXXr+QuFYy/k7eLI5jdeEy/F4RSgMn6XRWRGkFi5IFaFgy7uFTkegp3Z0XnJf3Jq+g=="
[css]
bootstrap = "sha512-6MXa8B6uaO18Hid6blRMetEIoPqHf7Ux1tnyIQdpt9qI5OACx7C+O3IVTr98vwGnlcg0LOLa02i9Y1HpVhlfiw=="
academicons = "sha512-NThgw3XKQ1absAahW6to7Ey42uycrVvfNfyjqcFNgCmOCQ5AR4AO0SiXrN+8ZtYeappp56lk1WtvjVmEa+VR6A=="
fontAwesome = "sha512-SfTiTlX6kk+qitfevl/7LibUOeJWlt9rbyDn92a1DqWOw9vWG2MFoays0sgObmWazO5BQPiFucnnEAjpAB+/Sw=="

193
exampleSite/config.toml Normal file
View file

@ -0,0 +1,193 @@
baseurl = "https://example.com/" # End your URL with a `/` trailing slash.
title = "Academic"
copyright = "&copy; 2016 Your Name"
theme = "academic"
enableEmoji = true
footnotereturnlinkcontents = "<sup>^</sup>"
# Enable comments by entering your Disqus shortname
disqusShortname = ""
# Enable analytics by entering your Google Analytics tracking ID
googleAnalytics = ""
# Default language to use (if you setup multilingual support)
defaultContentLanguage = "en"
defaultContentLanguageInSubdir = false
[blackfriday]
hrefTargetBlank = true
[params]
name = "Lena Smith"
role = "Professor of Artificial Intelligence"
organization = "Stanford University"
organization_url = ""
gravatar = false # Get your avatar from Gravatar.com? (true/false)
avatar = "portrait.jpg" # Specify an avatar image (in `static/img/` folder) or delete value to disable avatar.
email = "test@example.org"
address = "Building 1 Room 1, Stanford University, California, 90210, USA"
office_hours = "Monday 10:00 to 13:00 or email for appointment"
phone = "888 888 88 88"
skype = "echo123"
telegram = ""
# Enable Keybase in Contact section by entering your keybase.io username.
keybase = ""
# Date format (refer to Go's date format: http://flippinggodateformat.com )
# Examples: "Mon, Jan 2, 2006" or "2006-01-02"
date_format = "Mon, Jan 2, 2006"
# Enable global LaTeX math rendering?
# If false, you can enable it locally on a per page basis.
math = false
# Highlight.js options
# highlight
# Enable global source code highlighting? If false, you can
# override it for a particular page in that page's preamble.
#
# Example: highlight = true
#
# highlight_languages
# Add support for highlighting additional languages. Support for
# languages mentioned here will be included in all pages. You
# can also set this variable for a particular page in that
# page's preamble.
#
# Example: highlight_languages = ["go", "lisp", "ocaml"]
#
# highlight_style
# Choose a different CSS style for highlighting source
# code. Setting this option in a page's preamble has no
# effect.
#
# Example: highlight_style = "github-gist"
#
# highlight_version
# Choose the version of highlight.js you want. Setting this
# option in a page's preamble has no effect.
#
# Example: highlight_version = "9.9.0"
#
# For the list of supported languages, styles, and versions, see:
# https://cdnjs.com/libraries/highlight.js/
#
# For more info on the highlighting options, see:
# https://gcushen.github.io/hugo-academic-demo/post/writing-markdown-latex/#highlighting-options
highlight = true
highlight_languages = []
# highlight_style = "github"
# highlight_version = "9.9.0"
# Enable native social sharing buttons?
sharing = true
# Link custom CSS and JS assets
# (relative to /static/css and /static/js respectively)
custom_css = []
custom_js = []
# Publication types.
# Used to categorize publications.
# The index of the publication type in the list is used as its unique numerical identifier.
# The numeric ID is used in a publication's frontmatter to categorize it.
# The language can be edited below.
# For multi-lingual sites, copy this block to each language section at the end of this file.
publication_types = [
'Uncategorized', # 0
'Conference proceedings', # 1
'Journal', # 2
'Work in progress', # 3
'Technical report', # 4
'Book', # 5
'Book chapter' # 6
]
# Social/Academic Networking
#
# Icon pack "fa" includes the following social network icons:
#
# twitter, weibo, linkedin, github, facebook, pinterest, google-plus,
# youtube, instagram, soundcloud
#
# For email icon, use "fa" icon pack, "envelope" icon, and
# "mailto:your@email.com" as the link.
#
# Full list: https://fortawesome.github.io/Font-Awesome/icons/
#
# Icon pack "ai" includes the following academic network icons:
#
# google-scholar, arxiv, orcid, researchgate, mendeley
#
# Full list: https://jpswalsh.github.io/academicons/
[[params.social]]
icon = "envelope"
icon_pack = "fa"
link = "mailto:test@example.org"
[[params.social]]
icon = "twitter"
icon_pack = "fa"
link = "//twitter.com/GeorgeCushen"
[[params.social]]
icon = "google-scholar"
icon_pack = "ai"
link = "https://scholar.google.co.uk/citations?user=sIwtMXoAAAAJ"
[[params.social]]
icon = "github"
icon_pack = "fa"
link = "//github.com/gcushen"
# Navigation Links
# To link a homepage widget, specify the URL as a hash `#` followed by the filename of the
# desired widget in your `content/home/` folder.
# The weight parameter defines the order that the links will appear in.
[[menu.main]]
name = "Home"
url = "#about"
weight = 1
[[menu.main]]
name = "Publications"
url = "#publications_selected"
weight = 2
[[menu.main]]
name = "Posts"
url = "#posts"
weight = 3
[[menu.main]]
name = "Projects"
url = "#projects"
weight = 4
[[menu.main]]
name = "Teaching"
url = "#teaching"
weight = 5
[[menu.main]]
name = "Contact"
url = "#contact"
weight = 6
# Taxonomies.
[taxonomies]
tag = "tags"
category = "categories"
publication_type = "publication_types"
# Languages
# Create a [languages.X] block for each language you want, where X is the language ID.
# Configure the English version of the website.
[languages.en]
languageCode = "en-us"

View file

@ -0,0 +1,42 @@
+++
# About/Biography widget.
date = "2016-04-20T00:00:00"
draft = false
widget = "about"
# Order that this section will appear in.
weight = 1
# List your academic interests.
[interests]
interests = [
"Artificial Intelligence",
"Computational Linguistics",
"Information Retrieval"
]
# List your qualifications (such as academic degrees).
[[education.courses]]
course = "PhD in Artificial Intelligence"
institution = "Stanford University"
year = 2012
[[education.courses]]
course = "MEng in Artificial Intelligence"
institution = "Massachusetts Institute of Technology"
year = 2009
[[education.courses]]
course = "BSc in Artificial Intelligence"
institution = "Massachusetts Institute of Technology"
year = 2008
+++
# Biography
Lena Smith is a professor of artificial intelligence at the Stanford AI Lab. Her research interests include distributed robotics, mobile computing and programmable matter. She leads the Robotic Neurobiology group, which develops self-reconfiguring robots, systems of self-organizing robots, and mobile sensor networks.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque elit, tristique placerat feugiat ac, facilisis vitae arcu. Proin eget egestas augue. Praesent ut sem nec arcu pellentesque aliquet. Duis dapibus diam vel metus tempus vulputate.

View file

@ -0,0 +1,18 @@
+++
# Contact widget.
date = "2016-04-20T00:00:00"
draft = false
title = "Contact"
subtitle = ""
widget = "contact"
# Order that this section will appear in.
weight = 70
# Automatically link email and phone?
autolink = true
+++

View file

@ -0,0 +1,22 @@
+++
# Recent Posts widget.
# This widget displays recent posts from `content/post/`.
date = "2016-04-20T00:00:00"
draft = false
title = "Recent Posts"
subtitle = ""
widget = "posts"
# Order that this section will appear in.
weight = 40
# Show posts that contain the following tags. Default to any tags.
tags = []
# Number of posts to list.
count = 5
+++

View file

@ -0,0 +1,37 @@
+++
# Projects widget.
# This widget displays all projects from `content/project/`.
date = "2016-04-20T00:00:00"
draft = false
title = "Projects"
subtitle = ""
widget = "projects"
# Order that this section will appear in.
weight = 50
# View.
# Customize how projects are displayed.
# Legend: 0 = list, 1 = cards.
view = 1
# Filter toolbar.
# Add or remove as many filters (`[[filter]]` instances) as you like.
# Use "*" tag to show all projects or an existing tag prefixed with "." to filter by specific tag.
# To remove toolbar, delete/comment all instances of `[[filter]]` below.
[[filter]]
name = "All"
tag = "*"
[[filter]]
name = "Deep Learning"
tag = ".deep-learning"
[[filter]]
name = "Other"
tag = ".demo"
+++

View file

@ -0,0 +1,22 @@
+++
# Recent Publications widget.
# This widget displays recent publications from `content/publication/`.
date = "2016-04-20T00:00:00"
draft = false
title = "Recent Publications"
subtitle = ""
widget = "publications"
# Order that this section will appear in.
weight = 20
# Number of publications to list.
count = 10
# Show publication details (such as abstract)? (true/false)
detailed_list = false
+++

View file

@ -0,0 +1,20 @@
+++
# Selected Publications widget.
# This widget displays publications from `content/publication/` which have
# `selected = true` in their `+++` front matter.
date = "2016-04-20T00:00:00"
draft = false
title = "Selected Publications"
subtitle = ""
widget = "publications_selected"
# Order that this section will appear in.
weight = 10
# Show publication details (such as abstract)? (true/false)
detailed_list = true
+++

View file

@ -0,0 +1,21 @@
+++
# Recent and Upcoming Talks widget.
date = "2016-04-20T00:00:00"
draft = false
title = "Recent & Upcoming Talks"
subtitle = ""
widget = "talks"
# Order that this section will appear in.
weight = 30
# Number of talks to list.
count = 10
# Show talk details (such as abstract)? (true/false)
detailed_list = false
+++

View file

@ -0,0 +1,27 @@
+++
# An example of using the custom widget to create your own homepage section.
# To create more sections, duplicate this file and edit the values below as desired.
date = "2016-04-20T00:00:00"
draft = false
title = "Teaching"
subtitle = ""
widget = "custom"
# Order that this section will appear in.
weight = 60
+++
This is an example of using the *custom* widget to create your own homepage section.
I am a teaching instructor for the following courses at University X:
- CS101: An intro to computer science
- CS102: An intro to computer science
- CS103: An intro to computer science
- CS104: An intro to computer science
- CS105: An intro to computer science
- CS106: An intro to computer science
- CS107: An intro to computer science

View file

@ -0,0 +1,12 @@
+++
title = "Posts"
date = "2017-01-01T00:00:00Z"
math = false
highlight = false
# Optional featured image (relative to `static/img/` folder).
[header]
image = ""
caption = ""
+++

View file

@ -0,0 +1,186 @@
+++
date = "2016-04-20T12:00:00"
draft = false
tags = ["academic", "hugo"]
title = "Getting started with the Academic framework for Hugo"
math = true
summary = """
Create a beautifully simple personal or academic website in under 10 minutes.
"""
[header]
image = "headers/getting-started.png"
caption = "Image credit: [**Academic**](https://github.com/gcushen/hugo-academic/)"
+++
The Academic framework enables you to easily create a beautifully simple personal or academic website using the [Hugo](https://gohugo.io) static site generator.
Key features:
- Easily manage your homepage, blog posts, publications, talks, and projects
- Configurable widgets available for Biography, Publications, Projects, News/Blog, Talks, and Contact
- Need a different section? Just use the Custom widget!
- Write in [Markdown]({{< ref "post/writing-markdown-latex.md" >}}) for easy formatting and code highlighting, with [LaTeX](https://en.wikibooks.org/wiki/LaTeX/Mathematics) for mathematical expressions
- Social/academic network linking, [Google Analytics](https://analytics.google.com), and [Disqus](https://disqus.com) comments
- Responsive and mobile friendly
- Simple and refreshing one page design
- Easy to customize
## Installation
1. [Install Hugo](https://georgecushen.com/create-your-website-with-hugo/#installing-hugo) and create a new website by typing the following commands in your *Terminal* or *Command Prompt* app:
hugo new site my_website
cd my_website
2. Install Academic with [git](https://help.github.com/articles/set-up-git/):
git clone https://github.com/gcushen/hugo-academic.git themes/academic
Or alternatively, [download Academic](https://github.com/gcushen/hugo-academic/archive/master.zip) and extract it into a `themes/academic` folder within your Hugo website.
3. If you are creating a new website, copy the contents of the `exampleSite` folder to your website root folder, overwriting existing files if necessary. The `exampleSite` folder contains an example config file and content to help you get started.
cp -av themes/academic/exampleSite/* .
4. Start the Hugo server from your website root folder:
hugo server --watch
Now you can go to [localhost:1313](http://localhost:1313) and your new Academic powered website should appear.
5. Customize your website - refer to the *Getting Started* section below
6. Build your site by running the `hugo` command. Then [host it for free using Github Pages](https://georgecushen.com/create-your-website-with-hugo/). Or alternatively, copy the generated `public/` directory (by FTP, Rsync, etc.) to your production web server (such as your university's hosting service).
## Getting Started
Assuming you created a new website with the example content following the installation steps above, this section explores just a few more steps in order to customize it.
### Core parameters
The core parameters for the website can be edited in the `config.toml` configuration file:
- Set `baseurl` to your website URL (we recommend [GitHub Pages](https://georgecushen.com/create-your-website-with-hugo/) for free hosting)
- Set `title` to your desired website title such as your name
- The example Disqus commenting variable should be cleared (e.g. `disqusShortname = ""`) or set to your own [Disqus](https://disqus.com/) shortname to enable commenting
- Edit your details under `[params]`; these will be displayed mainly in the homepage *about* and *contact* widgets (if used). To disable a contact field, simply clear the value to `""`.
- Place a square cropped portrait photo named `portrait.jpg` into the `static/img/` folder, overwriting any defaults. Alternatively, you can edit the `avatar` filepath to point to a different image name or clear the value to disable the avatar feature.
- To enable LaTeX math for your site, set `math = true`
- Social/academic networking links are defined as multiples of `[[params.social]]`. They can be created or deleted as necessary.
### Introduce yourself
Edit your biography in the *about* widget `content/home/about.md` that you copied across from the `themes/academic/exampleSite/` folder. The research interests and qualifications are stored as `interests` and `education` variables. The academic qualifications are defined as multiples of `[[education.courses]]` and can be created or deleted as necessary. It's possible to completely hide the interests and education lists by deleting their respective variables.
### Customize the homepage
Refer to our guide on using [widgets]({{< ref "post/widgets.md" >}}) to customize your homepage.
### Add your content
Refer to our guide on [managing content]({{< ref "post/managing-content.md" >}}) to create your own publications, blog posts, talks, and projects.
### Remove unused widgets and pages
[How to remove unused widgets and content pages]({{< ref "post/managing-content.md#removing-content" >}}).
### Customization & Upgrading
Continue reading below for advanced customization tips and instructions for keeping the framework up-to-date with any improvements that become available.
## Advanced customization
It is possible to carry out many customizations without touching any files in `themes/academic`, making it easier to upgrade the framework in the future.
### Navigation menu
The `[[menu.main]]` entries towards the bottom of `config.toml` define the navigation links at the top of the website. They can be added or removed as desired.
To create a dropdown sub-menu, add `identifier = "something"` to the parent item and `parent = "something"` to the child item.
### Website icon
Save your main icon and mobile icon as square PNG images named `icon.png` and `apple-touch-icon.png`, respectively. Place them in your root `static/img/` folder.
### Theme color (CSS)
You can link custom CSS assets (relative to your root `static/css`) from your `config.toml` using `custom_css = ["custom.css"]`.
For example, lets make a green theme. First, define `custom_css = ["green.css"]` in `config.toml`. Then we can download the example [green theme](https://gist.github.com/gcushen/d5525a4506b9ccf83f2bce592a895495) and save it as `static/css/green.css`, relative to your website root (i.e. **not** in the `themes` directory).
### Analytics
To enable [Google Analytics](http://www.google.com/analytics), add your tracking code in `config.toml` similarly to `googleAnalytics = "UA-12345678-9"`.
### Third party and local scripts (JS)
To add a third party script, create a file named `head_custom.html` in a `layouts/partials/` folder at the root of your website (not in the `themes` folder). Any HTML code added to this file will be included within your website's `<head>`. Therefore, it's suitable for adding custom metadata or third party scripts specified with the *async* attribute.
Whereas for your own local scripts, you can link your local JS assets (relative to your root `static/js`) from your `config.toml` using `custom_js = ["custom.js"]`.
### Language and translation
The interface text (e.g. buttons) is stored in language files which are collected from Academic's `themes/academic/i18n/` folder, as well as an `i18n/` folder at the root of your project.
To edit the interface text, copy `themes/academic/i18n/en.yaml` to `i18n/en.yaml` (relative to the root of your website). Open the new file and make any desired changes to the text appearing after `translation:`. Note that the language files are formatted in YAML syntax.
To translate the interface text to another language, follow the above instructions, but name the new file in the form `i18n/X.yaml` where `X` is the appropriate [ISO/RFC5646 language identifier](http://www.w3schools.com/tags/ref_language_codes.asp) for the translation. Then follow the brief instructions in the *Language* section at the bottom of your `config.toml`. To change the default language used by Academic, set `defaultContentLanguage` to the desired language identifier in your configuration file.
To translate the navigation bar, you can edit the default `[[menu.main]]` instances in `config.toml`. However, for a multilingual site, you will need to duplicate all of the `[[menu.main]]` instances and rename the new instances from `[[menu.main]]` to `[[languages.X.menu.main]]`, where `X` is the language identifier (e.g. `[[languages.zh.menu.main]]` for Simplified Chinese). Thus, the navigation bar can be displayed in multiple languages.
To translate a content file in your `content/` folder into another language, copy the file to `filename.X.md` where `filename` is your existing filename and `X` is the appropriate [ISO/RFC5646 language identifier](http://www.w3schools.com/tags/ref_language_codes.asp) for the translation. Then translate the content in the new file to the specified language.
For further details on Hugo's internationalization and multilingual features, refer to the [associated Hugo documentation](https://gohugo.io/content/multilingual/).
### Permalinks
*Permalinks*, or *permanent links*, are URLs to individual pages and posts on your website. They are permanent web addresses which can be used to link to your content. Using Hugo's *permalinks* option these can be easily customized. For example, the blog post URL can be changed to the form *yourURL/2016/05/01/my-post-slug* by adding the following near the top of your `config.toml` (before `[params]` settings):
[permalinks]
post = "/:year/:month/:day/:slug"
Where `:slug` defaults to the filename of the post, excluding the file extension. However, slug may be overridden on a per post basis if desired, simply by setting `slug = "my-short-post-title"` in your post preamble.
## Upgrading
Feel free to *star* the project on [Github](https://github.com/gcushen/hugo-academic/) and monitor the [commits](https://github.com/gcushen/hugo-academic/commits/master) for updates.
Before upgrading the framework, it is recommended to make a backup of your entire website directory, or at least your `themes/academic` directory. You can also read about the [most recent milestones](https://github.com/gcushen/hugo-academic/releases) (but this doesn't necessarily reflect the latest *master* release).
Before upgrading for the first time, the remote *origin* repository should be renamed to *upstream*:
$ cd themes/academic
$ git remote rename origin upstream
To list available updates:
$ cd themes/academic
$ git fetch upstream
$ git log --pretty=oneline --abbrev-commit --decorate HEAD..upstream/master
Then, upgrade by running:
$ git pull upstream
If you have modified files in `themes/academic`, git will attempt to auto-merge changes. If conflicts are reported, you will need to manually edit the files with conflicts and add them back (`git add <filename>`).
If there are any issues after upgrading, you may wish to compare your site with the latest [example site](https://github.com/gcushen/hugo-academic/tree/master/exampleSite) to check if any settings changed.
## Feedback & Contributing
Please use the [issue tracker](https://github.com/gcushen/hugo-academic/issues) to let me know about any bugs or feature requests, or alternatively make a pull request.
For general questions about Hugo, there is a [Hugo discussion forum](http://discuss.gohugo.io).
## License
Copyright 2016 [George Cushen](https://georgecushen.com).
Released under the [MIT](https://github.com/gcushen/hugo-academic/blob/master/LICENSE.md) license.

View file

@ -0,0 +1,141 @@
+++
date = "2016-04-20T11:00:00"
draft = false
tags = ["academic", "hugo"]
title = "Managing content"
math = false
+++
This is a brief guide to managing content with the Academic framework. Content can include publications, projects, talks, and news/blog articles. After you have read this guide about creating and managing content, you may also be interested to learn about [writing content with Markdown, LaTeX, and Shortcodes]({{< ref "post/writing-markdown-latex.md" >}}).<!--more-->
To enable LaTeX math rendering for a page, you should include `math = true` in the page's `+++` preamble, as demonstrated in the included example site. Otherwise, to enable math on the homepage or for all pages, you must globally set `math = true` in `config.toml`.
To disable source code highlighting by default for all pages, set `highlight = false` in `config.toml`. You can then enable source code highlighting only on pages that need it by setting `highlight = true` in that page's preamble. See the [code-highlighting docs]({{< ref "post/writing-markdown-latex.md#code-highlighting" >}}) for more details.
To display a featured image in content page headers, the parameters below can be inserted towards the end of a page's `+++` preamble. It is assumed that the image is located in your `static/img/` folder, so the full path in the example below will be `static/img/headers/getting-started.png`. The `caption` parameter can be used to write an image caption or credit.
```toml
[header]
image = "headers/getting-started.png"
caption = "Image credit: [**Academic**](https://github.com/gcushen/hugo-academic/)"
```
{{% alert note %}}
If you wish to prevent a featured image automatically being used for a post's thumbnail on the homepage, the `preview = false` parameter can be added to `[header]`.
{{% /alert %}}
## Create a publication
To create a new publication:
hugo new publication/my-paper-name.md
Then edit the default variables at the top of `content/publication/my-paper-name.md` to include the details of your publication. The `url_` variables are used to generate links associated with your publication, such as for viewing PDFs of papers. Here is an example:
```
+++
abstract = "An abstract..."
authors = ["First author's name", "Second author's name"]
date = "2013-07-01"
image = ""
image_preview = ""
math = false
publication = "The publishing part of the citation goes here. You may use *Markdown* for italics etc."
title = "A publication title, such as title of a paper"
url_code = ""
url_dataset = ""
url_pdf = "pdf/my-paper-name.pdf"
url_project = ""
url_slides = ""
url_video = ""
+++
Further details on your publication can be written here using *Markdown* for formatting. This text will be displayed on the Publication Detail page.
```
The `url_` links can either point to local or web content. Associated local publication content, such as PDFs, may be copied to a `static/pdf/` folder and referenced like `url_pdf = "pdf/my-paper-name.pdf"`.
You can also associate custom link buttons with the publication by adding the following block(s) within the variable preamble above, which is denoted by `+++`:
```
[[url_custom]]
name = "Custom Link"
url = "http://www.example.org"
```
If you enabled `detailed_list` for publications in `config.toml`, then there are a few more optional variables that you can include in the publication page preamble. You may use `abstract_short = "friendly summary of abstract"` and `publication_short = "abbreviated publication details"` to display a friendly summary of the abstract and abbreviate the publication details, respectively. Furthermore, there is the option to display a different image on the homepage to the publication detail page by setting `image_preview = "my-image.jpg"`. This can be useful if you wish to scale down the image for the homepage or simply if you just wish to show a different image for the preview.
{{% alert warning %}}
Any double quotes (`"`) or backslashes (e.g. LaTeX `\times`) occurring within the value of any frontmatter parameter (such as the *abstract*) should be escaped with a backslash (`\`). For example, the symbol `"` and LaTeX text `\times` become `\"` and `\\times`, respectively. Refer to the [TOML documentation](https://github.com/toml-lang/toml#user-content-string) for more info.
{{% /alert %}}
## Post an article
To create a blog/news article:
hugo new post/my-article-name.md
Then edit the newly created file `content/post/my-article-name.md` with your full title and content.
Hugo will automatically generate summaries of posts that appear on the homepage. If you are dissatisfied with an automated summary, you can either limit the summary length by appropriately placing <code>&#60;&#33;&#45;&#45;more&#45;&#45;&#62;</code> in the article body, or completely override the automated summary by adding a `summary` parameter to the `+++` preamble such that:
summary = "Summary of my post."
To disable commenting for a specific post, you can add `disable_comments = true` to the post `+++` preamble. Or to disable commenting for all posts, you can either set `disqusShortname = ""` or `disable_comments = true` in `config.toml`.
## Create a project
To create a project:
hugo new project/my-project-name.md
Then edit the newly created file `content/project/my-project-name.md`. Either you can link the project to an external project website by setting the `external_link = "http://external-project.com"` variable at the top of the file, or you can add content (below the final `+++`) in order to render a project page on your website.
## Create a talk
To create a talk:
hugo new talk/my-talk-name.md
Then edit the newly created file `content/talk/my-talk-name.md` with your full talk title and details. Note that many of the talk parameters are similar to the publication parameters.
## Manage node index pages
The node index pages (e.g. `/post/`) are the special pages which list all of your content. They can exist for blog posts, publications, and talks. The homepage widgets will automatically link to the node index pages when you have more items of content than can be displayed in the widget. Therefore, if you don't have much content, you may not see the automatic links yet - but you can also manually link to them using a normal Markdown formatted link in your content.
You can edit the title and add your own content, such as an introduction, by creating and editing the following content files for the node indexes:
hugo new post/_index.md
hugo new publication/_index.md
hugo new talk/_index.md
Then remove all parameters except for `title`, `math`, `highlight`, and `date`. Edit the `title` parameter as desired and add any content after the `+++` preamble/frontmatter ends. For example, you should have something similar to:
```toml
+++
title = "List of my posts"
date = "2017-01-01T00:00:00Z"
math = false
highlight = false
+++
Below is an automatically generated list of all my blog posts!
```
## Removing content
Generally, to remove content, simply delete the relevant file from your `content/post`, `content/publication`, `content/project`, or `content/talk` folder.
## View your updated site
After you have made changes to your site, you can view it by running the `hugo server --watch` command and then opening [localhost:1313](http://localhost:1313) in your web browser.
## Deploy your site
Finally, you can build the static website to a `public/` folder ready for deployment using the `hugo` command.
You may then deploy your site by copying the `public/` directory (by FTP, SFTP, WebDAV, Rsync, git push, etc.) to your production web server.
Note that running `hugo` does not remove any previously generated files before building. Therefore, it's best practice to delete your `public/` directory prior to running `hugo` to ensure no old or interim files are deployed to your server.

View file

@ -0,0 +1,38 @@
+++
date = "2014-03-10T00:00:00"
draft = false
tags = ["jekyll"]
title = "Migrate from Jekyll to Hugo"
summary = """
Learn how to migrate an existing website from Jekyll to Hugo.
"""
math = false
+++
Here are a few tips for migrating an existing website from Jekyll to Hugo. These tips can be applied in conjunction with following Hugo Academic's [getting started guide]({{< ref "post/getting-started.md" >}}).
## Move static content to `static`
Jekyll has a rule that any directory not starting with `_` will be copied as-is to the `_site` output. Hugo keeps all static content under `static`. You should therefore move it all there.
With Jekyll, something that looked like
<root>/
▾ images/
logo.png
should become
<root>/
▾ static/
▾ images/
logo.png
Additionally, you'll want any files that should reside at the root (such as `CNAME`) to be moved to `static`.
## Fix content
Depending on the amount of customization that was done for each post in Jekyll, this step will require more or less effort. There are no hard and fast rules here except that `hugo server --watch` and the Hugo Academic example site are your friends. Test your changes and fix errors as needed.
## Publish
The default is for Jekyll to publish the website to a `_site` directory, whereas Hugo publishes to a `public` directory.
## A practical example
Alexandre Normand migrated his website from Jekyll to Hugo in less than a day. You can see all his changes by looking at this GitHub [diff](https://github.com/alexandre-normand/alexandre-normand/compare/869d69435bd2665c3fbf5b5c78d4c22759d7613a...b7f6605b1265e83b4b81495423294208cc74d610). However, bear in mind that this example is **not specific to the Academic theme nor does it use the latest version of Hugo**.

View file

@ -0,0 +1,61 @@
+++
date = "2016-04-20T11:00:00"
draft = false
tags = ["academic", "hugo"]
title = "Customizing the homepage with widgets"
math = false
summary = """
Enable/disable and configure widgets to customize your homepage.
"""
+++
Homepage widgets display as sections on the homepage. They can be enabled/disabled and configured as desired. Academic has the following widgets available to use:
- About/biography
- Selected publications
- Recent publications
- Recent news/blog posts
- Projects
- Selected talks
- Recent talks
- Contact
- Custom widget (demonstrated with the *teaching* example)
The example site that you copied to create your site uses all the different types of widget (except talks), so you can generally just delete the widgets you don't need and customize the parameters of the widgets you wish to keep.
The parameters for each widget vary. They can be found in the preamble/frontmatter (between the pair of `+++`) for each widget installed in the `content/home/` folder.
{{% alert note %}}
By default, publications will be displayed in a simple list. If you prefer a more detailed list with abstract and image, you can enable the detailed publication list on the homepage by setting `detailed_list = true` in `content/home/publications.md`.
{{% /alert %}}
## Add a widget to the homepage
To add a widget manually, copy the relevant widget from `themes/academic/exampleSite/content/home/` to your `content/home/` folder.
Widget identifiers are set to their respective filenames, so a `content/home/about.md` widget can be linked from the navigation bar by setting the relevant URL as `"#about"` in `config.toml`.
This means that if you want to use multiple instances of a widget, each widget will be assigned a unique ID based on the filename that you set. You can then use that ID for linking, like in the above example.
## Using the custom widget
You can use the custom widget to create your own home page sections.
Simply duplicate (copy/paste) and rename the example *teaching* file at `content/home/teaching.md`. Then edit the section title, weight (refer to *Ordering sections* below), and content as desired.
You may also wish to add a navigation link to the top of the page that points to the new section. This can be achieved by adding something similar to the following lines to your `config.toml`, where the URL will consist of the first title word in lowercase:
[[menu.main]]
name = "Research"
url = "#research"
weight = 10
## Remove a widget from the homepage
If you do not require a particular widget, you can simply delete any associated files from the `content/home/` folder.
To remove a navigation link from the top of the page, remove the associated `[[menu.main]]` entry in `config.toml`.
## Ordering widgets
The order that the homepage widgets are displayed in is defined by the `weight` parameter in each of the files in the `content/home/` directory. The widgets are displayed in ascending order of their `weight`, so you can simply edit the `weight` parameters as desired.

View file

@ -0,0 +1,235 @@
+++
date = "2016-04-20T10:00:00"
draft = false
tags = []
title = "Writing content with Markdown, LaTeX, and Shortcodes"
math = true
+++
Content can be written using [Markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet), [LaTeX math](https://en.wikibooks.org/wiki/LaTeX/Mathematics), and [Hugo Shortcodes](http://gohugo.io/extras/shortcodes/). Additionally, HTML may be used for advanced formatting.<!--more--> This article gives an overview of the most common formatting options.
## Sub-headings
## Heading 2
### Heading 3
#### Heading 4
##### Heading 5
###### Heading 6
## Emphasis
Italics with *asterisks* or _underscores_.
Bold with **asterisks** or __underscores__.
Combined emphasis with **asterisks and _underscores_**.
Strikethrough with ~~two tildes~~.
## Ordered lists
1. First item
2. Another item
## Unordered lists
* First item
* Another item
## Images
Images may be added to a page by placing them in your `static/img/` folder and referencing them using one of the following two notations:
A general image:
![alternative text for search engines](/img/screenshot.png)
A numbered figure with caption:
{{</* figure src="/img/screenshot.png" title="Figure Caption" */>}}
## Links
[I'm a link](https://www.google.com)
[A post]({{</* ref "post/hi.md" */>}})
[A publication]({{</* ref "publication/hi.md" */>}})
[A project]({{</* ref "project/hi.md" */>}})
[Another section]({{</* relref "hi.md#who" */>}})
## Emojis
See the [Emoji cheat sheet](http://www.webpagefx.com/tools/emoji-cheat-sheet/) for available emoticons. The following serves as an example, but you should remove the spaces between each emoji name and pair of semicolons:
I : heart : Academic : smile :
I :heart: Academic :smile:
## Blockquote
> This is a blockquote.
> This is a blockquote.
## Footnotes
I have more [^1] to say.
[^1]: Footnote example.
I have more [^1] to say.
[^1]: Footnote example.
## Code highlighting
Pass the *language* of the code, such as `python`, as a parameter after three backticks:
```python
# Example of code highlighting
input_string_var = input("Enter some data: ")
print("You entered: {}".format(input_string_var))
```
Result:
```python
# Example of code highlighting
input_string_var = input("Enter some data: ")
print("You entered: {}".format(input_string_var))
```
### Highlighting options
The Academic theme uses [highlight.js](https://highlightjs.org) for source code highlighting, and highlighting is enabled by default for all pages. However, several configuration options are supported that allow finer-grained control over highlight.js.
The following table lists the supported options for configuring highlight.js, along with their expected type and a short description. A "yes" in the **config.toml** column means the value can be set globally in `config.toml`, and a "yes" in the **preamble** column means that the value can be set locally in a particular page's preamble.
option | type | description | config.toml | preamble
----------------------|---------|---------------------------------|-------------|---------
`highlight` | boolean | enable/disable highlighting | yes | yes
`highlight_languages` | slice | choose additional languages | yes | yes
`highlight_style` | string | choose a highlighting style | yes | no
`highlight_version` | string | choose the highlight.js version | yes | no
#### Option `highlight`
The `highlight` option allows enabling or disabling the inclusion of highlight.js, either globally or for a particular page. If the option is unset, it has the same effect as if you had specified `highlight = true`. That is, the highlight.js javascript and css files will be included in every page. If you'd like to only include highlight.js files on pages that actually require source code highlighting, you can set `highlight = false` in `config.toml`, and then override it by setting `highlight = true` in the preamble of any pages that require source code highlighting. Conversely, you could enable highlighting globally, and disable it locally for pages that do not require it. Here is a table that shows whether highlighting will be enabled for a page, based on the values of `highlight` set in `config.toml` and/or the page's preamble.
config.toml | page preamble | highlighting enabled for page?
--------------|----------------|-------------------------------
unset or true | unset or true | yes
unset or true | false | no
false | unset or false | no
false | true | yes
#### Option `highlight_languages`
The `highlight_languages` option allows you to specify additional languages that are supported by highlight.js, but are not considered "common" and therefore are not supported by default. For example, if you want source code highlighting for Go and clojure in all pages, set `highlight_languages = ["go", "clojure"]` in `config.toml`. If, on the other hand, you want to enable a language only for a specific page, you can set `highlight_languages` in that page's preamble.
The `highlight_languages` options specified in `config.toml` and in a page's preamble are additive. That is, if `config.toml` contains, `highlight_languages = ["go"]` and the page's preamble contains `highlight_languages = ["ocaml"]`, then javascript files for *both* go and ocaml will be included for that page.
If the `highlight_languages` option is set, then the corresponding javascript files will be served from the [cdnjs server](https://cdnjs.com/libraries/highlight.js/). To see a list of available languages, visit the [cdnjs page](https://cdnjs.com/libraries/highlight.js/) and search for links with the word "languages".
The `highlight_languages` option provides an easy and convenient way to include support for additional languages to be severed from a CDN. If serving unmodified files from cdnjs doesn't meet your needs, you can include javascript files for additional language support via one of the methods described in the [getting started guide]({{< ref "post/getting-started.md#third-party-and-local-scripts-js" >}}).
#### Option `highlight_style`
The `highlight_style` option allows you to select an alternate css style for highlighted code. For example, if you wanted to use the solarized-dark style, you could set `highlight_style = "solarized-dark"` in `config.toml`.
If the `highlight_style` option is unset, the default is to use the file `/css/highlight.min.css`, either the one provided by the Academic theme, or else the one in your local `static` directory. The `/css/highlight.min.css` file provided by Academic is equivalent to the `github` style from highlight.js.
If the `highlight_style` option *is* set, then `/css/highlight.min.css` is ignored, and the corresponding css file will be served from the [cdnjs server](https://cdnjs.com/libraries/highlight.js/). To see a list of available styles, visit the [cdnjs page](https://cdnjs.com/libraries/highlight.js/) and search for links with the word "styles".
See the [highlight.js demo page](https://highlightjs.org/static/demo/) for examples of available styles.
{{% alert note %}}
Not all styles listed on the [highlight.js demo page](https://highlightjs.org/static/demo/) are available from the [cdnjs server](https://cdnjs.com/libraries/highlight.js/). If you want to use a style that is not served by cdnjs, just leave `highlight_style` unset, and place the corresponding css file in `/static/css/highlight.min.css`.
{{% /alert %}}
{{% alert note %}}
If you don't want to change the default style that ships with Academic but you do want the style file served from the [cdnjs server](https://cdnjs.com/libraries/highlight.js/), set `highlight_style = "github"` in `config.toml`.
{{% /alert %}}
The `highlight_style` option is only recognized when set in `config.toml`. Setting `highlight_style` in your page's preamble has no effect.
#### Option `highlight_version`
The `highlight_version` option, as the name implies, allows you to select the version of highlight.js you want to use. The default value is "9.9.0". The `highlight_version` option is only recognized when set in `config.toml`. Setting `highlight_version` in your page's preamble has no effect.
## Twitter tweet
To include a single tweet, pass the tweets ID from the tweet's URL as parameter to the shortcode:
{{</* tweet 666616452582129664 */>}}
## Youtube
{{</* youtube w7Ft2ymGmfc */>}}
## Vimeo
{{</* vimeo 146022717 */>}}
## GitHub gist
{{</* gist USERNAME GIST-ID */>}}
## Speaker Deck
{{</* speakerdeck 4e8126e72d853c0060001f97 */>}}
## $\rm \LaTeX$ math
```TeX
$$\left [ \frac{\hbar^2}{2 m} \frac{\partial^2}{\partial x^2} + V \right ] \Psi = i \hbar \frac{\partial}{\partial t} \Psi$$
```
$$\left [ \frac{\hbar^2}{2 m} \frac{\partial^2}{\partial x^2} + V \right ] \Psi = i \hbar \frac{\partial}{\partial t} \Psi$$
Alternatively, inline math can be written by wrapping the formula with only a single `$`:
This is inline: $\mathbf{y} = \mathbf{X}\boldsymbol\beta + \boldsymbol\varepsilon$
This is inline: $\mathbf{y} = \mathbf{X}\boldsymbol\beta + \boldsymbol\varepsilon$
## Table
Code:
```Markdown
| Command | Description |
| ------------------| ------------------------------ |
| `hugo` | Build your website. |
| `hugo serve -w` | View your website. |
```
Result:
| Command | Description |
| ------------------| ------------------------------ |
| `hugo` | Build your website. |
| `hugo serve -w` | View your website. |
## Alerts
Alerts are a useful feature that add side content such as tips, notes, or warnings to your articles. They are especially handy when writing educational tutorial-style articles. Use the corresponding shortcodes to enable alerts inside your content:
{{%/* alert note */%}}
Here's a tip or note...
{{%/* /alert */%}}
This will display the following *note* block:
{{% alert note %}}
Here's a tip or note...
{{% /alert %}}
{{%/* alert warning */%}}
Here's some important information...
{{%/* /alert */%}}
This will display the following *warning* block:
{{% alert warning %}}
Here's some important information...
{{% /alert %}}

View file

@ -1,34 +1,32 @@
---
title: Example Project
summary: An example of using the in-built project page.
tags:
- Deep Learning
date: '2016-04-27T00:00:00Z'
+++
# Date this page was created.
date = "2016-04-27"
# Project title.
title = "Deep Learning"
# Project summary to display on homepage.
summary = "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
# Optional image to display on homepage (relative to `static/img/` folder).
image_preview = "bubbles.jpg"
# Tags: can be used for filtering projects.
# Example: `tags = ["machine-learning", "deep-learning"]`
tags = ["deep-learning"]
# Optional external URL for project (replaces project detail page).
external_link: ''
external_link = ""
image:
caption: Photo by rawpixel on Unsplash
focal_point: Smart
# Does the project detail page use math formatting?
math = false
links:
- icon: twitter
icon_pack: fab
name: Follow
url: https://twitter.com/georgecushen
url_code: ''
url_pdf: ''
url_slides: ''
url_video: ''
# Optional featured image (relative to `static/img/` folder).
[header]
image = "headers/bubbles-wide.jpg"
caption = "My caption :smile:"
# Slides (optional).
# Associate this project with Markdown slides.
# Simply enter your slide deck's filename without extension.
# E.g. `slides = "example-slides"` references `content/slides/example-slides.md`.
# Otherwise, set `slides = ""`.
slides: example
---
+++
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis posuere tellus ac convallis placerat. Proin tincidunt magna sed ex sollicitudin condimentum. Sed ac faucibus dolor, scelerisque sollicitudin nisi. Cras purus urna, suscipit quis sapien eu, pulvinar tempor diam. Quisque risus orci, mollis id ante sit amet, gravida egestas nisl. Sed ac tempus magna. Proin in dui enim. Donec condimentum, sem id dapibus fringilla, tellus enim condimentum arcu, nec volutpat est felis vel metus. Vestibulum sit amet erat at nulla eleifend gravida.

View file

@ -0,0 +1,25 @@
+++
# Date this page was created.
date = "2016-04-27"
# Project title.
title = "External Project"
# Project summary to display on homepage.
summary = "An example of linking directly to an external project website using `external_link`."
# Optional image to display on homepage (relative to `static/img/` folder).
image_preview = "boards.jpg"
# Tags: can be used for filtering projects.
# Example: `tags = ["machine-learning", "deep-learning"]`
tags = ["demo"]
# Optional external URL for project (replaces project detail page).
external_link = "http://example.org"
# Does the project detail page use math formatting?
math = false
+++

View file

@ -0,0 +1,12 @@
+++
title = "Publications"
date = "2017-01-01T00:00:00Z"
math = false
highlight = false
# Optional featured image (relative to `static/img/` folder).
[header]
image = ""
caption = ""
+++

View file

@ -0,0 +1,31 @@
+++
abstract = "We present a mobile visual clothing search system whereby a smart phone user can either choose a social networking photo or take a new photo of a person wearing clothing of interest and search for similar clothing in a retail database. From the query image, the person is detected, clothing is segmented, and clothing features are extracted and quantized. The information is sent from the phone client to a server, where the feature vector of the query image is used to retrieve similar clothing products from online databases. The phone's GPS location is used to re-rank results by retail store location. State of the art work focuses primarily on the recognition of a diverse range of clothing offline and pays little attention to practical applications. Evaluated on a challenging dataset, the system is relatively fast and achieves promising results."
abstract_short = "A mobile visual clothing search system is presented whereby a smart phone user can either choose a social networking image or capture a new photo of a person wearing clothing of interest and search for similar clothing in a large cloud-based ecommerce database. The phone's GPS location is used to re-rank results by retail store location, to inform the user of local stores where similar clothing items can be tried on."
authors = ["GA Cushen", "MS Nixon"]
date = "2013-07-01"
image_preview = ""
math = true
publication_types = ["1"]
publication = "In *International Conference on Multimedia and Expo Workshops (ICMEW)*, IEEE."
publication_short = "In *ICMEW*"
selected = true
title = "Mobile visual clothing search"
url_code = "#"
url_dataset = "#"
url_pdf = "http://eprints.soton.ac.uk/352095/1/Cushen-IMV2013.pdf"
url_project = "project/deep-learning/"
url_slides = "#"
url_video = "#"
[[url_custom]]
name = "Custom Link"
url = "http://www.example.org"
# Optional featured image (relative to `static/img/` folder).
[header]
image = "headers/bubbles-wide.jpg"
caption = "My caption :smile:"
+++
More detail can easily be written here using *Markdown* and $\rm \LaTeX$ math code.

View file

@ -0,0 +1,22 @@
+++
abstract = "Person re-identification is a critical security task for recognizing a person across spatially disjoint sensors. Previous work can be computationally intensive and is mainly based on low-level cues extracted from RGB data and implemented on a PC for a fixed sensor network (such as traditional CCTV). We present a practical and efficient framework for mobile devices (such as smart phones and robots) where high-level semantic soft biometrics are extracted from RGB and depth data. By combining these cues, our approach attempts to provide robustness to noise, illumination, and minor variations in clothing. This mobile approach may be particularly useful for the identification of persons in areas ill-served by fixed sensors or for tasks where the sensor position and direction need to dynamically adapt to a target. Results on the BIWI dataset are preliminary but encouraging. Further evaluation and demonstration of the system will be available on our website."
abstract_short = ""
authors = ["GA Cushen"]
date = "2015-09-01"
image_preview = ""
math = true
publication_types = ["2"]
publication = "In *Signal Image Technology & Internet Systems (SITIS)*, IEEE."
publication_short = ""
selected = false
title = "A Person Re-Identification System For Mobile Devices"
url_code = ""
url_dataset = ""
url_pdf = "http://arxiv.org/pdf/1512.04133v1"
url_project = "project/deep-learning/"
url_slides = ""
url_video = ""
+++
More detail can easily be written here using *Markdown* and $\rm \LaTeX$ math code.

View file

@ -0,0 +1,14 @@
+++
title = "Content tagged as 'Academic'"
date = "2017-01-01T00:00:00"
math = false
highlight = false
# Optional featured image (relative to `static/img/` folder).
[header]
image = "headers/bubbles-wide.jpg"
caption = ""
+++
Here is a list of all the content that has been tagged as *academic*.

View file

@ -0,0 +1,12 @@
+++
title = "Recent & Upcoming Talks"
date = "2017-01-01T00:00:00Z"
math = false
highlight = false
# Optional featured image (relative to `static/img/` folder).
[header]
image = ""
caption = ""
+++

View file

@ -0,0 +1,24 @@
+++
date = "2017-01-01T00:00:00"
title = "Example Talk"
abstract = ""
abstract_short = ""
event = "Hugo Academic Theme Conference"
event_url = "https://example.org"
location = "London, United Kingdom"
selected = false
math = true
url_pdf = ""
url_slides = ""
url_video = ""
# Optional featured image (relative to `static/img/` folder).
[header]
image = "headers/bubbles-wide.jpg"
caption = "My caption :smile:"
+++
Embed your slides or video here using [shortcodes](https://gcushen.github.io/hugo-academic-demo/post/writing-markdown-latex/). Further details can easily be added using *Markdown* and $\rm \LaTeX$ math code.

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

View file

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -1,8 +0,0 @@
{
"folders": [
{
"path": "."
}
],
"settings": {}
}

89
i18n/de.yaml Normal file
View file

@ -0,0 +1,89 @@
# Navigation
- id: toggle_navigation
translation: Zur Navigation
# Buttons
- id: btn_details
translation: Details
- id: btn_pdf
translation: PDF
- id: btn_slides
translation: Folien
- id: btn_video
translation: Video
- id: btn_code
translation: Code
- id: btn_dataset
translation: Datensatz
- id: btn_project
translation: Projekt
# About widget
- id: interests
translation: Interessen
- id: education
translation: Ausbildung
# Publications widget
- id: more_publications
translation: Weitere Publikationen
# Posts widget
- id: continue_reading
translation: WEITERLESEN
- id: more_posts
translation: Weitere Blogeinträge
# Talks widget
- id: more_talks
translation: Weitere Vorträge
# Publication/Talk details
- id: abstract
translation: Zusammenfassung
- id: publication
translation: Publikation
- id: publication_type
translation: Typ
- id: date
translation: Datum
- id: links
translation: Links
- id: event
translation: Veranstaltung
- id: location
translation: Ort
# Filtering
- id: filter_by_type
translation: Filter nach Typ
- id: filter_all
translation: Alle
# Project details
- id: open_project_site
translation: Zur Projektseite

100
i18n/en.yaml Normal file
View file

@ -0,0 +1,100 @@
# Navigation
- id: toggle_navigation
translation: Toggle navigation
# Buttons
- id: btn_details
translation: Details
- id: btn_pdf
translation: PDF
- id: btn_slides
translation: Slides
- id: btn_video
translation: Video
- id: btn_code
translation: Code
- id: btn_dataset
translation: Dataset
- id: btn_project
translation: Project
# About widget
- id: interests
translation: Interests
- id: education
translation: Education
# Publications widget
- id: more_publications
translation: More Publications
# Posts widget
- id: continue_reading
translation: CONTINUE READING
- id: more_posts
translation: More Posts
# Talks widget
- id: more_talks
translation: More Talks
# Publication/Talk details
- id: abstract
translation: Abstract
- id: publication
translation: Publication
- id: publication_type
translation: Type
- id: date
translation: Date
- id: links
translation: Links
- id: event
translation: Event
- id: location
translation: Location
# Filtering
- id: filter_by_type
translation: Filter by type
- id: filter_all
translation: All
# Project details
- id: open_project_site
translation: Go to Project Site
# Default node titles
- id: posts
translation: Posts
- id: publications
translation: Publications
- id: talks
translation: Talks

100
i18n/es.yaml Normal file
View file

@ -0,0 +1,100 @@
# Navigation
- id: toggle_navigation
translation: Barra de navegación
# Buttons
- id: btn_details
translation: Detalles
- id: btn_pdf
translation: PDF
- id: btn_slides
translation: Diapositivas
- id: btn_video
translation: Vídeo
- id: btn_code
translation: Código
- id: btn_dataset
translation: Datos
- id: btn_project
translation: Proyecto
# About widget
- id: interests
translation: Interés
- id: education
translation: Educación
# Publications widget
- id: more_publications
translation: Más Publicaciones
# Posts widget
- id: continue_reading
translation: CONTINÚA LEYENDO
- id: more_posts
translation: Más Posts
# Talks widget
- id: more_talks
translation: Más charlas
# Publication/Talk details
- id: abstract
translation: Resumen
- id: publication
translation: Publicación
- id: publication_type
translation: Tipo
- id: date
translation: Fecha
- id: links
translation: Links
- id: event
translation: Evento
- id: location
translation: Localización
# Filtering
- id: filter_by_type
translation: Filtro por tipo
- id: filter_all
translation: Todo
# Project details
- id: open_project_site
translation: Ir al sitio del proyecto
# Default node titles
- id: posts
translation: Posts
- id: publications
translation: Publicaciones
- id: talks
translation: Charlas

100
i18n/eu.yaml Normal file
View file

@ -0,0 +1,100 @@
# Navigation
- id: toggle_navigation
translation: Txandakatu nabigazioa
# Buttons
- id: btn_details
translation: Xehetasunak
- id: btn_pdf
translation: PDF
- id: btn_slides
translation: Diapositibak
- id: btn_video
translation: Bideoa
- id: btn_code
translation: Kodea
- id: btn_dataset
translation: Datu-sorta
- id: btn_project
translation: Proiektua
# About widget
- id: interests
translation: Interesak
- id: education
translation: Ikasketak
# Publications widget
- id: more_publications
translation: Argitalpen gehiago
# Posts widget
- id: continue_reading
translation: JARRAITU IRAKURTZEN
- id: more_posts
translation: Bidalketa gehiago
# Talks widget
- id: more_talks
translation: Hitzaldi gehiago
# Publication/Talk details
- id: abstract
translation: Laburpena
- id: publication
translation: Non argitaratua
- id: publication_type
translation: Mota
- id: date
translation: Data
- id: links
translation: Loturak
- id: event
translation: Ekitaldia
- id: location
translation: Kokalekua
# Filtering
- id: filter_by_type
translation: Iragazi motaren arabera
- id: filter_all
translation: Denak
# Project details
- id: open_project_site
translation: Joan proiektuaren webgunera
# Default node titles
- id: posts
translation: Bidalketak
- id: publications
translation: Argitalpenak
- id: talks
translation: Hitzaldiak

100
i18n/fr.yaml Normal file
View file

@ -0,0 +1,100 @@
# Navigation
- id: toggle_navigation
translation: Ouvrir la barre de navigation
# Buttons
- id: btn_details
translation: Renseignements
- id: btn_pdf
translation: PDF
- id: btn_slides
translation: Diapositives
- id: btn_video
translation: Vidéo
- id: btn_code
translation: Code
- id: btn_dataset
translation: Jeu de données
- id: btn_project
translation: Projet
# About widget
- id: interests
translation: Intérêts
- id: education
translation: Formation
# Publications widget
- id: more_publications
translation: Plus de publications
# Posts widget
- id: continue_reading
translation: CONTINUER DE LIRE
- id: more_posts
translation: Plus de posts
# Talks widget
- id: more_talks
translation: Plus de présentations
# Publication/Talk details
- id: abstract
translation: Résumé
- id: publication
translation: Publication
- id: publication_type
translation: Type
- id: date
translation: Date
- id: links
translation: Liens
- id: event
translation: Événement
- id: location
translation: Lieu
# Filtering
- id: filter_by_type
translation: Filtré par type
- id: filter_all
translation: Tout
# Project details
- id: open_project_site
translation: Aller sur le site du projet
# Default node titles
- id: posts
translation: Posts
- id: publications
translation: Publications
- id: talks
translation: Présentations

100
i18n/it.yaml Normal file
View file

@ -0,0 +1,100 @@
# Navigation
- id: toggle_navigation
translation: Attiva la navigazione
# Buttons
- id: btn_details
translation: Dettagli
- id: btn_pdf
translation: PDF
- id: btn_slides
translation: Slide
- id: btn_video
translation: Video
- id: btn_code
translation: Codice
- id: btn_dataset
translation: Dataset
- id: btn_project
translation: Progetti
# About widget
- id: interests
translation: Interessi
- id: education
translation: Formazione
# Publications widget
- id: more_publications
translation: Altre pubblicazioni
# Posts widget
- id: continue_reading
translation: LEGGI TUTTO
- id: more_posts
translation: Altri Post
# Talks widget
- id: more_talks
translation: Altre Conferenze
# Publication/Talk details
- id: abstract
translation: Abstract
- id: publication
translation: Publicazione
- id: publication_type
translation: Tipo
- id: date
translation: Data
- id: links
translation: Link
- id: event
translation: Evento
- id: location
translation: Luogo
# Filtering
- id: filter_by_type
translation: Filtra per tipo
- id: filter_all
translation: Tutto
# Project details
- id: open_project_site
translation: Apri il sito del Progetto
# Default node titles
- id: posts
translation: Post
- id: publications
translation: Pubblicazioni
- id: talks
translation: Conferenze

100
i18n/nl.yaml Normal file
View file

@ -0,0 +1,100 @@
# Navigation
- id: toggle_navigation
translation: Navigatiebalk
# Buttons
- id: btn_details
translation: Details
- id: btn_pdf
translation: PDF
- id: btn_slides
translation: Dia's
- id: btn_video
translation: Video
- id: btn_code
translation: Code
- id: btn_dataset
translation: Dataset
- id: btn_project
translation: Project
# About widget
- id: interests
translation: Interesses
- id: education
translation: Educatie
# Publications widget
- id: more_publications
translation: Meer Publicaties
# Posts widget
- id: continue_reading
translation: LEES VERDER
- id: more_posts
translation: Meer Berichten
# Talks widget
- id: more_talks
translation: Meer Presentaties
# Publication/Talk details
- id: abstract
translation: Korte inhoud
- id: publication
translation: Publicatie
- id: publication_type
translation: Type
- id: date
translation: Datum
- id: links
translation: Links
- id: event
translation: Evenement
- id: location
translation: Locatie
# Filtering
- id: filter_by_type
translation: Filter op type
- id: filter_all
translation: Alles
# Project details
- id: open_project_site
translation: Ga naar Projecten pagina
# Default node titles
- id: posts
translation: Berichten
- id: publications
translation: Publicaties
- id: talks
translation: Presentaties

100
i18n/pl.yaml Normal file
View file

@ -0,0 +1,100 @@
# Navigation
- id: toggle_navigation
translation: Toggle navigation
# Buttons
- id: btn_details
translation: Szczegóły
- id: btn_pdf
translation: PDF
- id: btn_slides
translation: Slajdy
- id: btn_video
translation: Video
- id: btn_code
translation: Kod
- id: btn_dataset
translation: Dane
- id: btn_project
translation: Projekt
# About widget
- id: interests
translation: Zainteresowania
- id: education
translation: Wykształcenie
# Publications widget
- id: more_publications
translation: Więcej publikacji
# Posts widget
- id: continue_reading
translation: CZYTAJ DALEJ
- id: more_posts
translation: Więcej postów
# Talks widget
- id: more_talks
translation: Więcej wystąpień
# Publication/Talk details
- id: abstract
translation: Streszczenie
- id: publication
translation: Publikacja
- id: publication_type
translation: Rodzaj
- id: date
translation: Data
- id: links
translation: Odnośniki
- id: event
translation: Wydarzenie
- id: location
translation: Miejsce
# Filtering
- id: filter_by_type
translation: Filtruje po typie
- id: filter_all
translation: Wszystko
# Project details
- id: open_project_site
translation: Idź do strony projektu
# Default node titles
- id: posts
translation: Posty
- id: publications
translation: Publikacje
- id: talks
translation: Wystąpienia

100
i18n/pt.yaml Normal file
View file

@ -0,0 +1,100 @@
# Navigation
- id: toggle_navigation
translation: Alterar navegação
# Buttons
- id: btn_details
translation: Detalhes
- id: btn_pdf
translation: PDF
- id: btn_slides
translation: Slides
- id: btn_video
translation: Vídeo
- id: btn_code
translation: Código
- id: btn_dataset
translation: Dados
- id: btn_project
translation: Projeto
# About widget
- id: interests
translation: Interesses
- id: education
translation: Formação
# Publications widget
- id: more_publications
translation: Mais Publicações
# Posts widget
- id: continue_reading
translation: CONTINUE LENDO
- id: more_posts
translation: Mais Posts
# Talks widget
- id: more_talks
translation: Mais Palestras
# Publication/Talk details
- id: abstract
translation: Resumo
- id: publication
translation: Publicação
- id: publication_type
translation: Tipo
- id: date
translation: Data
- id: links
translation: Links
- id: event
translation: Evento
- id: location
translation: Local
# Filtering
- id: filter_by_type
translation: Filtro por tipo
- id: filter_all
translation: Todos
# Project details
- id: open_project_site
translation: Ir para o site do projeto
# Default node titles
- id: posts
translation: Posts
- id: publications
translation: Publicações
- id: talks
translation: Palestras

100
i18n/ru.yaml Normal file
View file

@ -0,0 +1,100 @@
# Navigation
- id: toggle_navigation
translation: Переключить навигацию
# Buttons
- id: btn_details
translation: Подробнее
- id: btn_pdf
translation: PDF
- id: btn_slides
translation: Слайды
- id: btn_video
translation: Видео
- id: btn_code
translation: Код
- id: btn_dataset
translation: Набор данных
- id: btn_project
translation: Проект
# About widget
- id: interests
translation: Интересы
- id: education
translation: Образование
# Publications widget
- id: more_publications
translation: Больше публикаций
# Posts widget
- id: continue_reading
translation: Читать далее
- id: more_posts
translation: Больше статей
# Talks widget
- id: more_talks
translation: Больше выступлений
# Publication/Talk details
- id: abstract
translation: Аннотация
- id: publication
translation: Публикация
- id: publication_type
translation: Тип
- id: date
translation: Дата
- id: links
translation: Ссылки
- id: event
translation: Событие
- id: location
translation: Место
# Filtering
- id: filter_by_type
translation: Фильтровать по типу
- id: filter_all
translation: Все
# Project details
- id: open_project_site
translation: Перейти на сайт проекта
# Section titles
- id: posts
translation: Статьи
- id: publications
translation: Публикации
- id: talks
translation: Выступления

100
i18n/tr.yaml Normal file
View file

@ -0,0 +1,100 @@
# Navigation
- id: toggle_navigation
translation: Arayüz yönünü değiştir
# Buttons
- id: btn_details
translation: Daha fazla ayrıntı
- id: btn_pdf
translation: PDF
- id: btn_slides
translation: Slaytlar
- id: btn_video
translation: Video
- id: btn_code
translation: Kod
- id: btn_dataset
translation: Veri kümesi
- id: btn_project
translation: Proje
# About widget
- id: interests
translation: İlgi alanları
- id: education
translation: Eğitim
# Publications widget
- id: more_publications
translation: Daha fazla yayınlar
# Posts widget
- id: continue_reading
translation: OKUMAYA DEVAM ET
- id: more_posts
translation: Daha fazla blog içeriği
# Talks widget
- id: more_talks
translation: Daha fazla konuşma
# Publication/Talk details
- id: abstract
translation: Özet
- id: publication
translation: Yayın
- id: publication_type
translation: Yayın tipi
- id: date
translation: Tarih
- id: links
translation: Bağlantılar
- id: event
translation: Etkinlikler
- id: location
translation: Adres
# Filtering
- id: filter_by_type
translation: Yayın tipine göre sırala
- id: filter_all
translation: Hepsi
# Project details
- id: open_project_site
translation: Projenin sayfasına git
# Default node titles
- id: posts
translation: Blog içerikleri
- id: publications
translation: Yayınlar
- id: talks
translation: Konuşmalar

100
i18n/vi.yaml Normal file
View file

@ -0,0 +1,100 @@
# Navigation
- id: toggle_navigation
translation: Chuyển Điều Hướng
# Buttons
- id: btn_details
translation: Chi Tiết
- id: btn_pdf
translation: PDF
- id: btn_slides
translation: Slides
- id: btn_video
translation: Video
- id: btn_code
translation: Mã Nguồn
- id: btn_dataset
translation: Dữ liệu
- id: btn_project
translation: Dự Án
# About widget
- id: interests
translation: Sở Thích
- id: education
translation: Học Vấn
# Publications widget
- id: more_publications
translation: Các Công Trình
# Posts widget
- id: continue_reading
translation: ĐỌC TIẾP
- id: more_posts
translation: Các Bài Đăng
# Talks widget
- id: more_talks
translation: Các Thuyết Trình
# Publication/Talk details
- id: abstract
translation: Tóm tắt
- id: publication
translation: Công trình
- id: publication_type
translation: Phân loại
- id: date
translation: Ngày Tháng
- id: links
translation: Liên Kết
- id: event
translation: Sự Kiện
- id: location
translation: Địa Điểm
# Filtering
- id: filter_by_type
translation: Lọc theo loại
- id: filter_all
translation: Tất Cả
# Project details
- id: open_project_site
translation: Đến Trang Dự Án
# Default node titles
- id: posts
translation: Bài Đăng
- id: publications
translation: Công Trình
- id: talks
translation: Buổi Nói Chuyện

100
i18n/zh.yaml Normal file
View file

@ -0,0 +1,100 @@
# Navigation
- id: toggle_navigation
translation: 切换导航
# Buttons
- id: btn_details
translation: 详情
- id: btn_pdf
translation: PDF
- id: btn_slides
translation: 演示文稿
- id: btn_video
translation: 视频
- id: btn_code
translation: 代码
- id: btn_dataset
translation: 数据集
- id: btn_project
translation: 项目
# About widget
- id: interests
translation: 兴趣爱好
- id: education
translation: 教育经历
# Publications widget
- id: more_publications
translation: 更多出版物
# Posts widget
- id: continue_reading
translation: 继续阅读
- id: more_posts
translation: 更多文章
# Talks widget
- id: more_talks
translation: 更多演讲
# Publication/Talk details
- id: abstract
translation: 摘要
- id: publication
translation: 出版物
- id: publication_type
translation: 类型
- id: date
translation: 日期
- id: links
translation: 链接
- id: event
translation: 事件
- id: location
translation: 位置
# Filtering
- id: filter_by_type
translation: 按类型过滤
- id: filter_all
translation: 全部
# Project details
- id: open_project_site
translation: 访问项目网站
# Default node titles
- id: posts
translation: 文章
- id: publications
translation: 出版物
- id: talks
translation: 演讲

View file

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 102 KiB

BIN
images/tn.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

24
layouts/404.html Normal file
View file

@ -0,0 +1,24 @@
{{ partial "header.html" . }}
{{ partial "navbar.html" . }}
<div class="container">
<h1>Page not found</h1>
<p>Maybe you were looking for one of these?</p>
<h2>Recent Posts</h2>
{{ range last 20 (where .Data.Pages "Section" "=" "post") }}
<ul>
<li><a href="{{ .Permalink }}">{{ .Title }}</a></li>
</ul>
{{ end }}
<h2>Recent Publications</h2>
{{ range last 20 (where .Data.Pages "Section" "=" "publication") }}
<ul>
<li><a href="{{ .Permalink }}">{{ .Title }}</a></li>
</ul>
{{ end }}
</div>
{{ partial "footer_container.html" . }}
{{ partial "footer.html" . }}

View file

@ -0,0 +1,32 @@
{{ partial "header.html" . }}
{{ partial "navbar.html" . }}
{{ partial "header_image.html" . }}
<div class="universal-wrapper">
{{ with .Title }}<h1>{{ . }}</h1>{{ end }}
{{ with .Content }}
<div class="article-style" itemprop="articleBody">{{ . }}</div>
{{ end }}
{{ $paginator := .Paginate .Data.Pages }}
{{ range $paginator.Pages }}
<div>
<h2><a href="{{ .Permalink }}">{{ .Title }}</a></h2>
<div class="article-style">
{{ if .Params.summary }}
{{ printf "%s" .Params.summary | markdownify }}
{{ else if .Truncated }}
{{ printf "%s" .Summary | markdownify }}
{{ end }}
</div>
</div>
{{ end }}
{{ partial "pagination" . }}
</div>
{{ partial "footer_container.html" . }}
{{ partial "footer.html" . }}

View file

@ -0,0 +1,27 @@
{{ partial "header.html" . }}
{{ partial "navbar.html" . }}
<article class="article" itemscope itemtype="http://schema.org/Article">
{{ partial "header_image.html" . }}
<div class="article-container">
<h1 itemprop="name">{{ .Title }}</h1>
{{ partial "article_metadata" (dict "content" . "is_list" 0) }}
<div class="article-style" itemprop="articleBody">
{{ .Content }}
</div>
</div>
</article>
<div class="container">
{{ partial "section_pager.html" . }}
</div>
<div class="article-container">
{{ partial "comments.html" . }}
</div>
{{ partial "footer_container.html" . }}
{{ partial "footer.html" . }}

20
layouts/index.html Normal file
View file

@ -0,0 +1,20 @@
{{ partial "header.html" . }}
{{ partial "navbar.html" . }}
<!-- Flag for jQuery -->
<span id="homepage" style="display: none"></span>
<!-- Widgets -->
{{ range $index, $page := where .Data.Pages "Type" "home" }}
{{ $params := dict "root" $ "page" $page }}
{{ $widget := printf "widgets/%s.html" ( or $page.Params.widget "custom" ) }}
<section id="{{ $page.File.TranslationBaseName }}" class="home-section">
<div class="container">
{{ partial $widget $params }}
</div>
</section>
{{ end }}
<!-- Page Footer -->
{{ partial "footer_container.html" . }}
{{ partial "footer.html" . }}

View file

@ -0,0 +1,41 @@
{{ $is_list := .is_list }}
{{ $ := .content }}
<div class="article-metadata">
<span class="article-date">
<time datetime="{{ $.Date }}" itemprop="datePublished">
{{ $.Date.Format $.Site.Params.date_format }}
</time>
</span>
{{ if isset $.Params "categories" }}
{{ $categoriesLen := len $.Params.categories }}
{{ if gt $categoriesLen 0 }}
<span class="article-categories">
<i class="fa fa-folder"></i>
{{ range $k, $v := $.Params.categories }}
<a href="{{ "/categories/" | relLangURL }}{{ . | urlize | lower }}">{{ . }}</a
>{{ if lt $k (sub $categoriesLen 1) }}, {{ end }}
{{ end }}
</span>
{{ end }}
{{ end }}
{{ if isset $.Params "tags" }}
{{ $tagsLen := len $.Params.tags }}
{{ if gt $tagsLen 0 }}
<span class="article-tags">
<i class="fa fa-tags"></i>
{{ range $k, $v := $.Params.tags }}
<a href="{{ "/tags/" | relLangURL }}{{ . | urlize | lower }}">{{ . }}</a
>{{ if lt $k (sub $tagsLen 1) }}, {{ end }}
{{ end }}
</span>
{{ end }}
{{ end }}
{{ if ne $is_list 1 }}
{{ partial "share.html" $ }}
{{ end }}
</div>

View file

@ -0,0 +1,7 @@
{{ if and .Site.DisqusShortname (not (or .Site.Params.disable_comments .Params.disable_comments)) }}
<section id="comments">
<div id="disqus_thread">
{{ template "_internal/disqus.html" . }}
</div>
</section>
{{ end }}

View file

@ -0,0 +1,54 @@
{{ if not .Site.Params.disable_sri }}
{{ printf "<script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js\" integrity=\"%s\" crossorigin=\"anonymous\"></script>" .Site.Data.sri.js.jQuery | safeHTML }}
{{ printf "<script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery.imagesloaded/4.1.2/imagesloaded.pkgd.min.js\" integrity=\"%s\" crossorigin=\"anonymous\"></script>" .Site.Data.sri.js.imagesLoaded | safeHTML }}
{{ printf "<script src=\"https://cdnjs.cloudflare.com/ajax/libs/gsap/1.19.1/TweenMax.min.js\" integrity=\"%s\" crossorigin=\"anonymous\"></script>" .Site.Data.sri.js.tweenMax| safeHTML }}
{{ printf "<script src=\"https://cdnjs.cloudflare.com/ajax/libs/gsap/1.19.1/plugins/ScrollToPlugin.min.js\" integrity=\"%s\" crossorigin=\"anonymous\"></script>" .Site.Data.sri.js.scrollToPlugin| safeHTML }}
{{ printf "<script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js\" integrity=\"%s\" crossorigin=\"anonymous\"></script>" .Site.Data.sri.js.bootstrap | safeHTML }}
{{ printf "<script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery.isotope/3.0.4/isotope.pkgd.min.js\" integrity=\"%s\" crossorigin=\"anonymous\"></script>" .Site.Data.sri.js.isotope | safeHTML }}
{{ else }}
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery.imagesloaded/4.1.2/imagesloaded.pkgd.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/gsap/1.19.1/TweenMax.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/gsap/1.19.1/plugins/ScrollToPlugin.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery.isotope/3.0.4/isotope.pkgd.min.js"></script>
{{ end }}
<script src="{{ "/js/hugo-academic.js" | relURL }}"></script>
{{ range .Site.Params.custom_js }}
<script src="{{ "/js/" | relURL }}{{ . }}"></script>
{{ end }}
<!-- Code highlighting -->
{{ if $.Scratch.Get "highlight_enabled" }}
{{ $v := .Site.Params.highlight_version | default "9.9.0" }}
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/{{ $v }}/highlight.min.js"></script>
{{ range .Site.Params.highlight_languages }}
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/{{ $v }}/languages/{{ . }}.min.js"></script>
{{ end }}
{{ range .Params.highlight_languages }}
{{/* Do not double-include languages that are in both .Site.Params and .Params.
If Hugo ever grows a "union" function for set union, this range clause can be merged with the one above. */}}
{{ if not (in $.Site.Params.highlight_languages .) }}
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/{{ $v }}/languages/{{ . }}.min.js"></script>
{{ end }}
{{ end }}
<script>hljs.initHighlightingOnLoad();</script>
{{ end }}
<!-- LaTeX math rendering -->
{{ if or .Params.math .Site.Params.math }}
<script type="text/x-mathjax-config">
MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ['\\(','\\)']] } });
</script>
{{ if not .Site.Params.disable_sri }}
{{ printf "<script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS_CHTML\" integrity=\"%s\" crossorigin=\"anonymous\"></script>" .Site.Data.sri.js.mathJax | safeHTML }}
{{ else }}
<script async src="//cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS_CHTML"></script>
{{ end }}
{{ end }}
</body>
</html>

View file

@ -0,0 +1,20 @@
<footer class="site-footer">
<div class="container">
<p class="powered-by">
{{ with .Site.Copyright }}{{ . | markdownify}} &middot; {{ end }}
Powered by the <a href="https://github.com/gcushen/hugo-academic" target="_blank">Academic
theme</a> for <a href="http://gohugo.io" target="_blank">Hugo</a>.
<span class="pull-right" aria-hidden="true">
<a href="#" id="back_to_top">
<span class="button_icon">
<i class="fa fa-chevron-up fa-2x"></i>
</span>
</a>
</span>
</p>
</div>
</footer>

View file

@ -0,0 +1,75 @@
<!DOCTYPE html>
<html lang="{{ .Site.LanguageCode | default "en-us" }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="theme" content="hugo-academic">
{{ .Hugo.Generator }}
{{ with .Site.Params.name }}<meta name="author" content="{{ . }}">{{ end }}
{{ with .Site.Params.role }}<meta name="description" content="{{ . }}">{{ end }}
{{/* Default to enabling highlighting, but allow the user to override it in .Params or .Site.Params.
Use $.Scratch to store "highlight_enabled", so that we can read it again in footer.html. */}}
{{ $.Scratch.Set "highlight_enabled" true }}
{{ if isset .Params "highlight" }}
{{ $.Scratch.Set "highlight_enabled" .Params.highlight }}
{{ else if isset .Site.Params "highlight" }}
{{ $.Scratch.Set "highlight_enabled" .Site.Params.highlight }}
{{ end }}
{{ if $.Scratch.Get "highlight_enabled" }}
{{ $v := .Site.Params.highlight_version | default "9.9.0" }}
{{ with .Site.Params.highlight_style }}
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/{{ $v }}/styles/{{ . }}.min.css">
{{ else }}
<link rel="stylesheet" href="{{ "/css/highlight.min.css" | relURL }}">
{{ end }}
{{ end }}
{{ if not .Site.Params.disable_sri }}
{{ printf "<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css\" integrity=\"%s\" crossorigin=\"anonymous\">" .Site.Data.sri.css.bootstrap | safeHTML }}
{{ printf "<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/academicons/1.8.1/css/academicons.min.css\" integrity=\"%s\" crossorigin=\"anonymous\">" .Site.Data.sri.css.academicons | safeHTML }}
{{ printf "<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css\" integrity=\"%s\" crossorigin=\"anonymous\">" .Site.Data.sri.css.fontAwesome | safeHTML }}
{{ else }}
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/academicons/1.8.1/css/academicons.min.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
{{ end }}
{{/* We cannot use SRI with Google Fonts because the CSS is dynamically generated according to the user agent */}}
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Lato:400,700%7CMerriweather%7CRoboto+Mono">
<link rel="stylesheet" href="{{ "/css/hugo-academic.css" | relURL }}">
{{ range .Site.Params.custom_css }}
<link rel="stylesheet" href="{{ "/css/" | relURL }}{{ . }}">
{{ end }}
{{ if .Site.GoogleAnalytics }}
<script>
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
ga('create', '{{ .Site.GoogleAnalytics }}', 'auto');
ga('require', 'eventTracker');
ga('require', 'outboundLinkTracker');
ga('require', 'urlChangeTracker');
ga('send', 'pageview');
</script>
<script async src="//www.google-analytics.com/analytics.js"></script>
{{ if not .Site.Params.disable_sri }}
{{ printf "<script async src=\"https://cdnjs.cloudflare.com/ajax/libs/autotrack/2.4.1/autotrack.js\" integrity=\"%s\" crossorigin=\"anonymous\"></script>" .Site.Data.sri.js.autotrack | safeHTML }}
{{ else }}
<script async src="//cdnjs.cloudflare.com/ajax/libs/autotrack/2.4.1/autotrack.js"></script>
{{ end }}
{{ end }}
<link rel="alternate" href="{{ .RSSLink | default .Site.RSSLink }}" type="application/rss+xml" title="{{ .Site.Title }}">
<link rel="feed" href="{{ .RSSLink | default .Site.RSSLink }}" type="application/rss+xml" title="{{ .Site.Title }}">
<link rel="icon" type="image/png" href="{{ "/img/icon.png" | relURL }}">
<link rel="apple-touch-icon" type="image/png" href="{{ "/img/apple-touch-icon.png" | relURL }}">
<link rel="canonical" href="{{ .Permalink }}">
{{ partial "head_custom" . }}
<title>{{ if not .IsHome }}{{ .Title }} | {{ end }}{{ .Site.Title }}</title>
</head>
<body id="top" data-spy="scroll" data-target="#navbar-main" data-offset="71">

View file

@ -0,0 +1,6 @@
{{ if .Params.header.image }}
<div class="article-header">
<img src="{{ "/img/" | relURL }}{{ .Params.header.image }}" class="article-banner" itemprop="image">
{{ with .Params.header.caption }}<span class="article-header-caption">{{ . | markdownify | emojify }}</span>{{ end }}
</div>
{{end}}

View file

@ -0,0 +1,74 @@
<nav class="navbar navbar-default navbar-fixed-top" id="navbar-main">
<div class="container">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse"
data-target=".navbar-collapse" aria-expanded="false">
<span class="sr-only">{{ i18n "toggle_navigation" }}</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="{{ "/" | relLangURL }}">{{ .Site.Title }}</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse">
<!-- Left Nav Bar -->
<ul class="nav navbar-nav navbar-right">
{{ range .Site.Menus.main }}
{{ if .HasChildren }}
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-haspopup="true">
{{ .Name }}
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
{{ range .Children }}
<li class="nav-item">
<a href="{{ .URL | relLangURL }}"{{ if $.IsHome }} data-target="{{ .URL }}"{{ end }}>
{{ .Pre }}
<span>{{ .Name }}</span>
</a>
</li>
{{ end }}
</ul>
</li>
{{ else }}
<li class="nav-item">
<a href="{{ .URL | relLangURL }}"{{ if $.IsHome }} data-target="{{ .URL }}"{{ end }}>
{{ .Pre }}
<span>{{ .Name }}</span>
</a>
</li>
{{ end }}
{{ end }}
{{ if .IsTranslated }}
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-haspopup="true">
<i class="fa fa-globe" aria-hidden="true"></i>
<span>{{ index .Site.Data.i18n.languages .Lang }}</span>
</a>
<ul class="dropdown-menu">
{{ range .Translations }}
<li class="nav-item">
<a href="{{ .URL }}"{{ if $.IsHome }} data-target="{{ .URL }}"{{ end }}>
<span>{{ index .Site.Data.i18n.languages .Lang }}</span>
</a>
</li>
{{ end }}
</ul>
</li>
{{ end }}
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container -->
</nav>

View file

@ -0,0 +1,12 @@
{{ if or (.Paginator.HasPrev) (.Paginator.HasNext) }}
<nav>
<ul class="pager">
{{ if .Paginator.HasPrev }}
<li><a href="{{ .Paginator.Prev.URL | relLangURL }}">&laquo; Previous</a></li>
{{ end }}
{{ if .Paginator.HasNext }}
<li><a href="{{ .Paginator.Next.URL | relLangURL }}">Next &raquo;</a></li>
{{ end }}
</ul>
</nav>
{{ end }}

View file

@ -0,0 +1,29 @@
{{ $post := .post }}
{{ $page := .page }}
<div class="article-list-item" itemscope itemprop="blogPost">
{{ $preview := $post.Params.header.preview | default true }}
{{ if and $post.Params.header.image $preview }}
<a href="{{ $post.Permalink }}">
<img src="{{ "/img/" | relURL }}{{ $post.Params.header.image }}" class="article-banner" itemprop="image">
</a>
{{end}}
<h3 class="article-title" itemprop="name">
<a href="{{ $post.Permalink }}" itemprop="url">{{ $post.Title }}</a>
</h3>
{{ partial "article_metadata" (dict "content" $post "is_list" 1) }}
<div class="article-style" itemprop="articleBody">
{{ if $post.Params.summary }}
<p>{{ printf "%s" $post.Params.summary | markdownify }}</p>
{{ else if $post.Truncated }}
{{ $post.Summary }}
{{ else }}
{{ $post.Content }}
{{ end }}
</div>
<p class="read-more">
<a href="{{ $post.Permalink }}" class="btn btn-primary btn-outline">
{{ i18n "continue_reading" }}
</a>
</p>
</div>

View file

@ -0,0 +1,61 @@
<div class="pub-list-item" itemscope itemtype="http://schema.org/CreativeWork">
<div class="row">
{{ if .Params.image_preview }}
<div class="col-md-12">
<a href="{{ .Permalink }}">
<img src="{{ "/img/" | relURL }}{{ .Params.image_preview }}" class="pub-banner"
itemprop="image">
</a>
</div>
<div class="col-md-12">
{{ else if .Params.header.image}}
<div class="col-md-12">
<a href="{{ .Permalink }}">
<img src="{{ "/img/" | relURL }}{{ .Params.header.image }}" class="pub-banner" itemprop="image">
</a>
</div>
<div class="col-md-12">
{{ else }}
<div class="col-md-12">
{{ end }}
<h3 class="article-title" itemprop="name">
<a href="{{ .Permalink }}" itemprop="url">{{ .Title }}</a>
</h3>
<div class="pub-abstract" itemprop="text">
{{ if .Params.abstract_short }}
{{ .Params.abstract_short | markdownify }}
{{ else }}
{{ .Params.abstract | markdownify}}
{{ end }}
</div>
<div class="pub-authors" itemprop="author">
{{ with .Params.authors }}
{{ delimit . ", " | markdownify }}
{{ end }}
</div>
<div class="pub-publication">
{{ if .Params.publication_short }}
{{ .Params.publication_short | markdownify }}
{{ else }}
{{ .Params.publication | markdownify }}
{{ end }}
</div>
<div class="pub-links">
{{ partial "publication_links" (dict "content" . "is_list" 1) }}
</div>
</div>
</div>
</div>

View file

@ -0,0 +1,5 @@
<li itemscope itemtype="http://schema.org/CreativeWork">
<i class="fa-li fa fa-file-text-o pub-icon" aria-hidden="true"></i>
<span itemprop="name">{{ .Title }}</span>
<p>{{ partial "publication_links" (dict "content" . "is_list" 1) }}</p>
</li>

View file

@ -0,0 +1,43 @@
{{ $is_list := .is_list }}
{{ $ := .content }}
{{ if $is_list }}
<a class="btn btn-primary btn-outline btn-xs" href="{{ $.Permalink }}">
{{ i18n "btn_details" }}
</a>
{{ end }}
{{ with $.Params.url_pdf }}
<a class="btn btn-primary btn-outline{{ if $is_list }} btn-xs{{end}}" href="{{ . | absURL }}">
{{ i18n "btn_pdf" }}
</a>
{{ end }}
{{ with $.Params.url_slides }}
<a class="btn btn-primary btn-outline{{ if $is_list }} btn-xs{{end}}" href="{{ . | absURL }}">
{{ i18n "btn_slides" }}
</a>
{{ end }}
{{ with $.Params.url_video }}
<a class="btn btn-primary btn-outline{{ if $is_list }} btn-xs{{end}}" href="{{ . | absURL }}">
{{ i18n "btn_video" }}
</a>
{{ end }}
{{ with $.Params.url_code }}
<a class="btn btn-primary btn-outline{{ if $is_list }} btn-xs{{end}}" href="{{ . | absURL }}">
{{ i18n "btn_code" }}
</a>
{{ end }}
{{ with $.Params.url_dataset }}
<a class="btn btn-primary btn-outline{{ if $is_list }} btn-xs{{end}}" href="{{ . | absURL }}">
{{ i18n "btn_dataset" }}
</a>
{{ end }}
{{ with $.Params.url_project }}
<a class="btn btn-primary btn-outline{{ if $is_list }} btn-xs{{end}}" href="{{ . | absLangURL }}">
{{ i18n "btn_project" }}
</a>
{{ end }}
{{ range $.Params.url_custom }}
<a class="btn btn-primary btn-outline{{ if $is_list }} btn-xs{{end}}" href="{{ .url | absURL }}">
{{ .name }}
</a>
{{ end }}

Some files were not shown because too many files have changed in this diff Show more